适用于 JavaScript 的 Amazon SDKV3 API 参考指南详细描述了 适用于 JavaScript 的 Amazon SDK 版本 3 (V3) 的所有 API 操作。
有关特定服务客户端的说明
Amazon 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 校验和计算,请在配置对象上将 md5 设置为 false。否则,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 允许提供自定义 QueueUrl 来覆盖 Amazon SQS 客户端的默认端点。
多区域消息
在 v3 中,您应为每个区域使用一个客户端。Amazon 区域应在客户端级别进行初始化,且不应在请求之间更改。
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", });