処理されたテンプレートをトラブルシューティングする
マクロを使用する場合、処理されたテンプレートは CloudFormation コンソールにあります。
テンプレートのステージは、その処理ステータスを示します:
-
Original
: ユーザーがスタックまたはスタックセットを作成または更新するために最初に送信したテンプレートです。 -
Processed
: 参照されたマクロを処理した後にスタックまたはスタックセットを作成または更新するために CloudFormation が使用したテンプレートです。元のテンプレートが YAML としてフォーマットされていても、処理されたテンプレートは JSON としてフォーマットされます。
トラブルシューティングには、処理済みのテンプレートを使用します。テンプレートがマクロを参照していない場合は、オリジナルと処理済みのテンプレートは同一です。
詳細については、「CloudFormation コンソールからスタック情報を表示する」を参照してください。
AWS CLI を使用して処理されたテンプレートを取得するには、get-template コマンドを使用します。
サイズ制限
処理されたスタックテンプレートの最大サイズは、CreateStack
、UpdateStack
、または ValidateTemplate
リクエスト内に直接渡す場合は 51,200 バイトです。Amazon S3 テンプレート URL を使用して S3 オブジェクトとして渡す場合は 1 MB です。ただし、CloudFormation はテンプレート内のマクロを連続的に処理するため、処理中にテンプレートの一時的な状態が更新されます。このため、処理中のテンプレートのサイズは、完全に処理されたテンプレートの許容サイズを一時的に超える場合があります。CloudFormation は、これらのインプロセステンプレートにいくらかのバッファを許可します。ただし、テンプレートやマクロを設計する際は、処理済みのスタックテンプレートの最大許容サイズに留意してください。
テンプレートの処理中に CloudFormation から Transformation data limit exceeded
エラーが返された場合は、CloudFormation で処理中に許容される最大テンプレートサイズを超えています。
この問題を解決するには、以下の対処を検討してください。
-
テンプレートを複数のテンプレートに再構成し、処理中のテンプレートが最大サイズを超えないようにします。例:
-
ネストされたスタックテンプレートを使用して、テンプレートの各パートをカプセル化します。詳細については、「ネストされたスタックを使用して他のスタック内にスタックを埋め込む」を参照してください。
-
複数のスタックを作成し、クロススタック参照を使用してスタック間で情報を交換します。詳細については、「別の CloudFormation スタックのリソース出力を参照する」を参照してください。
-
-
特定のマクロから返されるテンプレートフラグメントのサイズを小さくします。CloudFormation はマクロから返されるフラグメントの内容には干渉しません。