2017-11-11 36 views
0

AWS docsから、我々は次の構文を使用して、複数行の文字列を可能にUserDataのフィールドがあります。"!Sub |"とは何ですか? YAML構文の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} 

!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を参照してください。

関連する問題