投稿日: Jul 26, 2023

AWS CloudFormation が Fn::ForEach 組み込み関数によるループ機能を発表しました。Fn:: ForEach を使用すると、最小限のコード行でテンプレートの一部を複製できます。Fn:: ForEach を使用すると、テンプレートのレイアウトを簡略化し、自分や同僚がコードを簡単かつ迅速にレビューできるようになります。Fn:: ForEach は、間違ったプロパティを更新したり、テンプレート内の複数のターゲットプロパティを更新し忘れたりするなどの人為的ミスを減らすのに役立ちます。

Fn:: ForEach を使用するには、AWS::LanguageExtensions 変換を宣言する必要があります。言語拡張機能の変換により、CloudFormation JSON/YAML のベーステンプレート言語の機能が拡張されます。今回のリリースでは、テンプレートの「リソース」、「リソースプロパティ」、「条件」、「出力」セクションで Fn:: ForEach を使用できます。たとえば、同じコード行を複製する代わりに Fn:: ForEach を使用して、一意の識別子名を持つ AWS:: DynamoDB:: Table の 5 つのインスタンスを宣言できます。さらに、入れ子にした Fn:: ForEach ループを使用したり、Fn:: ForEach を Fn:: Join などの他の組み込み関数と組み合わせて高度なテンプレートを生成したりすることもできます。たとえば、VPC、サブネット、トランジットゲートウェイなどのリソースを入れ子にしたループとして組み合わせて、ネットワークスタックを作成できます。サンプルテンプレートの例については、ユーザーガイドを参照してください。

Fn:: ForEach 組み込み関数は、CloudFormation を利用できる AWS リージョンで使用できます。CloudFormation が利用可能な AWS リージョンについては、AWS リージョン表をご覧ください。

Fn:: ForEach は、当社の Language Discussion Github リポジトリを通じて CloudFormation コミュニティとオープンディスカッションを行った結果です。フィードバックを共有してくださったコミュニティに感謝します。言語ディスカッションリポジトリにアクセスすると、言語機能をリクエストしたり、新しい言語機能に関する Request for Comments (RFC) 提案にフィードバックを残したりすることができます。