AWS::Include
変換
テンプレートに定型コンテンツを挿入するには、AWS CloudFormation がホストするマクロである AWS::Include
transform を使用します。AWS::Include
transform により、Amazon S3 バケット内のテンプレートスニペットへのリファレンスを作成することができます。変更セットを作成する、または変更セットを使用して CloudFormation スタックを更新する、およびテンプレートが AWS::Include
を参照すると、CloudFormation は指定されたファイルの内容をテンプレート内の変換の場所に挿入します。AWS::Include
関数の動作は、プログラミング言語の include
、copy
、import
ディレクティブに似ています。
例えば、1 つ以上の CloudFormation テンプレートで再利用したい Lambda 関数が存在する場合があります。
使用方法
テンプレートパラメータセクションまたはテンプレートバージョンフィールドを除き、CloudFormation テンプレート内の任意の場所で AWS::Include
変換を使用できます。たとえば、マッピングセクションの AWS::Include
で使用できます。
テンプレートのトップレベルでの構文
テンプレートの最上位レベルにAWS::Include
transform を含めるには、Transform
セクションで、次の構文を使用します。
JSON
{ "Transform" : { "Name" : "AWS::Include", "Parameters" : { "Location" : "s3://
amzn-s3-demo-bucket
/MyFileName
.json" } } }
YAML
Transform: Name: 'AWS::Include' Parameters: Location: '
s3://amzn-s3-demo-bucket/MyFileName.yaml
'
テンプレートのセクションに変換を埋め込む場合の構文
セクション内に組み込まれた変換を含めるには、Fn::Transform
組み込み関数および次の構文を使用します。
JSON
{ "Fn::Transform" : { "Name" : "AWS::Include", "Parameters" : { "Location": "
s3://amzn-s3-demo-bucket/MyFileName.json
" } } }
YAML
'Fn::Transform': Name: 'AWS::Include' Parameters: Location: s3://
amzn-s3-demo-bucket
/MyFileName.yaml
パラメータ
場所
この場所は Amazon S3 URI で、S3 バケット内の特定ファイル名です。例えば、s3://
と指定します。amzn-s3-demo-bucket
/MyFile.yaml
解説
AWS::Include
を使用する際、以下の考慮事項に注意してください。マクロの使用に関する一般的な考慮事項については、「CloudFormation マクロ定義を作成する際の考慮事項」を参照してください。
-
現在サポートされているのは Amazon S3 URI だけで、(Amazon S3 ARN など) 他の Amazon S3 形式はサポートされません。これは GitHub リポジトリでなく、Amazon S3 バケットである必要があります。
-
Amazon S3 URL にアクセスできるユーザーであれば、誰でもそのテンプレートにスニペットを含めることができます。
-
テンプレートスニペットは、有効な JSON である必要があります。
-
"KeyName": "keyValue"
のように、テンプレートスニペットは有効なキー–オブジェクトである必要があります。 -
AWS::Include
を使用するテンプレートスニペットを参照するためにAWS::Include
を使用することはできません。 -
スニペットが変更された場合は、スタックはその変更を自動的に検知しません。これらの変更を取得するには、更新されたスニペットを使用してスタックを更新する必要があります。スタックを更新する場合、含まれるスニペットが知らない間に変更されていないことを確認してください。スタックを更新する前に確認するには、変更セットを確認します。
-
テンプレートとスニペットを作成する場合、YAML と JSON テンプレート言語を組み合わせることができます。
-
現在、YAML スニペットの簡易表記の使用はサポートされていません。
-
クロスリージョンレプリケーション Amazon S3 URI を
AWS::Include
で指定できます。クロスリージョンレプリケーションオブジェクトにアクセスする際、Amazon S3 バケット名を確認してください。詳細については、「クロスリージョンレプリケーション」を参照してください。
例
次の例は、AWS::Include
変換で待機条件ハンドルを実行する方法を示します。
JSON と YAML の両方のバージョンが、以下の待機条件スニペットを使用します。ファイルを single_wait_condition.yaml
として保存し、S3 バケットに保存します。amzn-s3-demo-bucket
を実際のバケット名に置き換えます。
WebServerWaitHandle: Type: 'AWS::CloudFormation::WaitConditionHandle'
JSON
{ "Resources": { "MyWaitHandle": { "Type": "AWS::CloudFormation::WaitConditionHandle" }, "Fn::Transform": { "Name": "AWS::Include", "Parameters": { "Location": "s3://
amzn-s3-demo-bucket
/single_wait_condition.yaml" } } } }
YAML
Resources: MyWaitHandle: Type: 'AWS::CloudFormation::WaitConditionHandle' 'Fn::Transform': Name: 'AWS::Include' Parameters: Location: "s3://
amzn-s3-demo-bucket
/single_wait_condition.yaml"