我在使用 AWS Cloud Formation 创建一个用户并将名为 authorized_keys 的相应 pub 文件复制到实例上的 .ssh 文件夹中时遇到了麻烦。我这样做,是因为我想使用SSH与该用户进行连接。当我检查创建的实例的SystemLog时,似乎并没有创建用户,也没有在.ssh目录下复制任何文件作为authorized_keys,这是我的代码。
LinuxEC2Instance:
Type: AWS::EC2::Instance
Metadata:
AWS::CloudFormation::Init:
config:
users:
ansible:
groups:
- "exampleuser"
uid: 1
homeDir: "/home/exampleuser"
files:
/home/exampleuser/.ssh/authorized_keys:
content: !Sub |
'{{ resolve:secretsmanager:
arn:aws:secretsmanager:availability-zone:account-id:secret:keyname:
SecretString:
keystring }}'
mode: "000600"
owner: "exampleuser"
group: "exampleuser"
我是不是遗漏了什么,所以用户被创建了,文件也被复制了?
要使用 AWS::CloudFormation::Init
你必须明确地从你的 UserData
使用 cfn-init 帮助脚本。
这样一个例子是 UserData
对于Amazon Linux 2的操作如下。
UserData:
Fn::Base64: !Sub |
#!/bin/bash -xe
yum update -y
yum install -y aws-cfn-bootstrap
/opt/aws/bin/cfn-init -v \
--stack ${AWS::StackName} \
--resource LinuxEC2Instance \
--region ${AWS::Region}
如果有问题,那么必须登录到实例,并检查日志文件,如。/var/logs/cloud-init-output
以查找错误信息。