AWS CloudFormation および CDK における、アカウントやリージョンをまたいだスタック出力の参照
AWS CloudFormation は、新しい組み込み関数である Fn::GetStackOutput に対応しました。これにより、CloudFormation テンプレートや CDK アプリケーションの内部から直接、AWS アカウントやリージョンの境界を越えてスタックの出力値を参照できるようになります。この新機能により、CloudFormation や CDK におけるマルチアカウントおよびマルチリージョンのワークロードのプロビジョニングと管理が簡素化されるほか、CDK アプリケーションでクロススタックの依存関係を再構築する際に発生しがちだったデプロイのデッドロックが解消されます。
マルチアカウントの AWS 環境を管理する際、チーム間において、VPC ID やデータベースのエンドポイントといったインフラストラクチャの値をアカウント間で共有しなければならないケースがよくあります。以前は、これを実現するために、テンプレート間で値を手動でコピーしたり、チーム間でパラメータの更新タイミングを調整したりするなど、複数のステップが必要でした。これからは、Fn::GetStackOutput を使用することで、ターゲットスタック名、出力キー、クロスアカウントアクセス用の IAM ロール ARN、そしてオプションでリージョンを指定するだけで済みます。CloudFormation は指定されたロールを引き受け、出力値を取得してテンプレート処理中にそれを解決するため、手動での調整作業や構成ドリフトのリスクが軽減されます。CDK アプリケーションにおいては、クロスアカウント参照やクロスリージョン参照を行う際、この関数が自動的に使用されるようになります。そのため、これまでの手法で必要だったカスタムリソースや SSM パラメータは不要になります。また、お客様は Fn.getStackOutput を直接呼び出してスタック間に弱い参照を作成することもできるため、スタックのリファクタリングが簡単になります。
利用を開始するには、CloudFormation テンプレートに Fn::GetStackOutput 関数を追加し、クロスアカウントアクセス用の適切な IAM 権限を設定してください。CDK では、クロスアカウント参照とクロスリージョン参照においてこの関数が自動的に使用されます。詳細については、AWS CloudFormation ユーザーガイドまたは CDK デベロッパーガイドをご覧ください。
この機能は、CloudFormation がサポートされているすべての AWS リージョンで利用できます。サービスの可用性の詳細については、AWS リージョン表をご覧ください。