Как получить значение ресурса CloudFormation в коде данных пользователя
Я попытался смонтировать экземпляр ec2 к efs в конфигурации запуска, которая написана в YAML CloudFormation. Я не знаю, как получить File-system-id, который создается в шаблоне CloudFormation.
Можно ли получить значения ресурса AWS в коде bash? Или это любой способ, которым мы можем подключить экземпляр ec2 к efs, используя CloudFormation.
LaunchConfig:
Type: AWS::AutoScaling::LaunchConfiguration
Properties:
ImageId: ami-33f92051
InstanceType: t2.micro
AssociatePublicIpAddress: 'true' #auto-assign public ip
KeyName:
Ref: KeyName
SecurityGroups:
- Ref: PublicEC2instancesSecurityGroupJing
BlockDeviceMappings:
- DeviceName: "/dev/xvda"
Ebs:
SnapshotId: 'snap-0821cc7c34fcb7b01'
VolumeSize: 8
DeleteOnTermination: 'false'
UserData:
Fn::Base64:
Fn::Join:
- "\n"
- - "#!/bin/bash -xe"
- sudo yum update -y
- sudo yum -y install nfs-utils
- file =
- Ref: EFSFileSystem
- echo $file >> /var/www/html/index.html
- cd /mnt
- sudo mkdir efs
- sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 $file.efs.ap-southeast-2.amazonaws.com:/ /mnt/efs
EFSFileSystem:
Type: AWS::EFS::FileSystem
Properties:
PerformanceMode: generalPurpose
ThroughputMode: bursting
1 ответ
Чтобы получить логический идентификатор AWS::EFS::FileSystem
:
!Ref EFSFileSystem
Вы можете использовать это так в своем шаблоне:
- sudo mkdir efs
- !Join
''
'sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 '
!Ref 'EFSFileSystem'
'.efs.ap-southeast-2.amazonaws.com:/'
'/mnt/efs'
Убедитесь, что вы держите spaces
между кавычками правильно, так что командная строка строится именно так, как вам нужно.