我目前拥有自定义AWS AMI图片,而Terraform无法在user_data部分执行脚本或内联代码。它适用于AWS AMI映像,但不能用于我自己的映像。
{
"rules": {
"notes": {
".read": "auth.uid == 'iLH4Kg20shViwJebCmU8Ynp0OG23'",
".write": "auth.uid == 'iLH4Kg20shViwJebCmU8Ynp0OG23'"
}
}
}
答案 0 :(得分:2)
在EC2实例上设置user_data
时,AWS只会通过the metadata API将此数据提供给实例。然后,安装在AMI中的软件必须检索此数据并决定如何处理它。
您可以在实践中看到这一点,方法是登录您的实例并运行如下命令,假设您有curl
可用:
curl http://169.254.169.254/latest/user-data
如果按预期工作,您应在此处看到为user_data
指定的值。
处理用户数据的最常用方法是通过cloud-init
,这是一个设计用于在实例启动时运行的程序(例如通过systemd,init等),它检索user_data
并采取各种行动取决于它在那里找到的东西。例如,如果检索到的数据看起来像普通shell脚本,那么cloud-init
将执行该脚本。
cloud-init
还有其他替代方案,例如CoreOS Ignition。如果您有独特的需求,您也可以自由编写自己的程序来处理启动时配置。
在此处启动和运行的最简单方法是确保{J} 1作为AMI创建的一部分安装并配置为在引导时运行。然后,您将看到Amazon Linux或Ubuntu的AMI熟悉的启动时配置行为。