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

Run userdata on custom EC2 AMI created from centos 7

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

如果我直接使用此 AMI,并指定一个用户数据脚本,例如:

#!/bin/bash

echo "Hello from userdata!"

.. commands

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

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

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

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

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

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