AWS SDK for JavaScript V3 API リファレンスガイドでは、 AWS SDK for JavaScript バージョン3 (V3) のすべての API オペレーションについて詳しく説明します。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
特定のサービスクライアントに関する注意事項
AWS Lambda
Lambda 呼び出しのレスポンスタイプは v2 と v3 で異なります。
// v2 import { Lambda } from "@aws-sdk/client-lambda"; import AWS from "aws-sdk"; const lambda = new AWS.Lambda({
REGION
}); const invoke = await lambda.invoke({ FunctionName: "echo", Payload: JSON.stringify({ message: "hello" }), }).promise(); // in v2, Lambda::invoke::Payload is automatically converted to string via a // specific code customization. const payloadIsString = typeof invoke.Payload === "string"; console.log("Invoke response payload type is string:", payloadIsString); const payloadObject = JSON.parse(invoke.Payload); console.log("Invoke response object", payloadObject);
// v3 const lambda = new Lambda({
REGION
}); const invoke = await lambda.invoke({ FunctionName: "echo", Payload: JSON.stringify({ message: "hello" }), }); // in v3, Lambda::invoke::Payload is not automatically converted to a string. // This is to reduce the number of customizations that create inconsistent behaviors. const payloadIsByteArray = invoke.Payload instanceof Uint8Array; console.log("Invoke response payload type is Uint8Array:", payloadIsByteArray); // To maintain the old functionality, only one additional method call is needed: // v3 adds a method to the Uint8Array called transformToString. const payloadObject = JSON.parse(invoke.Payload.transformToString()); console.log("Invoke response object", payloadObject);
Amazon SQS
MD5 チェックサム
メッセージ本文の MD5 チェックサムの計算をスキップするには、設定オブジェクトで を false md5
に設定します。それ以外の場合、SDK はデフォルトでメッセージ送信のチェックサムを計算し、取得したメッセージのチェックサムを検証します。
// Example: Skip MD5 checksum in Amazon SQS import { SQS } from "@aws-sdk/client-sqs"; new SQS({ md5: false // note: only available in v3.547.0 and higher });
これを入力パラメータとして持つ Amazon SQS オペレーションQueueUrl
でカスタムを使用する場合、v2 では、Amazon SQS クライアントのデフォルトエンドポイントを上書きQueueUrl
するカスタムを提供できました。
マルチリージョンメッセージ
v3 では、リージョンごとに 1 つのクライアントを使用する必要があります。 AWS リージョンはクライアントレベルで初期化され、リクエスト間で変更されることはありません。
import { SQS } from "@aws-sdk/client-sqs"; const sqsClients = { "us-east-1": new SQS({ region: "us-east-1" }), "us-west-2": new SQS({ region: "us-west-2" }), }; const queues = [ { region: "us-east-1", url: "https://sqs.us-east-1.amazonaws.com/{AWS_ACCOUNT}/MyQueue" }, { region: "us-west-2", url: "https://sqs.us-west-2.amazonaws.com/{AWS_ACCOUNT}/MyOtherQueue" }, ]; for (const { region, url } of queues) { const params = { MessageBody: "Hello", QueueUrl: url, }; await sqsClients[region].sendMessage(params); }
カスタムエンドポイント
v3 では、カスタムエンドポイント、つまりデフォルトのパブリック Amazon SQS エンドポイントとは異なるエンドポイントを使用する場合は、常に Amazon SQS クライアントと QueueUrl
フィールドでエンドポイントを設定する必要があります。
import { SQS } from "@aws-sdk/client-sqs"; const sqs = new SQS({ // client endpoint should be specified in v3 when not the default public SQS endpoint for your region. // This is required for versions <= v3.506.0 // This is optional but recommended for versions >= v3.507.0 (a warning will be emitted) endpoint: "https://my-custom-endpoint:8000/", }); await sqs.sendMessage({ QueueUrl: "https://my-custom-endpoint:8000/1234567/MyQueue", Message: "hello", });
カスタムエンドポイントを使用していない場合は、クライアントendpoint
で を設定する必要はありません。
import { SQS } from "@aws-sdk/client-sqs"; const sqs = new SQS({ region: "us-west-2", }); await sqs.sendMessage({ QueueUrl: "https://sqs.us-west-2.amazonaws.com/1234567/MyQueue", Message: "hello", });