我正在尝试AWS的Step Functions,并且我对执行长期运行的过程感兴趣。我想向用户提供的一项功能是可以显示执行进度。使用describeExecution,我可以验证某些执行是否仍在运行或完成。但是进度是合乎逻辑的衡量标准,Step Functions本身无法告诉我还剩下多少过程。
为此,我需要自己提供逻辑。我可以知道所需采取的步骤总数并计算已经采取的步骤数,从而衡量状态机任务的进度。我可以将该信息存储在机器运行时在各个步骤之间传递的机器状态中。但是如何使用API提取此状态?当然,我可以将这些信息存储在DynamoDb之类的外部存储中,但这不是很优雅!
答案 0 :(得分:0)
我已经找到了自己的解决方案(到目前为止,这是唯一的),它使用的是getExecutionHistory API。此API返回了为“步骤函数”生成的事件的列表,根据事件是用于启动lambda函数还是用于启动函数,它可以包含input
或output
(或都不包含)。 Lambda函数退出的时间。您可以像这样调用API:
var params = {
executionArn: 'STRING_VALUE', /* required */
maxResults: 10,
reverseOrder: true
};
stepfunctions.getExecutionHistory(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
通过反转事件列表的顺序,我们可以首先获取最新的事件。然后,我们可以在列表中查找最新的输出。您将找到的第一个是输出的最新版本,它是步进功能的当前状态。