【发布时间】:2020-12-28 02:15:14
【问题描述】:
我在AWS Step Functions 中定义了一个管道。一个步骤定义为Fargate Task,它会拉取一个 docker 映像并运行一些 python 代码。我惊讶地发现,如果在 Fargate 任务中运行的容器遇到运行时错误,Step Functions 不会捕获失败的任务并正常继续管道(将 Fargate 任务设置为成功),但根据the documentation一旦发生这种情况,管道应该会失败。
这是阶跃函数定义:
{
"Comment": "My state machine",
"StartAt": "MyFargateTask",
"States": {
"MyFargateTask": {
"Type": "Task",
"Resource": "arn:aws:states:::ecs:runTask.sync",
"InputPath": "$",
"Parameters": {
"Cluster": "my-cluster",
"TaskDefinition": "arn:aws:ecs:us-east-1:617090640476:task-definition/my-task:1",
"LaunchType": "FARGATE",
"NetworkConfiguration": {
"AwsvpcConfiguration": {
"Subnets": [
"subnet-xxxxxxxxxxxxxxxxx",
"subnet-yyyyyyyyyyyyyyyyy"
],
"AssignPublicIp": "ENABLED"
}
},
},
"Next": "Done"
},
"Done": {
"Type": "Succeed"
}
}
}
我已经为 Fargate 容器尝试了以下简单的 Python 代码:
def main():
raise Exception("foobar")
if __name__ == '__main__':
main()
在 CloudWatch 上的容器日志中,我可以看到程序按预期失败,但 Step Function 中的管道成功(全为绿色)。 我错过了什么?这是一个错误吗?
【问题讨论】:
-
容器的命令是什么?你是显式调用那个 python 文件,还是有一个包装脚本?
-
CMD python index.py
标签: amazon-web-services debugging aws-fargate aws-step-functions