Как получить значение ресурса CloudFormation в коде данных пользователя - PullRequest
0 голосов
/ 09 октября 2018

Я попытался подключить экземпляр ec2 к efs в конфигурации запуска, которая записана в облачной форме YAML.Я не знаю, как получить 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 Ответ

0 голосов
/ 09 октября 2018

Чтобы получить логический идентификатор 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 между кавычками правильно, так что командная строка построена именно так, как вам нужно.

...