AWS cloudformation将参数传递给EC2环境

时间:2018-06-06 20:43:01

标签: amazon-cloudformation

我有一个EC2实例模板,我正在创建将运行特定应用程序的模板。我希望能够将参数传递给这个应用程序的启动脚本我已经在我的模板UserData中执行了。

理想情况下,我可以将指定的参数转换为: A)我将在启动脚本中访问的ec2实例上的环境变量 B)我的UserData脚本中的可用变量。

这是我想要完成的简化模板...... Haven没有发现任何aws文档说它可以完成:

Resources:
  GitlabRunner:
    Type: "AWS::EC2::Instance"
    Description: "AWS stack for a serivce"
    Properties:
      UserData:
        Fn::Base64: "#!/bin/bash\nmy-service $TAGS"

Parameters:
  Tags:
    Type: String
    Default: asd
    Description: Comma delimited list of tags

1 个答案:

答案 0 :(得分:2)

可以使用!Sub实现此方案(请注意替换语法${..})。例如:

Resources:
  GitlabRunner:
    Type: "AWS::EC2::Instance"
    Description: "AWS stack for a serivce"
    Properties:
      UserData:
        Fn::Base64: !Sub "#!/bin/bash\nmy-service ${Tags}"

Parameters:
  Tags:
    Type: String
    Default: asd
    Description: Comma delimited list of tags

您可以使用|避免在一行中输入所有内容。例如:

...
UserData:
  Fn::Base64: !Sub |
    #!/bin/bash
    my-service ${Tags}
    echo hello world