デプロイされたスタックから情報をエクスポートする
同じ AWS アカウントおよびリージョン内に複数のスタックがあるときは、スタック間での情報の共有が役に立つ場合があります。これは、あるスタックが別のスタックによって作成されたリソースを使用する必要があるときに便利です。
例えば、ウェブサーバーのためにサブネットやセキュリティグループなどのネットワークリソースを作成するスタックがあるとします。情報が共有されていると、実際のウェブサーバーを作成する他のスタックが、最初のスタックによって作成されたネットワークリソースを使用できます。リソースの ID をスタックのテンプレートにハードコード化する、または、ID を入力パラメータとして渡す必要はありません。
スタック間で情報を共有するには、1 つのスタックからの出力値をエクスポートし、それらを別のスタックにインポートします。処理の流れ
-
最初のスタックのテンプレート (ネットワークスタックなど) で、Output セクションの
Export
フィールドを使用して、エクスポートする特定の値を定義します。 -
そのスタックを作成または更新すると、CloudFormation が出力値をエクスポートして、同じ AWS アカウントおよびリージョン内にある他のスタックがそれらを利用できるようにします。
-
他のスタックのテンプレートで Fn::ImportValue 関数を使用して、最初のスタックからエクスポートされた値をインポートします。
-
2 番目のスタック (ウェブサーバースタックなど) を作成または更新すると、CloudFormation が最初のスタックからエクスポートされた値を自動的に取得して、それらを使用します。
チュートリアル、およびサンプルテンプレートについては、別の CloudFormation スタックのリソース出力を参照する を参照してください。
注記
別のスタックが出力値をインポート後、出力値をエクスポートしているスタックを削除したり、エクスポートされた出力値を変更することはできません。エクスポートしているスタックを削除したり出力値を変更する前に、インポートをすべて削除する必要があります。
スタック出力値のエクスポートとネストされたスタックの使用との比較
ネストされたスタックとは、別のスタック内で AWS::CloudFormation::Stack
リソースを使用して作成するスタックです。ネストされたスタックにより、1 つのスタックからすべてのリソースをデプロイし、管理します。ネストされたスタックグループからの出力をグループ内の別のスタックへの入力として使用できます。これは値のエクスポートとは異なります。
情報共有をネストされたスタックグループ内に隔離する場合は、ネストされたスタックを使用することを推奨します。ネストされたスタックのグループ内に限らず、他のスタックと情報を共有するには、値をエクスポートします。たとえば、サブネットのあると 1 つのスタックを作成し、ID をエクスポートできます。他のスタックは、ID をインポートすることでそのサブネットを使用できます。各スタックが独自のサブネットを作成する必要はありません。スタックがサブネット ID をインポートする限り、それを変更または削除することはできません。
ネストされたスタックの詳細については、「ネストされたスタックを使用して他のスタック内にスタックを埋め込む」を参照してください。
エクスポートされた出力値のリスト
インポートできる値を確認するには、CloudFormation コンソール、AWS CLI、または CloudFormation API を使用して、エクスポートされたすべての出力値を一覧表示します。CloudFormation は、エクスポートされた出力の名前と値 (現在のリージョン向け)、および出力のエクスポート元であるスタックを表示します。スタックのテンプレートでエクスポートされた出力値を参照するには、エクスポート名と Fn::ImportValue 関数を使用します。
エクスポートされた出力値 (コンソール) をリスト表示するには
-
CloudFormation コンソール
の CloudFormation ナビゲーションペインで、[Exports] (エクスポート) を選択します。
エクスポートされた出力値 (AWS CLI) をリスト表示するには
-
list-exports コマンドを実行します。
エクスポートされた出力値 (API) をリスト表示するには
-
API オペレーション ListExports を実行します。
エクスポートされた出力値をインポートするスタックのリスト
出力値をエクスポートすると、同じ AWS アカウントおよびリージョンにあるスタックでその値をインポートできます。どのスタックが特定の出力値をインポートしているかを確認するには、リストインポートアクションを使用します。
エクスポートされた出力値を削除または編集するには、ListImports
アクションを使用してそれらをインポートするスタックを追跡し、そのスタックを編集して、出力値を参照する Fn::ImportValue 関数を削除します。エクスポートされた出力値を削除または編集する前に、エクスポートされた出力値を参照するインポートをすべて削除する必要があります。
出力値のエクスポートおよびインポートの詳細については、「デプロイされたスタックから情報をエクスポートする」を参照してください。
エクスポートされた出力値をインポートするスタックをリストするには (コンソール)
-
CloudFormation コンソール
の CloudFormation ナビゲーションペインで、[Exports] (エクスポート) を選択します。 -
特定のエクスポート値をインポートするスタックを確認するには、そのエクスポート値の [Export Name] (エクスポート名) を選択します。CloudFormation により、エクスポートの詳細ページが表示され、値をインポートしているすべてのスタックがリスト表示されます。
エクスポートされた出力値をインポートするスタックをリストするには (AWS CLI)
-
エクスポートされた出力値の名前を指定して list-imports コマンドを実行します。
CloudFormation から、値をインポートするスタックのリストが返されます。
エクスポートされた出力値をインポートするスタックをリストするには (API)
-
エクスポートされた出力値の名前を指定して ListImports API を実行します。
CloudFormation から、値をインポートするスタックのリストが返されます。