2017-11-11 82 views
0

在从AWS docs这个例子中,我们有一个的UserData字段,它允许多行字符串,使用的语法如下:什么是“!Sub |”在AWS UserData字段中使用YAML语法表示?

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} 

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

管道字符是否代表换行符,表示换行必须加上换行符?

+0

http://www.yaml.org/spec/1.2/spec.html#id2795688 – melpomene

回答

2

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

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

Fn::Sub

YAML Spec

1

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

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

有关更多详细信息,请参阅固有功能详细信息documentation

相关问题