在 AWS CDK 中设置状态机时,如何删除 Lambda 调用的默认重试策略?

Dar*_*ryl 2 amazon-web-services retrypolicy aws-step-functions aws-cdk

我正在使用 AWS CDK 创建状态机。而不是默认的重试策略,如下所示:

  "Retry": [
    {
      "ErrorEquals": [
        "Lambda.ServiceException",
        "Lambda.AWSLambdaException",
        "Lambda.SdkClientException"
      ],
      "IntervalSeconds": 2,
      "MaxAttempts": 6,
      "BackoffRate": 2
    }
  ]
Run Code Online (Sandbox Code Playgroud)

我只想制定一项如下所示的包罗万象的政策:

"Retry": [
    {
      "ErrorEquals": [
        "States.ALL"
      ],
      "IntervalSeconds": 10,
      "MaxAttempts": 3,
      "BackoffRate": 1.5
    }
  ]
Run Code Online (Sandbox Code Playgroud)

不幸的是,我找不到在部署堆栈时删除默认策略的方法。我的包罗万象只是添加到重试策略数组的末尾。

"Retry": [
    {
      "ErrorEquals": [
        "Lambda.ServiceException",
        "Lambda.AWSLambdaException",
        "Lambda.SdkClientException"
      ],
      "IntervalSeconds": 2,
      "MaxAttempts": 6,
      "BackoffRate": 2
    },
    {
      "ErrorEquals": [
        "States.ALL"
      ],
      "IntervalSeconds": 10,
      "MaxAttempts": 3,
      "BackoffRate": 1.5
    }
  ]
Run Code Online (Sandbox Code Playgroud)

有人知道如何摆脱默认政策吗?

Dar*_*ryl 5

我在文档中找到了答案, 当您创建名为 的 LambdaInvoke 任务时,您可以设置一个标志retryOnServiceExceptions。将其设置为 false 将删除默认重试策略。

var submitOrder = new sfnt.LambdaInvoke(this, "SubmitOrder", {
  lambdaFunction: submitOrderLambda,
  comment: "Call the orders api to submit the order update",
  retryOnServiceExceptions: false   
});
Run Code Online (Sandbox Code Playgroud)