gpt4 book ai didi

bash - 如何在用户数据bash代码中获取CloudFormation资源值

转载 作者:行者123 更新时间:2023-12-03 07:36:50 26 4
gpt4 key购买 nike

我尝试在启动配置中将 ec2 实例挂载到 efs,该配置是用 YAML CloudFormation 编写的。我不知道如何获取在 CloudFormation 模板中创建的文件系统 ID。

是否可以在 bash 代码中获取 AWS 资源的值?或者我们可以使用 CloudFormation 将 ec2 实例挂载到 efs 上。

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

最佳答案

获取 AWS::EFS::FileSystem 的逻辑 ID:

!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'

确保引号之间的空格正确,以便命令行完全按照您的需要构建。

关于bash - 如何在用户数据bash代码中获取CloudFormation资源值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52712540/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com