Meh*_*ran 6 amazon-web-services aws-step-functions
我正在尝试使用 AWS 的 Step Functions,我对它们实施长期运行的程序很感兴趣。我想为我的用户提供的一项功能是显示执行进度的可能性。使用describeExecution我可以验证某些执行是否仍在运行或已完成。但进度是一个合乎逻辑的衡量标准,Step Functions 本身无法告诉我这个过程还剩下多少。
为此,我需要自己提供逻辑。我可以测量状态机任务的进度,知道需要采取的总步数并计算已经采取的步数。我可以将此信息存储在机器运行时在步骤之间传递的机器状态中。但是如何使用 API 提取此状态?当然,我可以将这些信息存储在像 DynamoDb 这样的外部存储中,但这不是很优雅!
我自己找到的解决方案(到目前为止这是唯一的)是使用getExecutionHistory API。此 API 返回为 Step Functions 生成的事件列表,它可以包含input或output(或都不包含),具体取决于事件是用于启动 lambda 函数还是用于 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
});
Run Code Online (Sandbox Code Playgroud)
通过颠倒事件列表的顺序,我们可以首先获取最新的事件。然后我们可以在列表中查找最新的输出。您将找到的第一个输出是最新版本的输出,即 Step Functions 的当前状态。
| 归档时间: |
|
| 查看次数: |
3202 次 |
| 最近记录: |