AWS Step Functions describe_execution

问题描述

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

现在我想获取执行输出,所以我正在使用 describe_execution。但问题是当它记录时,我无法获得输出,因为状态仍为 RUNNING。我怎样才能让这个 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))

解决方法

正如您发现的那样,StartExecution 是异步的,不会等待执行完成。

以下是一些需要考虑的选项: