paint-brush
AWS SDK v2 から v3 (JavaScript) への移行に関する还要注意事項 - 役立つクイックガイド に@lregalado
7,474 測定値
7,474 測定値

AWS SDK v2 から v3 (JavaScript) への移行に関する注意事項 - 役立つクイックガイド

Lorenzo Regalado3m2023/07/22
Read on Terminal Reader

長すぎる; 読むには

AWS SDK for JavaScript (v2) は、2023 年にメンテナンス モードになります。ルールを AWS SDK (v3) に移行する時間を節約するためのヒントをいくつか紹介します。
featured image - AWS SDK v2 から v3 (JavaScript) への移行に関する注意事項 - 役立つクイックガイド
Lorenzo Regalado HackerNoon profile picture
0-item
AWS SDK for JavaScript (v2) は在今年 (2023 年) メンテナンスモードになります。 v3 はしばらく前から采取已经であり、Node18 の新しいラムダ ランタイムに含まれているバージョンであり、現在の LTS ノード バージョンでもあります。


したがって、ラムダを Node18 Lambda ランタイムに刷新したい場合は、SDK v2 を現在のラムダ関数に追加するか、Node16 のままにする必不可少があります (をロールすることもできますが、それは別のトピックです)。


新しい SDK バージョンの利点は、相应なものを含むモジュール性の乐观、新しいラムダ イメージに就直接同梱されるパッケージ サイズの縮小、Typescript のサポート、三部の SDK 動作 (私はまだ用到していません) をカスタマイズするためのカスタム ミドルウェア スタックです。


移行はそれほど難しくありません。このに従ってください。ただし、最早は明らかではなかった詳細がいくつか出てきました。これにより、グーグル検索やプロンプトの時間を節約できます。

ラムダ

v2:
 const AWS = require('aws-sdk'); const lambda = new AWS.Lambda(options); const result = await lambda.invoke(invokeParams).promise(); const resultPayload = JSON.parse(result.Payload)


v3:
 const { LambdaClient, InvokeCommand } = require('@aws-sdk/client-lambda'); const { toUtf8 } = require('@aws-sdk/util-utf8-node'); const command = new InvokeCommand(invokeParams); const result = await lambda.send(command); const resultPayload = JSON.parse(toUtf8(result.Payload));// Now the result payload is a Uint8 array that needs to be decoded


執筆時点では、 @aws-sdk/util-utf8-nodeパッケージは@aws-sdk/util-utf8を優先してとしてマークされています。ただし、lambda ランタイムには、nodejs18.x がまだ含まれていないため、使用したい場合は、プロジェクトの運用依存関係に追加する必要があります。

DynamoDB

v2:
 const AWS = require('aws-sdk'); dynamoDbClient = new AWS.DynamoDB.DocumentClient(options); await dynamoDbClient.put(params).promise(); await dynamoDbClient.get(params).promise(); await dynamoDbClient.update(params).promise(); await dynamoDbClient.update(params).promise(); await dynamoDb.delete(params).promise(); await dynamoDb.scan(params).promise(); await dynamoDb.query(params).promise();


v3:
 const { DynamoDBClient } = require('@aws-sdk/client-dynamodb'); const { DynamoDBDocument, GetCommand, PutCommand, DeleteCommand, QueryCommand, UpdateCommand, ScanCommand, } = require('@aws-sdk/lib-dynamodb'); const dynamoDbClient = new DynamoDBClient(options); const docClient = DynamoDBDocument.from(dynamoDbClient); await docClient.send(new PutCommand(params)); await docClient.send(new GetCommand(params)); await docClient.send(new UpdateCommand(params)); await docClient.send(new UpdateCommand(params)); await docClient.send(new DeleteCommand(params)); await docClient.send(new ScanCommand(params)); await docClient.send(new QueryCommand(params));


DynamoDB テーブルからのいくつかのストリームを処理し、アンマーシャル関数を使用していた場合、v2:

 const AWS = require('aws-sdk'); const {unmarshall} = AWS.DynamoDB.Converter;


v3:
 const { unmarshall } = require('@aws-sdk/util-dynamodb');

S3

v2:
 const AWS = require('aws-sdk'); const s3Client = new AWS.S3(options); s3Client.upload(params, callBack);


v3:
 const { S3Client } = require('@aws-sdk/client-s3'); const { Upload } = require('@aws-sdk/lib-storage'); const s3Client = new S3Client(options); const parallelUploads3 = new Upload({ client: s3Client, params }); const result = await parallelUploads3.done();

SNS

v2:
 const AWS = require('aws-sdk'); const snsClient = new AWS.SNS(options); await snsClient.publish(data).promise();


v3:
 const { SNSClient, PublishCommand } = require('@aws-sdk/client-sns'); const snsClient = new SNSClient(options); await snsClient.send(new PublishCommand(data));


바카라사이트 바카라사이트 온라인바카라