CloudFormation のルートスタックを親とするネストされたスタックに、既存のリソースをインポートするにはどうすればよいですか?

所要時間1分
0

AWS CloudFormation にネストされたスタックがあり、その親スタックはルートスタックです。既存のリソースをネストされたスタックにインポートしたいと考えています。しかし、ルートスタックにリソースをインポートしようとすると、「This template does not include any resources to import」(このテンプレートにはインポートするリソースが含まれていません) というエラーが表示されます。

簡単な説明

ネストされたスタックの親スタックがルートの場合、ルートスタックのみを変更するのがベストプラクティスです。

注: 次の解決方法は、親スタックがルートスタックであるネストされたスタックにリソースをインポートするためのものです。

重要: インポートオペレーションの後は常にスタックでドリフト検出を実行して、インポートされたリソースがドリフトしていないことを確認します。

解決方法

ネストされたスタックにリソースをインポートするには、次のステップに従います。

  1. ネストされた AWS::CloudFormation::Stack リソースで Retain DeletionPolicy を使用してルートテンプレートを更新し、スタックを削除せずにルートスタックからデタッチします。
  2. AWS::CloudFormation::Stack をテンプレートから削除して、ルートスタックを更新します。
    注: ルートスタックを更新した後も、ネストされたスタックは [Nested] (ネスト済み) としてマークされたままです。
  3. デタッチ済みのネストされたスタックでインポートオペレーションを実行して、既存のリソースをインポートします。
    注: スタックはまだ [Nested] (ネスト済み) であるとみなされるため、代わりにルートスタックを更新することを推奨する警告が表示されます。これを無視して、ネストされたスタックの更新を続行します。インポート中に他のリソースを変更しないでください。
  4. デタッチ済みのネストされたスタックを IMPORT_COMPLETE ステータスから移行させるには、出力やタグの追加など、簡単に削除できる変更を加えて再度更新します。
  5. ルートスタックでインポートオペレーションを実行し、ネストされたスタックをネストされた階層に追加して戻します
    注: 新しくインポートされたリソースが含まれるように、ネストされたスタックの更新済みテンプレートの参照がルートテンプレートに含まれていることを確認してください。

関連情報

CloudFormation ワークショップ: ネストされたスタックラボ

AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ