我一直在尝试使用 aws cli 命令创建现有启动模板的版本并将命令附加到用户数据。经过我所有的研究,我无法做到这一点。
请注意,我拥有执行此操作所需的 IAM 权限。
请您的贡献将受到高度赞赏。
要实现创建现有启动模板的版本并使用 AWS CLI 将命令附加到用户数据的目标,您将执行一系列步骤。该过程包括检索当前启动模板数据、修改用户数据,然后使用更新的用户数据创建新的启动模板版本。
以下是完成此操作的分步指南:
检索当前启动模板数据:首先,您需要获取现有的启动模板数据。您可以使用
aws ec2 describe-launch-template-versions
命令来指定启动模板 ID 或名称来执行此操作。此命令返回有关启动模板版本的信息,包括用户数据。
aws ec2 describe-launch-template-versions --launch-template-id <template-id> --versions <version-number>
将
<template-id>
替换为您的启动模板 ID,将 <version-number>
替换为您想要作为新版本基础的特定版本,或者使用 $Latest
、$Default
,或省略 --versions
参数来获取最新版本。
解码并修改用户数据:启动模板中的用户数据是base64编码的。您需要对其进行解码,附加附加命令,然后将其重新编码回 Base64。您可以使用
base64
等命令行工具进行编码和解码。
例如,在类 Unix 环境中解码、修改和重新编码:
echo "<existing-base64-userdata>" | base64 --decode > userdata.txt
# Append your commands to the userdata.txt file
echo "<your-command>" >> userdata.txt
# Re-encode the userdata
NEW_USERDATA=$(cat userdata.txt | base64 | tr -d '\n')
将
<existing-base64-userdata>
替换为您当前的 Base64 编码用户数据,将 <your-command>
替换为您要附加的命令。
使用更新的用户数据创建新的启动模板版本:修改用户数据后,您可以使用
aws ec2 create-launch-template-version
命令使用更新的用户数据创建新版本的启动模板。
aws ec2 create-launch-template-version --launch-template-id <template-id> --version-description "New version with updated userdata" --launch-template-data '{"UserData":"<new-base64-encoded-userdata>"}'
将
<template-id>
替换为您的启动模板 ID,将 <new-base64-encoded-userdata>
替换为新的 Base64 编码的用户数据。
这些步骤概述了使用 AWS CLI 将命令附加到 AWS EC2 启动模板版本的用户数据的基本过程。确保您已安装必要的工具(例如 AWS CLI 和 base64 实用程序)并配置了执行这些命令的适当权限。