メニュー
AWS CloudFormation
ユーザーガイド (API Version 2010-05-15)

AWS::Include Transform

AWS::Include transform を使用して、メインの AWS CloudFormation テンプレートとは別に保存されているテンプレートスニペットを利用できます。Name: 'AWS::Include' および Location パラメータを指定すると、Transform キーがスニペットを挿入するプレースホルダーになります。変更セットの作成 または 変更セットを使用したスタックの更新 で、AWS CloudFormation がそれらのスニペットをメインテンプレートに挿入します。

1 つ以上の AWS CloudFormation テンプレートで再利用したい Lambda 関数が存在する場合があります。AWS::Include transform により、Amazon S3 バケット内の変換スニペットへのリファレンスを作成することができます。AWS::Include を AWS CloudFormation テンプレートの Transform 関数に追加することができます。AWS::Include 関数の動作は、プログラミング言語の includecopyimport ディレクティブに似ています。

使用

テンプレートパラメータセクションまたはテンプレートバージョンフィールドを除き、AWS CloudFormation テンプレート内の任意の場所で AWS::Include transform を使用できます。たとえば、マッピングセクションの AWS::Include で使用できます。

テンプレートのトップレベルでの構文

テンプレートの最上位レベルに変換を含めるには、次の構文を使用します。

JSON

Copy
{ "Transform" : { "Name" : "AWS::Include", "Parameters" : { "Location" : "s3://MyAmazonS3BucketName/MyFileName.json" } } }

YAML

Copy
Transform: Name: 'AWS::Include' Parameters: Location: 's3://MyAmazonS3BucketName/MyFileName.yaml'

テンプレートのセクションに変換を埋め込む場合の構文

セクション内に組み込まれた変換を含めるには、次の構文を使用します。

JSON

Copy
{ "Fn::Transform" : { "Name" : "AWS::Include", "Parameters" : { "Location" : "s3://MyAmazonS3BucketName/MyFileName.json" } } }

YAML

Copy
'Fn::Transform': Name: 'AWS::Include' Parameters: Location: s3://MyAmazonS3BucketName/MyFileName.yaml

パラメータ

場所

この場所は Amazon S3 URI で、S3 バケット内の特定ファイル名です。たとえば、s3://MyBucketName/MyFile.yaml と指定します。

解説

AWS::Include を使用する際、以下に注意してください。

  • AWS::Include は AWS Lambda を使用できるリージョンだけでサポートされます。Lambda を使用できるリージョンのリストについては、「http://docs.aws.amazon.com/general/latest/gr/rande.html#lambda_region」を参照してください。

  • 現在サポートされているのは Amazon S3 URI だけで、(Amazon S3 ARN など) 他の Amazon S3 形式はサポートされません。これは GitHub リポジトリでなく、Amazon S3 バケットである必要があります。

  • Amazon S3 URL にアクセスできるユーザーであれば、誰でもそのテンプレートにスニペットを含めることができます。

  • お客様のテンプレートスニペットは、有効な YAML または有効な JSON である必要があります。

  • テンプレートのスニペットは、キーと値のオブジェクトが、"KeyName": "keyValue" のように有効になっている必要があります。

  • テンプレートのスニペットは、スタックの作成またはスタックの更新オペレーションの検証チェックに合格する必要があります。

  • AWS CloudFormation は最初に変換を解決し、次いでテンプレートを処理します。生成されるテンプレートは有効な YAML または有効な JSON である必要があり、テンプレートサイズ制限を超えることはできません。

  • スニペットが変更された場合は、スタックはその変更を自動的に検知しません。これらの変更を取得するには、更新されたスニペットを使用してスタックを更新する必要があります。スタックを更新する場合、含まれるスニペットが知らない間に変更されていないことを確認してください。スタックを更新する前に確認するには、変更セットを確認します。

  • 更新ロールバック機能を使用する場合、AWS CloudFormation は元のテンプレートのコピーを使用します。含まれるスニペットが変更されていても、元のテンプレートにロールバックされます。

  • 変換を反復的に処理しないため、ネストされた変換は機能しません。

  • テンプレートとスニペットを作成する場合、YAML と JSON テンプレート言語を組み合わせることができます。

  • YAML の簡易表記の使用は現在サポートされていません。

  • 単一のテンプレートで複数の変換を使用することができます。それでも、テンプレートの最上位レベルとテンプレートに組み込まれたセクション内で、AWS::Include 変換を同時に両方を参照することはできません。

  • クロスリージョンレプリケーション Amazon S3 URI を AWS::Include で指定できます。クロスリージョンレプリケーションオブジェクトにアクセスする際、Amazon S3 バケット名を確認してください。 詳細については、「クロスリージョンレプリケーション」を参照してください。

次の例は、AWS::Include 変換で待機条件ハンドルを実行する方法を示します。

JSON と YAML の両方のバージョンが、以下の待機条件スニペットを使用します。ファイルを single_wait_condition.yaml として保存し、S3 バケットに MyAmazonS3BucketName と同じ名前で保存します。

Copy
WebServerWaitHandle: Type: 'AWS::CloudFormation::WaitConditionHandle'

JSON

Copy
{ "Resources": { "MyWaitHandle": { "Type": "AWS::CloudFormation::WaitConditionHandle" }, "Fn::Transform": { "Name": "AWS::Include", "Parameters": { "Location": "s3://MyAmazonS3BucketName/single_wait_condition.yaml" } } } }

YAML

Copy
Resources: MyWaitHandle: Type: 'AWS::CloudFormation::WaitConditionHandle' 'Fn::Transform': Name: 'AWS::Include' Parameters: Location : "s3://MyAmazonS3BucketName/single_wait_condition.yaml"

このページの内容: