如何在 AWS Step Functions 中为 activity 添加动态 TimeoutSeconds?
How to add dynamic TimeoutSeconds for activity in AWS Step Functions?
我有一个 activity 步进函数 TimeoutSeconds
,像这样:
ActivityWaiting:
Type: Task
ResultPath: $.output
Resource: arn:aws:states:#{AWS::Region}:#{AWS::AccountId}:activity:myActivity
TimeoutSeconds: 3600
我想控制 TimeoutSeconds
的值并用上一步的参数更改它。
我试过类似的东西:
ActivityWaiting:
Type: Task
ResultPath: $.output
Resource: arn:aws:states:#{AWS::Region}:#{AWS::AccountId}:activity:myActivity
TimeoutSeconds: $.myTimeout
但不幸的是,它没有用。
编辑:
我想 calculate/define 在使用 python 执行步进函数之前的时间 myTimeout
。类似的东西:
data['myTimeout'] = getTimeout() #dymanic time in the seconds(ex 15000)
response = step_functions.start_execution(stateMachineArn=state_machine, input=json.dumps(data))
因为找不到动态超时的解决方法。
我使用 AWS Choice state
做了一个解决方法
我需要等待微服务的答复,时间取决于我发送给它的对象的数量。
每个对象的处理平均花费 3 分钟,因此超时可能为 3 分钟或更长时间。
所有的结果,我的微服务已经写入了DB。
所以我创建了一个 lambda,它循环检查数据库。
退出条件为
- 获取数据库中的所有结果
- 等待时间结束,每次执行动态计算
我使用 Serverless 框架,这是我的最终解决方案:
VerifyLambda:
Type: Task
Resource: arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:verify-step
Next: IsFinished
IsFinished:
Type: Choice
Choices:
- Variable: $.isFinish
BooleanEquals: false
Next: Wait 3m
Default: NextLambdaStep
Wait 3m:
Type: Wait
Seconds: 180
Next: VerifyLambda
NextLambdaStep: ...
此功能现已可用。有一个 TimeoutSecondsPath
参数可以用来代替 TimeoutSeconds
。 TimeoutSecondsPath
接受参考路径(例如 "$.myTimeout"
)
我有一个 activity 步进函数 TimeoutSeconds
,像这样:
ActivityWaiting:
Type: Task
ResultPath: $.output
Resource: arn:aws:states:#{AWS::Region}:#{AWS::AccountId}:activity:myActivity
TimeoutSeconds: 3600
我想控制 TimeoutSeconds
的值并用上一步的参数更改它。
我试过类似的东西:
ActivityWaiting:
Type: Task
ResultPath: $.output
Resource: arn:aws:states:#{AWS::Region}:#{AWS::AccountId}:activity:myActivity
TimeoutSeconds: $.myTimeout
但不幸的是,它没有用。
编辑:
我想 calculate/define 在使用 python 执行步进函数之前的时间 myTimeout
。类似的东西:
data['myTimeout'] = getTimeout() #dymanic time in the seconds(ex 15000)
response = step_functions.start_execution(stateMachineArn=state_machine, input=json.dumps(data))
因为找不到动态超时的解决方法。
我使用 AWS Choice state
做了一个解决方法我需要等待微服务的答复,时间取决于我发送给它的对象的数量。 每个对象的处理平均花费 3 分钟,因此超时可能为 3 分钟或更长时间。
所有的结果,我的微服务已经写入了DB。 所以我创建了一个 lambda,它循环检查数据库。
退出条件为
- 获取数据库中的所有结果
- 等待时间结束,每次执行动态计算
我使用 Serverless 框架,这是我的最终解决方案:
VerifyLambda:
Type: Task
Resource: arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:verify-step
Next: IsFinished
IsFinished:
Type: Choice
Choices:
- Variable: $.isFinish
BooleanEquals: false
Next: Wait 3m
Default: NextLambdaStep
Wait 3m:
Type: Wait
Seconds: 180
Next: VerifyLambda
NextLambdaStep: ...
此功能现已可用。有一个 TimeoutSecondsPath
参数可以用来代替 TimeoutSeconds
。 TimeoutSecondsPath
接受参考路径(例如 "$.myTimeout"
)