Authentication 使用AWS CloudFormation在启动时将具有特定内容的文件从secretsmanager添加到计算机中
我正在使用CloudFormation提供一个Linux实例。在启动期间,我想将一个文件添加到一个特定的文件夹中,其中的内容来自机密管理器中的secretstring。 我尝试使用UserData和MetaData添加文件,但是,它没有做应该做的事情,即从secrets manager向文件添加正确的内容,而是按原样添加描述内容位置的字符串,而不是内容本身。这是我的代码:Authentication 使用AWS CloudFormation在启动时将具有特定内容的文件从secretsmanager添加到计算机中,authentication,amazon-cloudformation,Authentication,Amazon Cloudformation,我正在使用CloudFormation提供一个Linux实例。在启动期间,我想将一个文件添加到一个特定的文件夹中,其中的内容来自机密管理器中的secretstring。 我尝试使用UserData和MetaData添加文件,但是,它没有做应该做的事情,即从secrets manager向文件添加正确的内容,而是按原样添加描述内容位置的字符串,而不是内容本身。这是我的代码: Metadata: AWS::CloudFormation::Init: config: files
Metadata:
AWS::CloudFormation::Init:
config:
files:
/home/ansible/.ssh/authorized_keys:
content: !Sub |
'{{ resolve:secretsmanager:
arn:aws:secretsmanager:eu-central-1:account:secret:secretname:
SecretString:
secretstringpath }}'
mode: "000644"
owner: "ansible"
group: "ansible"
Properties:
UserData:
Fn::Base64: !Sub |
#!/bin/bash -xe
yum update -y
groupadd -g 110 ansible
adduser ansible -g ansible
mkdir /home/ansible/.ssh
yum install -y aws-cfn-bootstrap
/opt/aws/bin/cfn-init -v \
--stack ${AWS::StackName} \
--resource LinuxEC2Instance \
--region ${AWS::Region}
cat /home/ansible/.ssh/authorized_keys
cat命令打印的内容如下:
{{解析:secretsmanager:
arn:aws:secretsmanager:eu-central-1:帐户:机密:secretname:
秘密字符串:
secretstringpath}
而不是文件的路径名。
如何确保添加文件内容?可以简单地将引号从单引号切换到双引号:
Metadata:
AWS::CloudFormation::Init:
config:
files:
/home/ansible/.ssh/authorized_keys:
content: !Sub |
"{{ resolve:secretsmanager:
arn:aws:secretsmanager:eu-central-1:account:secret:secretname:
SecretString:
secretstringpath }}"
mode: "000644"
owner: "ansible"
group: "ansible"
在Cloudformation::Init中不能有对secretsmanager的动态引用