【AWS/JavaScript】AWS SDK for JavaScriptをv2からv3にアップデート

もくじ

期日

プロジェクトにSDKをダウンロード→ビルドして使ってる分には大きな問題はないと思いますが、Nodejsを使ってたりするとそれに合わせてバージョンアップが必要になります。ご自身のプロジェクト構成を確認してください。

手順

1. package.json から aws-sdk を削除

package.json確認

おそらくプロジェクト直下にpackage.jsonがあるので中身を確認します。

{
~省略~
  "dependencies": {
    "aws-sdk": "^2.709.0",  // 数字は環境によって違う
  }
~省略~
}

aws-sdkがインストールされていますね。

node_modulesディレクトリ確認

プロジェクト直下にあるnode_modulesディレクトリを開いて、aws-sdkがあることを確認します。

yarn remove

yarnを使っているので今回はyarnでまずaws-sdkを削除します。

$ yarn install

全体

$ yarn remove aws-sdk
yarn remove v1.22.19
[1/2] 🗑  Removing module aws-sdk...
[2/2] 🔨  Regenerating lockfile and installing missing dependencies...
success Uninstalled packages.
✨  Done in 8.05s.

削除されるもの

  • package.jsonの中のaws-sdk
  • node_modules内のaws-sdkフォルダ こちらは削除されません

もし削除されていなかったら・・

もしまだ残っていたら、まずpackage.jsonからaws-sdk削除し、次にnode_modulesフォルダごとまるっと削除してください。削除できたら下記コマンドを実行します。

$ yarn install

上記実行すれば最新のpackage.jsonからパッケージをインストールし直してくれます。

全体

$ yarn install
yarn install v1.22.19
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 🔨  Building fresh packages...
✨  Done in 53.19s.

2. バージョン2 のコードを探す

VSCode等を使って"aws-sdk";でまず検索かけます。

するとバージョン2の書き方に倣ってimportしている箇所が出てくると思います。

import { DynamoDB } from "aws-sdk";

このような記述箇所をすべてv3対応の書き方に変更していきます。

3. パッケージ確認

DynamoDBの場合は以下のようにパッケージが変更になります。

  • v2
import { DynamoDB } from "aws-sdk";
  • v3
import { DynamoDB } from "@aws-sdk/client-dynamodb";

AWS SDK for JavaScriptは何ですか。 - AWS SDK for JavaScript

4. パッケージ追加

@aws-sdk/client-dynamodbが必要ということがわかったので追加します。コマンドはyarn addを使います。

$ yarn add @aws-sdk/client-dynamodb

AWS SDK for JavaScript v3

全体

$ yarn add @aws-sdk/client-dynamodb
yarn add v1.22.19
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 🔨  Building fresh packages...
success Saved lockfile.
success Saved 21 new dependencies.
info Direct dependencies
└─ @aws-sdk/client-dynamodb@3.511.0
info All dependencies
├─ @aws-crypto/crc32@3.0.0
├─ @aws-crypto/ie11-detection@3.0.0
├─ @aws-crypto/supports-web-crypto@3.0.0
├─ @aws-sdk/client-dynamodb@3.511.0
├─ @aws-sdk/client-sso-oidc@3.511.0
├─ @aws-sdk/client-sso@3.511.0
├─ @aws-sdk/credential-provider-http@3.511.0
├─ @aws-sdk/credential-provider-ini@3.511.0
├─ @aws-sdk/credential-provider-node@3.511.0
├─ @aws-sdk/endpoint-cache@3.495.0
├─ @aws-sdk/middleware-endpoint-discovery@3.511.0
├─ @aws-sdk/middleware-signing@3.511.0
├─ @aws-sdk/token-providers@3.511.0
├─ @aws-sdk/util-locate-window@3.495.0
├─ @smithy/eventstream-codec@2.1.1
├─ @smithy/querystring-parser@2.1.1
├─ @smithy/util-waiter@2.1.1
├─ fast-xml-parser@4.2.5
├─ mnemonist@0.38.3
├─ obliterator@1.6.1
└─ strnum@1.0.5
✨  Done in 91.03s.

5. 必要なパッケージだけ繰り返し

同じように2〜4を繰り返してバージョンアップしていきましょう。

DynamoDB以外にも例えばCloudWatch Logsならコマンドは以下の通りです。

$ yarn add @aws-sdk/client-cloudwatch-logs

AWS SDK for JavaScript v3

地道ですが一度やれば、仮にバージョン4が出るまでは作業不要になります。

完了!

参考

コードをSDK for JavaScriptV3 に移行します - AWS SDK for JavaScript