Stepfunction timeout没有停止Fargate任务



我有一个步骤函数,它编排lambda和fargate任务的组合。此步骤函数的超时设置为24小时。但是,此超时不会传播到取消已经运行的fargate任务。

我以前看过这个,将成功和失败消息发送回阶跃函数,它工作得很好。我不知道如何解决超时问题。

当前配置如下:

{
"StartAt": "Fargate-task",
"States": {
"Fargate-task": {
"Next": "pass-state",
"Catch": [
{
"ErrorEquals": [
"States.ALL"
],
"Next": "fail-state"
}
],
"Type": "Task",
"TimeoutSeconds": 60,
"ResultPath": "$.extractor_output",
"Resource": "arn:aws:states:::ecs:runTask.waitForTaskToken"
},
"pass-state": {
"Type": "Pass",
"Next": "Lambda Worker"
},
"Lambda Worker": {
"Type": "Map",
"End": true,
"Iterator": {
"StartAt": "LambdaWorker",
"States": {
"LambdaWorker": {
"End": true,
"Retry": [
{
"ErrorEquals": [
"Lambda.ServiceException",
"Lambda.AWSLambdaException",
"Lambda.SdkClientException"
],
"IntervalSeconds": 2,
"MaxAttempts": 6,
"BackoffRate": 2
}
],
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "<LAMBDA>",
"Payload.$": "$"
}
}
}
},
"ItemsPath": "$.extractor_output",
"MaxConcurrency": 10
},
"fail-state": {
"Type": "Fail"
}
}
}

处理它的一种方法是捕获超时错误并发出命令来终止fargate任务:

就像这个来自docs https://docs.aws.amazon.com/step-functions/latest/dg/concepts-error-handling.html:

的例子
{
"Comment": "A Hello World example of the Amazon States Language using an AWS Lambda function",
"StartAt": "HelloWorld",
"States": {
"HelloWorld": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:sleep10",
"TimeoutSeconds": 2,
"Catch": [ {
"ErrorEquals": ["States.Timeout"],
"Next": "fallback"
} ],
"End": true
},
"fallback": {
"Type": "Pass",
"Result": "Hello, AWS Step Functions!",
"End": true
}
}
}

最新更新