EC2实例关闭时创建AMI

时间:2017-09-11 19:32:09

标签: amazon-web-services amazon-ec2 amazon-cloudwatch

我需要在实例终止/关闭以备份它时创建AMI。我在EC2 Instance State Changed事件上设置了CloudWatch规则,以通过SSM Run Command创建AMI(目标文档是AWS-RunShellScript(Linux))。如果我向命令参数提供硬编码实例id,它工作正常。

/home/ec2-user/createImage.sh i-123456

此规则需要应用于所有实例。我需要从源动态获取instance-id并将其发送到目标。我尝试了Input Transformer但它没有从源获取数据。像{{variable Name}}这样的动态参数也无效。任何建议。

感谢。

2 个答案:

答案 0 :(得分:0)

您可以配置Amazon CloudWatch Events规则:

Amazon CloudWatch Events rule

您可以让规则触发触发快照的AWS Lambda函数。触发Lambda函数时,会将以下信息传递给函数:

{
  "version": "0",
  "id": "01345791-08ce-baaf-78f5-437aca50f13c",
  "detail-type": "EC2 Instance State-change Notification",
  "source": "aws.ec2",
  "account": "123456789012",
  "time": "2017-09-12T00:28:55Z",
  "region": "ap-southeast-2",
  "resources": [
    "arn:aws:ec2:ap-southeast-2:123456789012:instance/i-0cf605453b22f703e"
  ],
  "detail": {
    "instance-id": "i-0cf605453b22f703e",
    "state": "stopped"
  }
}

请注意,实例ID随消息一起传递,因此您可以在Lambda函数的CreateSnapshot命令中使用它。

答案 1 :(得分:0)

谢谢约翰。我在CloudWatch中将Lambda函数设置为目标并成功进行了测试。此link具有创建AMI的代码。