由于某种原因,我遇到以下错误:
服务员任务停止失败: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}
答案 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字符串,您应该会很好。