我有一个cloudformation模板,用于创建EC2启动模板。
在模板的UserData部分中,我需要获取一个SSM安全参数并将其作为环境变量公开以初始化我的VM。我正在尝试使用!Sub
,但是输出不是我期望的。这是我的示例代码:
TestJenkinsMasterLaunchTemplate:
Type: 'AWS::EC2::LaunchTemplate'
UserData:
Fn::Base64: !Sub
- |
#!/bin/bash
echo ${azure_client_id}
- azure_client_id: '{{resolve:ssm-secure:/Jenkins/Production/AzureAdClientId:1}}'
/var/log/cloud-init-output.log
文件中的输出是模板本身:{{resolve:ssm-secure:/Jenkins/Production/AzureAdClientId:1}}
。
如何正确解析SSM参数?
答案 0 :(得分:1)
使用AWS CLI:
azure_client_id=$(aws --region=us-east-1 ssm get-parameter --name "azure_client_id" --with-decryption --output text --query Parameter.Value
确保您:将userdata定义为bash shell脚本,安装aws cli,并确保实例角色具有正确的策略。
用户数据脚本示例:
#!/bin/bash
apt-get install -y awscli
export AWS_ACCESS_KEY_ID=your_access_key_id_here
export AWS_SECRET_ACCESS_KEY=your_secret_access_key_here
azure_client_id=$(aws --region=us-east-1 ssm get-parameter --name "azure_client_id" --with-decryption --output text --query Parameter.Value
在您的云形成模板中使用该用户数据脚本。
请参见https://docs.aws.amazon.com/cli/latest/reference/ssm/get-parameter.html