Попытка предварительно заполнить экземпляр (созданный из оптимизированного ECS AMI, чтобы быть более конкретным) некоторыми открытыми ключами следующим образом:
Resources:
MyEC2Instance:
Type: AWS::EC2::Instance
Properties:
ImageId: "ami-0af844a965e5738db"
KeyName: "some_existing_key"
InstanceType: "t3.small"
Metadata:
AWS::CloudFormation::Init:
config:
packages:
yum:
awslogs: []
files:
"/etc/cfn/cfn-hup.conf":
mode: 000400
owner: root
group: root
content: !Sub |
[main]
stack=${AWS::StackId}
region=${AWS::Region}
"/etc/cfn/hooks.d/cfn-auto-reloader.conf":
content: !Sub |
[cfn-auto-reloader-hook]
triggers=post.update
path=Resources.ECSLaunchConfiguration.Metadata.AWS::CloudFormation::Init
action=/opt/aws/bin/cfn-init -v --region ${AWS::Region} --stack ${AWS::StackName} --resource ECSLaunchConfiguration
"/etc/awslogs/awscli.conf":
content: !Sub |
[plugins]
cwlogs = cwlogs
[default]
region = ${AWS::Region}
"/home/ec2-user/.ssh/authorized_keys":
mode: 000400
owner: ec2-user
group: ec2-user
content: !Sub |
ssh-rsa <pk_2>
ssh-rsa <pk_1>
ssh-rsa <pk_3>
Однако экземпляр в конечном итоге имеет только /home/ec2-user/.ssh/authorized_keys
открытый ключ some_existing_key_pair
.
Может быть, cfg-init
не может переопределить /home/ec2-user/.ssh/authorized_keys
?
Обновление : мне не хватало раздела пользовательских данных ниже
UserData:
"Fn::Base64": !Sub |
#!/bin/bash
yum install -y aws-cfn-bootstrap hibagent
/opt/aws/bin/cfn-init -v --region ${AWS::Region} --stack ${AWS::StackName} --resource MyEC2Instance
/opt/aws/bin/cfn-signal -e $? --region ${AWS::Region} --stack ${AWS::StackName} --resource MyEC2Instance
поэтому все остальные файлы теперь создаются, но содержимое /home/ec2-user/.ssh/authorized_keys
остается прежним.