使用 AWS Lambda 定期监控远程资源的状态
Using AWS Lambda to periodically monitor state of a remote resource
我需要在 AWS 的后端实现以下功能:
- API 允许用户在远程系统中启动特定长 运行 "process" 的端点
- 应定期(每隔几秒)监视此远程系统中的进程状态以了解状态,当状态 == 完成时,触发一个操作(远程系统不支持 sending/triggering 通知或回调)
我们主要使用 lambda 函数,所以我正在考虑通过以下方式处理它:
- 由用户触发的我的端点将调用远程系统来启动流程,将记录存储在内部数据库中并向 SQS 生成消息(传递延迟为 X 秒)
- 将有第二个 lambda 将从 SQS 读取消息并检查此远程系统中进程的状态。当 status == complete 时,触发一个动作,当 status != complete 时,向 SQS 生成另一条消息,相同的 lambda 将在 X 秒延迟后再次拾取并重复检查等
我想知道是否有更好的 solution/tools 来在 AWS 中实现这种 monitoring/notification 模式,因为我对 AWS 提供的所有服务不是很熟悉。
有人会对这种方法发表评论吗?如果有的话,也许可以提出替代方案?
看看 AWS Step Functions 我认为最适合您的用例。
您需要做的就是在 StepFunctions 中启动 StateMachine 的执行,而不是生成 SQS 消息。
以下教程介绍了带有计数器的迭代器循环。但是您可以使用相同的逻辑来检查状态并继续循环直到状态==完成
https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-create-iterate-pattern-section.html
我认为与您的用例非常接近的另一个有用资源
https://docs.aws.amazon.com/step-functions/latest/dg/sample-project-job-poller.html
我需要在 AWS 的后端实现以下功能: - API 允许用户在远程系统中启动特定长 运行 "process" 的端点 - 应定期(每隔几秒)监视此远程系统中的进程状态以了解状态,当状态 == 完成时,触发一个操作(远程系统不支持 sending/triggering 通知或回调)
我们主要使用 lambda 函数,所以我正在考虑通过以下方式处理它: - 由用户触发的我的端点将调用远程系统来启动流程,将记录存储在内部数据库中并向 SQS 生成消息(传递延迟为 X 秒) - 将有第二个 lambda 将从 SQS 读取消息并检查此远程系统中进程的状态。当 status == complete 时,触发一个动作,当 status != complete 时,向 SQS 生成另一条消息,相同的 lambda 将在 X 秒延迟后再次拾取并重复检查等
我想知道是否有更好的 solution/tools 来在 AWS 中实现这种 monitoring/notification 模式,因为我对 AWS 提供的所有服务不是很熟悉。
有人会对这种方法发表评论吗?如果有的话,也许可以提出替代方案?
看看 AWS Step Functions 我认为最适合您的用例。
您需要做的就是在 StepFunctions 中启动 StateMachine 的执行,而不是生成 SQS 消息。
以下教程介绍了带有计数器的迭代器循环。但是您可以使用相同的逻辑来检查状态并继续循环直到状态==完成
https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-create-iterate-pattern-section.html
我认为与您的用例非常接近的另一个有用资源 https://docs.aws.amazon.com/step-functions/latest/dg/sample-project-job-poller.html