如何在 AWS CloudFormation 模板中 运行 bash 脚本

How to run a bash script in a AWS CloudFormation template

我正在尝试从 AWS CloudFormation 的 EC2 中的脚本安装 MongoDB。当从模板创建堆栈时,我希望脚本自动 运行。

在 Amazon this template 的第 303 行你可以看到他们这样做

但是,我对每一行都使用反斜杠感到困惑。将 bash 脚本放入 AWS 模板需要什么格式才能在启动时 运行?

这叫做 userdata and in CloudFormation (CFN) it can be specified in multiple ways. The template in the link also use cfn-ini 因此它有那些“反斜杠”。它们用于将单行拆分为多行以提高可读性。

通常以下形式的 user-data 就足够了,这样更容易编写和阅读:

      UserData: !Base64
        Fn::Sub: |
          #!/bin/bash
          echo "first command in bash"
          echo "second command in bash"
          echo "and so on ..."     

一般来说,如果您有一个很长的单行 bash 命令,您可以使用 \ 将其分成多行以便于阅读。
请参考 this StackExchange link。问题中提到的 AWS Cloudformation 模板使用类似的概念。由于它是单行命令,他们将其设为 多行以提高可读性

关于 reader 的信息,如果您正在使用 CloudFormation/YAML 并且您有一个 multi-line in-line bash/python 脚本你可以参考 | 运算符