Amazon web services 执行步骤功能“;任务“;使用ECS远门
在Re:Invent 2018中,AWS似乎推出了带有Step功能的新集成,其中包括ECS Fargate支持 我一直在研究这个问题,我能够启动ECS任务并完成它的工作,但我无法将所需的输出发送回step函数。响应语法似乎也没有任何与特定状态的输出相对应的内容 ECS任务是否可以将输出发送回step功能?任何线索都会有帮助Amazon web services 执行步骤功能“;任务“;使用ECS远门,amazon-web-services,amazon-ecs,aws-step-functions,aws-fargate,Amazon Web Services,Amazon Ecs,Aws Step Functions,Aws Fargate,在Re:Invent 2018中,AWS似乎推出了带有Step功能的新集成,其中包括ECS Fargate支持 我一直在研究这个问题,我能够启动ECS任务并完成它的工作,但我无法将所需的输出发送回step函数。响应语法似乎也没有任何与特定状态的输出相对应的内容 ECS任务是否可以将输出发送回step功能?任何线索都会有帮助 注意:我知道活动,并让ECS轮询活动,完成后发送任务成功。但是,如果可行的话,我希望利用step函数调用ECS。我目前正在从事一个项目,该项目利用step函数顺序启动多个
注意:我知道活动,并让ECS轮询活动,完成后发送任务成功。但是,如果可行的话,我希望利用step函数调用ECS。我目前正在从事一个项目,该项目利用step函数顺序启动多个Fargate任务,我遇到了同样的问题。目前,除了标准ResponseSyntax之外,似乎没有其他方法可以返回任何内容,尽管希望AWS能在这方面有所扩展 我们解决这一限制的方法只是使用S3存储每个任务的输出,以便后续任务(或其他步骤)可以访问它。我们为每个步骤函数调用提供S3 bucket和S3 key前缀作为环境变量,并且由于容器重写作为ResponseSyntax的一部分返回,因此它们可以通过以下代码段传递到其他步骤
"Overrides": {
"ContainerOverrides": [
{
"Name": "<your container name>",
"Environment.$": "$.Overrides.ContainerOverrides[0].Environment"
}
]
}
“覆盖”:{
“集装箱越界”:[
{
“名称”:“,
“环境。$”:“$.Overrides.ContainerOverrides[0]。环境”
}
]
}
您可以使用“等待回调(.waitForTaskToken
)”集成模式回调ECS任务中的单步函数。使用.waitForTaskToken
而不是.sync
,执行将暂停并等待SendTaskSuccess或SendTaskFailure,这可以通过ECS任务和您想要的任何输出来完成。它类似于活动,但任务令牌被推送到下游服务,而不是轮询它
arn:aws:states:::ecs:runTask.sync
任务的输出是的结果
您是否能够在Fargate任务执行后立即从该点重新启动管道?我认为您必须永远保留S3输出。确保它们不会被覆盖,否则会失去再现性。我们目前还没有设置任何重启支持,我们的管道目前只有两个步骤。如果您需要能够从任何一点再次运行管道并再现结果,那么是的,您必须保持S3输出。根据您需要重新运行作业的频率,S3新的智能分层有助于降低在S3中长期保存文件的成本。