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

5
我正在尝试从AWS CloudFormation的EC2脚本中安装MongoDB。我希望在使用模板创建堆栈时,自动运行该脚本。
在Amazon的此模板中的第303行中,你可以看到他们是这样做的。
然而,我对每行末尾使用反斜杠感到困惑。如何将bash脚本放入AWS模板中以使其在启动时运行,这一点我不太清楚。

@Marcin,实际上我一直在苦苦挣扎。 我从这个链接开始简单尝试,但它显示“无效的模板属性或属性[Properties]”。 - Crunchy
1
请针对新问题提出新的问题。 - Marcin
@Marcin 没问题。我已经发布了一个新帖子。请查看一下。谢谢! - Crunchy
2个回答

7

这被称为 用户数据,在 CloudFormation (CFN) 中可以通过多种方式指定。链接中的模板还使用了 cfn-ini,因此有那些 “反斜杠” 符号。它们用于将一行代码分成多行以提高可读性

通常以下形式的用户数据就足够了,它更易于编写和阅读:

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

你能展示一个在CloudFormation中完整的替换示例吗?这实际上很困难,因为它似乎期望的类型是"字符串"。 - rjurney

3
通常情况下,如果你拥有一个非常长的单行bash命令,你可以使用\将其分成多行以便于阅读。
请参考这个 StackExchange 链接。问题中涉及的AWS Cloudformation模板使用了类似的概念。由于它是一个单行命令,他们将其变为了多行以提高可读性
对于读者的信息,如果您正在使用CloudFormation/YAML并且您有一个多行内联的 bash/python 脚本,您可以参考使用|操作符的链接1 链接2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接