AWS Waiter TasksStopped失败:taskId长度应为

时间:2019-01-27 04:54:23

标签: amazon-web-services amazon-ecs

由于某种原因,我遇到以下错误:

服务员任务停止失败:taskId长度应为[32,36]之一

我真的不知道taskId应该意味着什么,aws文档也无济于事。有人知道该管道脚本出了什么问题吗?

    - step:
    name: Run DB migrations
    script:
    - >
      export BackendTaskArn=$(aws cloudformation list-stack-resources \
                          --stack-name=${DEXB_PRODUCTION_STACK} \
                          --output=text \
                          --query="StackResourceSummaries[?LogicalResourceId=='BackendECSTask'].PhysicalResourceId")
    - >
      SequelizeTask=$(aws ecs run-task --cluster=${DEXB_PRODUCTION_ECS_CLUSTER} --task-definition=${BackendTaskArn} \
                        --overrides='{"containerOverrides":[{"name":"NodeBackend","command":["./node_modules/.bin/sequelize","db:migrate"]}]}' \
                        --launch-type=EC2 --output=text --query='tasks[0].taskArn')
    - aws ecs wait tasks-stopped --cluster=${DEXB_PRODUCTION_ECS_CLUSTER} --tasks ${SequelizeTask}

3 个答案:

答案 0 :(得分:1)

AWS为任务,容器实例和服务引入了a new ARN format。现在,此格式包含集群名称,这可能会破坏仅依靠任务资源ID的ARN依靠的脚本和应用程序。

# Previous format (taskId contains hyphens)
arn:aws:ecs:$region:$accountID:task/$taskId

# New format (taskI does not contain hyphens)
arn:aws:ecs:$region:$accountId:task/$clusterName/$taskId

直到2021年3月31日,可以使用https://console.aws.amazon.com/ecs/home?#/settings退出每个区域的更改。为了更改整个帐户的行为,您将需要使用Root IAM用户。

答案 1 :(得分:0)

原来,我有一个重复的任务在后台运行。我转到ECS群集页面并停止重复任务。但是,如果您使用cloudformation来设置任务和服务,则这样做可能很危险。如果您在同一条船上,请谨慎操作。

答案 2 :(得分:0)

我们对这个隐秘的错误消息感到有些困惑,这实际上意味着您要发送到cloudformation脚本的task_id无效。任务ID的长度必须为32或36个字符。 在我们的案例中,AWS发回taskArn键值的方式的未记录更改导致我们获取了不正确的值,并发送了不相关的字符串作为task_id。 AWS检测到此问题并炸毁。因此,请仔细检查task_id字符串,您应该会很好。