Amazon web services 如何在EBS快照完成时触发AWS Lambda

Amazon web services 如何在EBS快照完成时触发AWS Lambda,amazon-web-services,amazon-ec2,aws-lambda,aws-sdk,amazon-cloudwatch,Amazon Web Services,Amazon Ec2,Aws Lambda,Aws Sdk,Amazon Cloudwatch,我正在创建一堆EBS快照作为AWS Lambda的一部分。我需要在这些快照完成时捕获事件,以便基于这些快照创建ec2实例 我可以使用,但这种轮询和快照创建有时可能需要很长时间。我不想让Lambda继续跑一段时间,再加上Lambda的最长时间似乎是五分钟。我查看了CloudWatch和AWS配置,看看是否可以捕获快照事件,但运气不佳 您是正确的--没有表示EBS快照完成的通知事件。相反,您需要检查状态,直到状态更改为completed AWS Lambda函数最多可以运行5分钟,这一点也是正确的,

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

我可以使用,但这种轮询和快照创建有时可能需要很长时间。我不想让Lambda继续跑一段时间,再加上Lambda的最长时间似乎是五分钟。我查看了CloudWatch和AWS配置,看看是否可以捕获快照事件,但运气不佳

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

AWS Lambda函数最多可以运行5分钟,这一点也是正确的,让Lambda函数等待外部进程不是一个好的体系结构

相反,您可以分解架构:

  • 让现有流程触发EBS快照,然后将消息推送到SQS队列中
  • 安排Lambda函数检查SQS队列(如每5分钟一次)。如果存在消息:
    • 从消息中检索有关实例和快照的详细信息
    • 检查快照的状态
    • 如果状态为“已完成”,则执行流程中的下一步
缺点是,即使队列中没有消息,也会触发调度Lambda函数。Lambda功能将很快退出(成本:100ms)


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

在AWS Cloudwatch Events中完成快照时,现在会出现一个新事件: