AWS cloudformation 将参数传递给 EC2 环境
AWS cloudformation pass parameters to EC2 environment
我正在创建一个 EC2 实例模板,它将 运行 一个特定的应用程序。我希望能够将参数传递到我在模板 UserData 中执行的此应用程序的启动脚本。
理想情况下,我可以将指定的参数转换为:
A) 我将在启动脚本中访问的 ec2 实例上的环境变量
B) 我的 UserData 脚本中的可用变量。
这是我想要完成的任务的简化模板...还没有找到任何 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
这种情况可以使用 !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
我正在创建一个 EC2 实例模板,它将 运行 一个特定的应用程序。我希望能够将参数传递到我在模板 UserData 中执行的此应用程序的启动脚本。
理想情况下,我可以将指定的参数转换为: A) 我将在启动脚本中访问的 ec2 实例上的环境变量 B) 我的 UserData 脚本中的可用变量。
这是我想要完成的任务的简化模板...还没有找到任何 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
这种情况可以使用 !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