我想在创建新EC2实例的事件上使用Lambda运行一些代码。查看蓝图config-rule-change-triggered
我可以根据各种配置更改运行代码,但不能创建一个。有办法做我想要的吗?或者我误解了Lambda的用例?
答案 0 :(得分:3)
您可以通过在EC2实例启动用户数据中插入代码并使该代码显式调用Lambda函数来实现此目的,但这不是最好的方法。
更好的方法是使用CloudTrail和Lambda的组合。如果您启用CloudTrail日志记录(每个a / c应始终启用此功能,则在所有区域中),然后CloudTrail将记录您帐户中进行的所有API调用。然后,通过配置S3将事件发布到Lambda,将其连接到Lambda。您的Lambda函数将收到一个S3事件,然后可以检索API日志,查找RunInstances API调用,然后执行所需的任何工作,因为新实例正在启动。
答案 1 :(得分:2)
我没有看到实例启动的通知触发器,但是你可以做的是写一个启动脚本并通过userdata传递它。该启动脚本需要下载并安装AWS CLI,然后向SNS进行身份验证并将消息发布到预先配置的主题。启动脚本将通过您的IAM角色向SNS和任何其他AWS服务进行身份验证,因此您需要授予IAM Role权限以执行您希望脚本执行的任何操作。这可以在IAM控制台中完成。
然后,该主题将使您的Lambda函数订阅它,它将执行。类似于下面的文章(虽然作者正在做类似的关闭,而不是启动)。
http://rogueleaderr.com/post/48795010760/how-to-notifyemail-yourself-when-an-ec2-instance
如果您将EC2实例放入自动缩放组,我相信当自动缩放组启动新实例时会触发一个触发器,因此您可以利用它。
我希望有所帮助。
答案 2 :(得分:2)
如果您启用了CloudTrail,则可以让S3 PutObject / TrailBucket触发Lambda函数。 Lambda函数解析传递给它的对象,如果找到RunInstances
事件,则运行代码。
我做同样的事情,在启动新实例时通知某些用户。使用Lambda / Python,它有大约20行代码。
答案 3 :(得分:1)
几天前我们有类似的要求(用户应该在新实例启动时收到电子邮件)
1)转到cloudwatch,然后选择规则
2)选择服务名称(根据您的情况选择其ec2),然后选择“Ec2实例状态更改通知”
3)然后在“特定状态”下拉列表中选择待处理
4)单击Add target选项并选择lambda函数。
就是这样,每当启动一个新实例时,Cloudwatch都会触发你的lambda函数。
希望它有所帮助!!