AWS CloudFormation UserData EC2环境变量

时间:2019-02-25 00:43:20

标签: amazon-web-services amazon-cloudformation

我正在使用CloudFormation构建基础架构。 这是我自己的基础结构代码,如下所示。

 AWSRegionArch2AMI:
     us-east-1:
       HVM64: ami-0ff8a91507f77f867
       HVMG2: ami-0a584ac55a7631c0c
 ...
 ..
 .

 Resources:
 EC2Instance:
 Type: AWS::EC2::Instance
 Properties:
 InstanceType:
    Ref: InstanceType
  SecurityGroups:
  - Ref: InstanceSecurityGroup
  KeyName:
    Ref: KeyName
  UserData:
    Fn::Base64: !Sub |
      #!/bin/bash
      export MY_AMI_NAME=${ !GetAtt AWSRegionArch2AMI.us-east-1.HVM64 }

      echo $MY_AMI_NAME > $HOME/user_data.txt

我想将变量设置为user_data文件,但它为空,如何将环境变量放入用户数据字段中并在我自己的应用程序端使用它。我该怎么做。

请帮助!

1 个答案:

答案 0 :(得分:3)

尝试一下:

UserData:
  Fn::Base64: !Sub
    - |
      #!/bin/bash
      MY_AMI_NAME=${image_id}
      echo $MY_AMI_NAME > $HOME/user_data.txt
    - image_id: !GetAtt AWSRegionArch2AMI.us-east-1.HVM64

说明:

  • 在Bash中使用export是为了使变量可用于子外壳-“环境变量”。您在那里不需要它。

  • 请参见docs,以正确使用!Sub函数。

  • 另请参阅this相关的堆栈溢出答案。