use*_*595 4 boto amazon-web-services boto3 aws-lambda
我有一个 API,用于触发 AWS Lambda 作业。根据请求,API 使用InvocationType='Event'. 此后,我想定期轮询 AWS Lambda 作业是否已完成。
最适合我的架构的方法是将 Lambda 作业的标识符存储在数据库中,并定期检查作业是否完成及其输出是什么。但是,我无法找到如何做到这一点。
如何定期轮询 AWS Lambda 作业的结果,并在完成后查看输出?
我已经研究过使用InvocationType='RequestResponse',但这需要我存储未来,这是我无法在数据库中做到的。
没有内置方法来检查异步 Lambda 调用的状态。
使用事件调用类型的异步 Lambda 调用意味着一次即发即忘的工作。因此,没有可供获取或投票的“进度”或“状态”。
由于您不想等待 Lambda 完成,因此无法进行同步 Lambda 调用。在这种情况下,您需要编写自己的逻辑来跟踪状态。
实现此目的的一种方法是将(作业)项目存储在jobs具有 2 个属性的 DynamoDB 表中:
jobIdUUID(String属性,设置为分区键)completed布尔标志(Boolean属性)那么工作流程如下:
completed在您的 API 中,创建并存储默认为“false”的新作业jobId给负载中调用的 LambdajobId当 Lambda 完成后,查找与表中传入的作业关联的作业jobs,并将completed作业的属性设置为true然后,您可以定期轮询 DynamoDB 表中的作业结果。
或者看看使用DynamoDB Streams作为一种无需轮询即可近实时了解作业何时完成的方法。
至于查看“输出”,AWS Lambda 仅返回成功响应,没有其他信息。没有“输出”。将您可能需要的任何输出存储在持久存储中 - 也许每个作业都有一个额外的output属性String?- 稍后取回它。
| 归档时间: |
|
| 查看次数: |
2621 次 |
| 最近记录: |