如何跟踪异步 AWS Lambda 调用的 progress/status?
How can I track the progress/status of an asynchronous AWS Lambda invocation?
我有一个 API 用于触发 AWS Lambda 作业。根据请求,API 使用 InvocationType='Event'
调用 AWS Lambda 作业。此后,我想定期轮询 AWS Lambda 作业是否已完成。
最适合我的架构的方法是将 Lambda 作业的标识符存储在数据库中,并定期检查作业是否完成以及它的输出是什么。但是,我找不到如何执行此操作。
如何定期轮询 AWS Lambda 作业的结果,并在完成后查看输出?
我研究过使用 InvocationType='RequestResponse'
,但这需要我存储未来,而我无法在数据库中存储。
没有 built-in 检查异步 Lambda 调用状态的方法。
异步 Lambda 调用,使用事件调用类型,意味着 即发即忘 工作。因此,没有 'progress' 或 'status' 可以获取或轮询。
由于您不想等待 Lambda 完成,同步 Lambda 调用不在考虑范围之内。在这种情况下,您需要编写自己的逻辑来跟踪状态。
您可以这样做的一种方法是将(工作)项目存储在 DynamoDB jobs
table 中,具有 2 个属性:
jobId
UUID(String
属性,设置为分区键)
completed
布尔标志(Boolean
属性)
工作流程如下:
- 在您的 API 中,创建并存储一个
completed
默认为 'false' 的新作业
- 将 newly-created
jobId
传递给在负载中调用的 Lambda
- Lambda 完成后,在
jobs
table 中查找与传入的 jobId
关联的作业,并将作业的 completed
属性设置为 true
然后您可以定期轮询 DynamoDB 中的作业结果 table。
或者查看使用 DynamoDB Streams 作为一种无需轮询即可知道作业何时在 near-real 时间内完成的方法。
至于查看 'output',AWS Lambda 仅 returns a success response without additional information。没有'output'。将您可能需要的任何输出存储在持久性存储中 - 也许每个作业都有一个额外的 output
属性作为 String
? - 稍后检索它。
我有一个 API 用于触发 AWS Lambda 作业。根据请求,API 使用 InvocationType='Event'
调用 AWS Lambda 作业。此后,我想定期轮询 AWS Lambda 作业是否已完成。
最适合我的架构的方法是将 Lambda 作业的标识符存储在数据库中,并定期检查作业是否完成以及它的输出是什么。但是,我找不到如何执行此操作。
如何定期轮询 AWS Lambda 作业的结果,并在完成后查看输出?
我研究过使用 InvocationType='RequestResponse'
,但这需要我存储未来,而我无法在数据库中存储。
没有 built-in 检查异步 Lambda 调用状态的方法。
异步 Lambda 调用,使用事件调用类型,意味着 即发即忘 工作。因此,没有 'progress' 或 'status' 可以获取或轮询。
由于您不想等待 Lambda 完成,同步 Lambda 调用不在考虑范围之内。在这种情况下,您需要编写自己的逻辑来跟踪状态。
您可以这样做的一种方法是将(工作)项目存储在 DynamoDB jobs
table 中,具有 2 个属性:
jobId
UUID(String
属性,设置为分区键)completed
布尔标志(Boolean
属性)
工作流程如下:
- 在您的 API 中,创建并存储一个
completed
默认为 'false' 的新作业
- 将 newly-created
jobId
传递给在负载中调用的 Lambda - Lambda 完成后,在
jobs
table 中查找与传入的jobId
关联的作业,并将作业的completed
属性设置为true
然后您可以定期轮询 DynamoDB 中的作业结果 table。
或者查看使用 DynamoDB Streams 作为一种无需轮询即可知道作业何时在 near-real 时间内完成的方法。
至于查看 'output',AWS Lambda 仅 returns a success response without additional information。没有'output'。将您可能需要的任何输出存储在持久性存储中 - 也许每个作业都有一个额外的 output
属性作为 String
? - 稍后检索它。