gpt4 book ai didi

amazon-web-services - 如何为 AWS Step Functions 中的事件添加动态 TimeoutSeconds?

转载 作者:行者123 更新时间:2023-12-03 17:03:04 24 4
gpt4 key购买 nike

我在 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

但不幸的是,它没有奏效。

编辑 :
我想计算/定义时间 myTimeout在用 python 执行 step 函数之前。类似的东西:
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 分钟甚至更多。

所有的结果,我的微服务已经写入了一个数据库。
所以我创建了一个 lambda,它在循环中检查数据库。

退出条件是

  • 获取 DB 中的所有结果
  • 等待时间已结束,每次执行都会动态计算

  • 我与 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: ...

    Step function Visualization

    关于amazon-web-services - 如何为 AWS Step Functions 中的事件添加动态 TimeoutSeconds?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55580462/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com