"!Sub |" 是什么意思 在使用 YAML 语法的 AWS UserData 字段中是什么意思?

sas*_*alm 7 yaml amazon-web-services aws-cloudformation

AWS 文档的这个示例中,我们有一个 UserData 字段,它允许使用以下语法的多行字符串:

UserData:
  Fn::Base64: !Sub |
     #!/bin/bash -xe
     yum update -y aws-cfn-bootstrap
     /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource LaunchConfig --region ${AWS::Region}
     /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource WebServerGroup --region ${AWS::Region}
Run Code Online (Sandbox Code Playgroud)

!Sub |这里是什么意思,尤其是管道字符?使用相应的 JSON"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [代替,但在 YAML!Sub |中使用。

管道字符是否代表换行符,表示行必须由换行符连接?

Joh*_*ley 9

内部函数 Fn::Sub (YAML !Sub) 将输入字符串中的变量替换为您指定的值。在您的模板中,您可以使用此函数来构建包含在您创建或更新堆栈之前不可用的值的命令或输出。

字符“|” (管道符号)的意思是“文字风格”。这使用了更简单、更易读的标量样式。这意味着您可以输入看起来正常的文本,而不必使用诸如“\n”之类的东西来表示行尾。

Fn::Sub

YAML 规范


Ash*_*han 8

在 UserData 部分中,!Sub 函数将 UserData 字符串中的变量替换为您指定的值或伪参数(例如 AWS::StackName 和 AWS::Region)。

此外,YAML 中行尾的管道符号表示 后面的任何缩进文本都应!Sub |解释为多行标量值。

有关更多详细信息,请参阅内部函数详细信息文档