3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【AWS】Nodeのバージョンを16から18にして、V2からV3へ全体的に対応させる

Last updated at Posted at 2023-02-08

背景

  • 急にCloudWatchのログにバージョン切り替えましょうね的なエラーロクが出るようになった。

Node.jsのバージョンを16から18へバージョンをあげると何が起こるのか

  • AWS SDK for JavaScript v2だったが18からはAWS SDK for JavaScript v3になる
    →これにより、全体的にAWSのサービスの実装の書き方が変わる

対応が必要なこと

  • ①サービスごとにモジュールをインストールする必要がある
  • ②AWS SDK for JavaScript v2の書き方から18からはAWS SDK for JavaScript v3の書き方に変更
  • ③AWS Lambdaの場合はランタイムバージョンを変更する

①サービスごとにモジュールをインストールする必要がある

このようにサービスごとにインストールを行う。
※以下はssmの例

npm install @aws-sdk/client-ssm

もし、sqsやdynamoがあるなら「npm install @aws-sdk/client-サービス名」でダウンロードを行う
※S3なら「client-s3」だしDynamoなら「dynamo-db」だったりするので公式リポジトリを見て確認する。

②AWS SDK for JavaScript v2の書き方から18からはAWS SDK for JavaScript v3の書き方に変更

v2とv3の書き方の比較

  • v2の書き方
anime-suko.ts
import * as AWS from 'aws-sdk'
const s3 = new AWS.S3()
  • v3の書き方
anime-suko.ts
import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3'
const s3 = new S3Client({})

v3の対応は慣れれば簡単

★どのawsサービスも、クライアントとコマンドを用意して、最後にsendするだけ。全て同じやり方でできる。
※DynamoでのPutItemのような登録処理では登録するデータには型まで指定しなくてはならなくなったりしているが、他のサービスのほとんどは今までと同じパラメータを渡してうまくいく。

①importの中には、クライアントと~Commandを指定
※今回はS3を例にしているがもしDynamoのBatchWriteを使う場合は「BatchWriteItemCommand」というものが用意されている(from後はdynamoのモジュールを指定)
②from後は、さっきのnpm install例であったモジュール名を指定

anime-suko.ts
import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3'

③ 各AWSサービスに必要ないつものパラメータを用意して、それを引数にクライアント.send()で実行。

anime-suko.ts
s3.send(new PutObjectCommand(data)

③AWS Lambdaの場合はランタイムバージョンを変更する

ラムダの設定画面で実行バージョンは変更可能。わいの場合はNode.jsを16から18にした。

image.png

必ずv3にしないと動かないわけではないが、将来的にはやるしかない

v2のやり方をそのまま使う方法もあるが、将来的には削除されるっぽい。
https://aws.amazon.com/jp/blogs/developer/modular-packages-in-aws-sdk-for-javascript/
image.png

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?