在从centos 7创建的自定义EC2 AMI上运行用户数据

时间:2019-01-07 08:29:09

标签: amazon-web-services amazon-ec2 centos user-data cloud-init

我使用https://aws.amazon.com/marketplace/pp/B00O7WM7QW中的ami-3ecc8f46

如果我直接使用此AMI,并且指定了userdata脚本,例如:

#!/bin/bash

echo "Hello from userdata!"

.. commands

然后一切正常,命令运行。但是,我想制作一个自定义AMI,它是centos7 AMI +一些软件包。

例如,我想要一个ami-3ecc8f46实例,安装python 3.7,并将其重新映像为自定义AMI。当我这样做时,userdata不再运行,并且curl http://169.254.169.254/latest/user-data返回404错误。

不幸的是,似乎ec2 / userdata / cloudinit的某种组合已将该实例标记为已经运行一次,因此不再需要提供或运行userdata。采取自定义CentOS AMI的最简单方法是,在顶部安装一些软件包,然后以仍然运行我的用户数据脚本的自定义AMI重新映像?

1 个答案:

答案 0 :(得分:0)

要创建自定义AMI,可以使用Packer

将自定义AMI的构建定义为代码(Infrastructure as Code)很有优势。用户数据将能够在该自定义AMI中运行。

另请参阅关于existing issue的其他解决方案。