我使用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重新映像?
答案 0 :(得分:0)
要创建自定义AMI,可以使用Packer。
将自定义AMI的构建定义为代码(Infrastructure as Code)很有优势。用户数据将能够在该自定义AMI中运行。
另请参阅关于existing issue的其他解决方案。