【问题标题】:Passing in integer parameter to AWS StepFunction causes Invalid State Machine Definition将整数参数传递给 AWS StepFunction 导致无效的状态机定义
【发布时间】:2019-06-02 15:06:39
【问题描述】:

我正在使用无服务器框架堆栈定义一个等待类型的步进函数,该函数将变量作为其超时设置,如下所示:

WaitForReview:
  Type: Task
  TimeoutSeconds: $.submission.duration
  Resource: 'arn:aws:states:#{AWS::Region}:#{AWS::AccountId}:activity:${self:service}-${opt:stage}-activity_waitForReview'
  Next: HowToProceed
  ResultPath: '$.submission'
  Catch:
    - ErrorEquals:
        - States.Timeout
      ResultPath: '$.error'
      Next: CreditArtistAccount

这里重要的是$.submission.duration。它应该是一个整数,但是当我尝试部署我的堆栈时,我收到以下错误:

Invalid State Machine Definition: 'SCHEMA_VALIDATION_FAILED: Expected value of type Integer at /States/WaitForReview/TimeoutSeconds' (Service: AWSStepFunctions; Status Code: 400; Error Code: InvalidDefinition; Request ID: bb1a13c2-12cb-11e9-b1f0-4f37f70268ef)

有谁知道我如何从堆栈中获取一个变量并将其传递给 step 函数并在我这样做时让它成为一个整数?

【问题讨论】:

    标签: amazon-web-services aws-lambda serverless-framework aws-step-functions aws-serverless


    【解决方案1】:

    State Task 字段 TimeoutSeconds 必须是 documentation 中定义的正非零整数。您不能使用状态路径来定义 TimeoutSeconds。如果设置,一般很可能与资源函数超时相同。

    【讨论】:

    • 我知道它必须是一个整数,但该值 $.submission.duration 是一个整数,因此我不明白这个错误。我实际上正在寻找一种方法将该值正确输出为整数。
    • $.submission.duration 可能是一个整数,但 TimeoutSeconds 不能使用状态路径定义。我也需要它,但不幸的是,到目前为止,步骤函数不支持 TimeoutSeconds 字段的状态路径。
    • 所以没有办法处理这个当前的用例?
    • 没有。您需要指定活动工作者或 lambda 允许返回响应的最长时间。它不能是动态的。
    • 你能详细说明一下 lambda 以返回响应吗?感谢您的帮助。
    猜你喜欢
    • 2021-08-09
    • 2019-11-27
    • 2018-02-20
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 2019-08-18
    • 2019-12-20
    • 2023-02-03
    相关资源
    最近更新 更多