2017-11-11 276 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

相關問題