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