我试图在用YAML CloudFormation编写的启动配置中将ec2实例安装到efs。我不知道如何获取在CloudFormation模板中创建的File-system-id。
是否可以通过bash代码获取AWS资源的值? 或者这是我们可以使用CloudFormation将ec2实例挂载到ef的任何方式。
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
答案 0 :(得分:1)
要获取page = requests.get("https://boards.4chan.org/g/")
str_page = page.content.decode()
str_split = '\n<'.join(str_page.split('<'))
str_split = '>\n'.join(str_split.split('>'))
str_split = str_split.replace('\n', '')
str_split = str_split.replace('<br>', ' ')
soup = BeautifulSoup(str_split.encode(), 'html.parser')
的逻辑ID:
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'
,以便完全根据需要构建命令行。