AWS SDK V3 for JavaScript を学び始めた人に捧ぐ　"aws-sdk" 検索は罠です

# 背景
先月から Node, AWS, JavaScript/TypeScript を学び始めた初心者です。

初心者が理解するまで混乱していた内容についての共有です
AWS を以前からやられてる人であれば当たり前じゃんって話です

Amplify は・・違った・・

# 現在の AWS-SDK の最新は V3 

見分け方は多分こんな感じ。間違ってないといいですが
## import では "@aws-sdk/{service}" が V3
分かってるなら、ここだけですぐ見分けられると思います
- V2: `import {...} from 'aws-sdk'`
- V3: `import {...} from '@aws-sdk/client-dynamodb'`

「**例こそが人に伝える唯一の手段だ**」という有名？な言葉があります。

当然、概要把握をして、Sample Code を検索するかと思いますけど、
ここで、圧倒的に多い V2 のコードに引き摺られると、無駄な時間を消費してしまうので注意

## url に V2/V3を確認
- V2
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/74f94078-3a1f-f3b7-a8c1-3c80df29a131.png)
- V3
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/d32ba707-3e60-0cf6-727a-307160b74ccc.png)

当たり前だと思うかと思いますけど・・初心者だと以下のような状況に対応するのは難しいです。
特に、Node や JavaScript すら初心者だと拠り所がなくて迷子の気分でした。

実際に Google で検索した場合の例が以下です

1. "aws-sdk" lambda を検索して、日付も新しいのでを選択すると・・<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/7424eaec-75c3-10c6-f1b8-4d2c8ae9095e.png)

1. 公式のチュートリアル的な感じで、よし学ぶぞーって進めると混乱しかありません<br>ここで問題なのは、SDK は最新版＝V3を利用することになるのに、Sample Code は V2 のままで動かない<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/6cca2b64-5f82-7869-bec5-c1fd628ba807.png)

## V2 のコードは、やりたい事の参考に
認識さえしていれば、以下のような用途に利用できるとは思います。
- 対象サービスでどんなことが出来るか？
- Input/Output パラメータの例

# V3 での V2 対応用のレガシー機能に気を付ける
検索でなんとなくやり方を見つけて SDK を使おうとすると、後方互換性の為に残している機能（レガシー）を使ってしまうことがあるので、使う際には、ちゃんと公式ドキュメントを見るようにしましょう
## DynamoDB の UpdateCommand は、AttributeUpdates ではなく UpdateExpression で
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/4e9a3690-e316-15ff-2670-10334f7b8469.png)

https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html

UpdateExpression 使いましょうってなってたりします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/0809f8fa-90ea-ed84-1229-58e0dc4504d4.png)

- UpdateExpression

https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html

- AttributeUpdates

https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/LegacyConditionalParameters.AttributeUpdates.html

# Amplify の場合は、aws-amplify が最新 V5.x.x 系
てっきり、@ 付きが最新化と思ったらなんか違った・・

install 自体は 以下だけど

> npm install -g @aws-amplify/cli

> Amplify 5.x.x has breaking changes. Please see the breaking changes below:
If you are using default exports from any Amplify package, then you will need to migrate to using named exports. For example:

```diff
- import Amplify from 'aws-amplify';
+ import { Amplify } from 'aws-amplify'

- import Analytics from '@aws-amplify/analytics';
+ import { Analytics } from '@aws-amplify/analytics';
// or better
+ import { Analytics } from 'aws-amplify';

- import Storage from '@aws-amplify/storage';
+ import { Storage } from '@aws-amplify/storage';
// or better
+ import { Storage } from 'aws-amplify';
```

# AWS SDK For JavaScript Code Sample
VS Code で紹介されてる Sample

https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code


# あとがき
チュートリアルやサンプルが V2 であることがまだまだ多いので、V3 を見極めていけると学習時間短縮に繋がるのではないかな？と
その為には、V3 の公式ドキュメントにあるチュートリアル＆サンプルを利用するのが一番なんでしょうね。

とはいえ、他のサンプルも探したくなるので、検索をする際にはお気を付けくださいな

# Udemy お勧めの記事について
AWS の記事書いておきながら・・ですが、
MS の Power Platform が好きです :p

その中でも、Power BI は、ソフト系じゃない人にこそ是非使ってもらいたいなって思ってて、これ使えば Excel でせこせこ集計作業とかしてる無駄作業が一掃できるのにって思ってるからこそのお勧め講座です。
[Power BIの基本 -初学者～中級者に「準備・視覚化・共有」の3ステップで、データの見える化と分析の基本が身につく](https://www.udemy.com/course/ishiayaya/learn/lecture/29124752?start=15#overview)
※そんな人がこの記事見るとは思えませんが :laughing: