如何处理 Step Functions ECS 任务错误代码 taskfailedtostart 中的错误

问题描述 投票:0回答:1

我有一个步骤函数,其中有一个要运行的 ecs 任务。

我的所有步骤函数状态均由 catch 选项监控并处理错误。

但是当一个 ecs 容器没有 IP 地址来运行容器时,就会出现此错误

taskfailedtostart
错误。我解决了 IP 问题..但我无法使用步骤函数 catch 块处理这个
taskfailedtostart
错误..

有任何处理错误的建议吗?

aws-lambda amazon-ecs aws-step-functions
1个回答
0
投票

StringToJson
状态下使用
Pass
,可以根据任务失败类型切换重试或捕获逻辑

请参阅下面的示例,其中它根据 StoppedReason 重试任务

{
  "Version": "1.0",
  "Comment": "Run AWS Fargate task",
  "TimeoutSeconds": 900,
  "StartAt": "Run Fargate Task",
  "States": {
    "Run Fargate Task": {
      "Type": "Task",
      "Resource": "arn:aws:states:::ecs:runTask.sync",
      "Parameters": {
        "LaunchType": "FARGATE",
        "Cluster": "<Cluster-ARN>",
        "TaskDefinition": "<TaskDef-ARN>",
        "Group.$": "$$.Execution.Name",
        "NetworkConfiguration": {
          "AwsvpcConfiguration": {
            "Subnets": [
              "<Subnet-1>",
              "<Subnet-2>",
              "<Subnet-3>"
            ],
            "AssignPublicIp": "ENABLED",
            "SecurityGroups": [
              "<SecurityGroup-ID>"
            ]
          }
        },
        "Overrides": {
          "ContainerOverrides": [
            {
              "Name": "<Container-Name>",
              "Environment": [
                {
                  "Name": "<Environment-Variable-Name-To-Override>",
                  "Value": "<Environment-Variable-Value-To-Override>"
                }
              ]
            }
          ]
        }
      },
      "End": true,
      "Catch": [
        {
          "ErrorEquals": [
            "States.TaskFailed"
          ],
          "Next": "Cause to Json"
        }
      ]
    },
    "Cause to Json": {
      "Type": "Pass",
      "Parameters": {
        "Cause.$": "States.StringToJson($.Cause)"
      },
      "Next": "Retry or Finish"
    },
    "Retry or Finish": {
      "Type": "Choice",
      "Choices": [
        {
          "Variable": "$.Cause.StoppedReason",
          "StringMatches": "ResourceInitializationError: *",
          "Next": "Run Fargate Task"
        }
      ],
      "Default": "Fail"
    },
    "Fail": {
      "Type": "Fail"
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.