如何通过AWS CLI创建现有启动模板版本并追加UserData命令?
解决AWS CLI创建启动模板新版本并追加UserData命令的方法
以下是具体操作步骤,亲测可行:
1. 获取现有启动模板的原始UserData
先执行命令获取目标启动模板的当前UserData(替换your-template-name和your-template-version,版本可填$Latest或具体版本号):
aws ec2 describe-launch-template-versions --launch-template-name your-template-name --versions your-template-version --query 'LaunchTemplateVersions[0].LaunchTemplateData.UserData' --output text
输出内容是base64编码后的字符串,可直接存到变量里后续使用。
2. 解码并追加命令
把编码后的UserData解码,再追加你需要的命令,注意保证脚本格式正确:
# 解码原UserData original_user_data=$(aws ec2 describe-launch-template-versions --launch-template-name your-template-name --versions $Latest --query 'LaunchTemplateVersions[0].LaunchTemplateData.UserData' --output text | base64 --decode) # 追加新命令,示例为安装nginx,先加换行避免和上一行内容粘连 new_user_data="${original_user_data} sudo yum install -y nginx" # 重新编码为base64格式 encoded_new_user_data=$(echo -n "$new_user_data" | base64)
3. 创建启动模板新版本
执行创建命令,指定新的UserData即可(若需修改其他参数可在launch-template-data里追加):
aws ec2 create-launch-template-version --launch-template-name your-template-name --source-version $Latest --launch-template-data '{"UserData": "'$encoded_new_user_data'"}'
执行成功后会返回新版本信息,你可以用describe-launch-template-versions命令验证UserData是否正确。
常见注意事项
- 若原启动模板无UserData,直接构造新的脚本内容再编码即可,跳过解码步骤
- 追加命令时务必加换行符,避免命令和原脚本末尾内容连在一起导致执行失败
- 使用
echo -n进行base64编码,防止自动添加多余换行破坏格式
内容的提问来源于stack exchange,提问作者bills kean
相关产品推荐
相关产品推荐

