我正在尝试从AWS CloudFormation的EC2脚本中安装MongoDB。我希望在使用模板创建堆栈时,自动运行该脚本。在Amazon的此模板中的第303行中,你可以看到他们是这样做的。然而,我对每行末尾使用反斜杠感到困惑。如何将bash脚本放入AWS模板中以使其在启动时运行,这一点我不太清楚。
这被称为 用户数据,在 CloudFormation (CFN) 中可以通过多种方式指定。链接中的模板还使用了 cfn-ini,因此有那些 “反斜杠” 符号。它们用于将一行代码分成多行以提高可读性。 通常以下形式的用户数据就足够了,它更易于编写和阅读: UserData: !Base64 Fn::Sub: | #!/bin/bash echo "first command in bash" echo "second command in bash" echo "and so on ..."
通常情况下,如果你拥有一个非常长的单行bash命令,你可以使用\将其分成多行以便于阅读。请参考这个 StackExchange 链接。问题中涉及的AWS Cloudformation模板使用了类似的概念。由于它是一个单行命令,他们将其变为了多行以提高可读性。对于读者的信息,如果您正在使用CloudFormation/YAML并且您有一个多行内联的 bash/python 脚本,您可以参考使用|操作符的链接1 链接2。