【问题标题】:AWS Step Functions describe_executionAWS Step Functions describe_execution
【发布时间】:2021-09-08 19:02:27
【问题描述】:

我正在通过使用 boto3.client('stepfunctions') 中的 start_execution 调用执行来运行状态机,该执行成功。

现在我想获取执行输出,所以我使用了 describe_execution。但问题是当它记录时,我无法获得输出,因为状态仍在运行。我怎样才能让这个 describe_execution 等到状态成功

SF_CLIENT = boto3.client('stepfunctions')
sf_output = SF_CLIENT.start_execution(
                stateMachineArn=os.environ['STATE_MACHINE_ARN'], input=input)
            sf_response = SF_CLIENT.describe_execution(
                executionArn=sf_output['executionArn'])
            status = sf_response['status']

            while status != 'SUCCEEDED':
                sf_response = SF_CLIENT.describe_execution(
                    executionArn=sf_output['executionArn'])
                LOGGER.info("%s: %s" % ("EXECUTION STILL RUNNING", sf_response))
                if status != 'SUCCEEDED':
                    continue
                elif status == 'SUCCEEDED':
                    break

            LOGGER.info("%s: %s" % ("STEP FUNCTION EXECUTION OUTPUT", sf_output))
            LOGGER.info("%s: %s" % ("STEP FUNCTION EXECUTION RESPONSE", sf_response))

【问题讨论】:

    标签: python-3.x amazon-web-services boto3 aws-step-functions


    【解决方案1】:

    你发现 StartExecution 是异步的,不会等待执行完成。

    以下是一些可供考虑的选项:

    【讨论】:

      【解决方案2】:

      您的初始代码几乎是正确的,但有一些错误。 这是一个有效的代码:

      sf_output = sf_client.start_execution(
          stateMachineArn=STATE_MACHINE_ARN,
          input= json.dumps(your_input)
      )
      
      while True:
          time.sleep(2) # don't need to check every nanosecond
      
          sf_response = sf_client.describe_execution(executionArn=sf_output['executionArn'])
          status = sf_response['status'] # BE SURE TO GET THE CURRENT STATE
      
          print("%s: %s" % ("> Status...", status))
      
          if status == 'RUNNING':
              continue
          elif status == 'FAILED':
              raise Exception("%s: %s" % ("! ERROR ! Execution FAILED: ", sf_response))
          else: # SUCCEEDED
              break
      

      当然,您可以更改 FAILED 状态的行为。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-05
        • 2020-01-29
        • 1970-01-01
        • 2022-12-21
        • 2019-04-24
        • 1970-01-01
        • 2021-11-14
        • 2021-11-16
        相关资源
        最近更新 更多