【问题标题】:How to get AWS Lambda to trigger when an EBS snapshot completes如何在 EBS 快照完成时触发 AWS Lambda
【发布时间】:2017-03-14 05:31:57
【问题描述】:

我正在创建一堆 EBS 快照作为 AWS Lambda 的一部分。我需要在这些快照完成时捕获事件,以便我可以基于这些创建一个 ec2 实例。

我可以使用snapshot waiter,但此轮询和有时创建快照可能需要很长时间。我不希望 Lambda 继续运行一段时间,加上 Lambda 的最长时间似乎是五分钟。我查看了 CloudWatch 和 AWS Config,看看我是否可以捕获快照事件,但没有运气。

【问题讨论】:

    标签: amazon-web-services amazon-ec2 aws-lambda aws-sdk amazon-cloudwatch


    【解决方案1】:

    您是正确的 - 没有通知事件表示 EBS 快照已完成。相反,您需要检查状态,直到状态更改为 completed

    您也正确的是,AWS Lambda 函数可以运行最多 5 分钟,让 Lambda 函数等待外部进程并不是一个好的架构。

    相反,您可以分解架构

    • 让现有流程触发 EBS 快照,然后将消息推送到 SQS 队列
    • 安排一个 Lambda 函数(例如每 5 分钟)检查 SQS 队列。如果存在消息:
      • 从消息中检索有关实例和快照的详细信息
      • 检查快照的状态
      • 如果状态为completed,则执行流程中的下一步

    不利的一面是,即使队列中没有消息,计划的 Lambda 函数也会触发。 Lambda 函数将很快退出(花费:100 毫秒)。

    另一种方法是在 Amazon EC2 实例(或任何连接到 Internet 的计算机上)上运行cron 脚本。一个t2.nano 实例每天大约需要 15.6c,这可能比调度 Lambda 函数更昂贵。如果您已经有一个正在使用的实例,则不会产生额外费用。

    【讨论】:

      【解决方案2】:

      现在在 AWS Cloudwatch 事件中完成快照时有一个新事件:

      http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-cloud-watch-events.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-18
        • 2017-10-22
        • 2020-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多