如何为 AWS V3 Dynamo 客户端设置超时

ORc*_*der 5 amazon-dynamodb aws-sdk-js

我已经开始在我的一些服务中使用新的 AWS 版本 3 sdk。不幸的是,并不总是清楚如何使用版本 2 sdk 中提供的模块化版本 3 代码中的某些功能。

要为非模块化 sdk 设置超时,您可以执行以下操作:

AWS.config.update({
     httpOptions: {
        connectTimeout: 10000,
        timeout: 10000
    }
 });
Run Code Online (Sandbox Code Playgroud)

但是,当我想使用版本 3 sdk 并使用 Dynamo 客户端时,我明确尝试不使用全局 AWS 对象。据我所知,DynamoDBClient 的配置输入不接受 httpOptions,这通常是设置超时的地方。

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
const REGION = process.env.AWS_REGION;
const v3DynamoClient: DynamoDBClient = new DynamoDBClient({ region: REGION });
Run Code Online (Sandbox Code Playgroud)

如何为 AWS V3 sdk 中的 DynamoDBClient 设置超时?

Mar*_*vin 7

这个关于升级的链接似乎有一个例子,在关于 的部分中httpOptions。那里的例子有一个明显的错字。直接查看新的AWS v3代码,很明显不需要指定代理(如果不通过代理则有默认值) - 所以这个例子就足够了。

// Use default Https agent, but override the socket timeout
const requestHandler = new NodeHttpHandler({
  connectionTimeout: 30000,
  socketTimeout: 30000,
});

const options = {
  region: AWS_REGION,
  maxAttempts: 2,
  requestHandler, // Use handler with alternate settings for timeouts
};
export const dynamodbClient = new DynamoDBClient(options);
Run Code Online (Sandbox Code Playgroud)


jar*_*mod 3

以下是设置 TLS v1.2 选项的示例,应该会有所帮助:

const https = require("https");
const {NodeHttpHandler} = require("@aws-sdk/node-http-handler");
const {DynamoDBClient} = require("@aws-sdk/client-dynamodb");
const client = new DynamoDBClient({
  region: "us-west-2",
  requestHandler: new NodeHttpHandler({
    httpsAgent: new https.Agent({secureProtocol: 'TLSv1_2_method'})
  })
});
Run Code Online (Sandbox Code Playgroud)

您应该能够在NodeHttpHandler的选项中设置connectionTimeout或。socketTimeout

另外,值得阅读SDK v3 开发人员指南