无法在 AWS lambda 中设置 retryDelayOptions

Not able to set retryDelayOptions in AWS lambda

我正在尝试设置 customBackOff 函数来跟踪我的 Kinesis lambda 函数。 下面是一段代码。

var AWS = require('aws-sdk');

AWS.config.update({
  retryDelayOptions: {
    customBackoff: function(retryCount) {
      console.info('Within Retry.. ' + retryCount);
      return 100;
    }
  }
});

根据 aws 文档,Lambda 服务支持 customBackoffFuction。

链接

AWS lambda class

AWS config class

在 aws-sdk 源代码中我没有看到 retryDealayOptions 属性。您能否建议我在 lambda 函数中设置重试策略时是否遗漏了任何内容。

AWS SDK 无法设置此项 属性。 以下代码 returns retryDelayOption 的未定义值,因为 Config.js

中缺少键
console.log(AWS.config.retryDelayOption);

我认为 retryDelayOption 是 Javascript SDK 的新功能,已在 aws-sdk@2.2.35(2016 年 2 月 11 日)中添加,但默认情况下尚未部署在 Lambda 中。通过快速检查实验,Lambda 有 aws-sdk@2.2.32(2016 年 1 月 22 日)。

在 Lambda 更新到 2.2.35 之前,您必须将更新的 SDK 与您的 Lambda 捆绑并上传才能正常工作,这可能需要一个月左右的时间。

  1. 你错过了s
    console.log(AWS.config.retryDelayOptions);

AWS lambda class 用于像在 AWS 控制台中一样管理您的 lambda。你也可以用它来 运行 像这样的 lambdas。但我认为这不是你想要做的。 可能您正在尝试在 Lambda 中向 DynamoDB 写入一些内容,而您的 customBackoff 没有触发。
来自 AWS config class
Note: This works with all services except DynamoDB.
出于某种原因,他们 hardcoded retry logic for DynamoDB

在这种情况下的一般建议是对 DynamoDB 构造函数使用 maxRetries

var dynamoDB = new AWS.DynamoDB({maxRetries: 8});

我发现 maxRetries: 8 最适合我的 lambda。为所有重试提供大约 7 sec。这完全符合我的 10 sec lambda 超时

aws.config.update({region:'eu-west-1',maxRetries:0,retryDelayOptions:{base:10000}});

参考:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html