既存リソースを CloudFormation 管理に取り込む
AWS CloudFormation は、テンプレートに既存の AWS リソースを記述することで、それらを新しいスタックまたは既存のスタックにインポートできるようにする機能を提供しています。この機能は、CloudFormation 外で作成されたリソースを削除して再作成することなく、CloudFormation を使ってそれらを管理し始めたいという場合に便利です。
CloudFormation は幅広いリソースのインポートをサポートしています。詳細については、「リソースタイプのサポート」を参照してください。
注記
その代わりに、既存のリソースをスキャンして、既存のリソースを CloudFormation にインポートしたり、新しいアカウントでリソースを複製したりするために使用できるテンプレートを自動的に生成するには、「既存のリソースのテンプレートを生成」を参照してください。
概要
インポートオペレーション中に、既存のリソースをスタックにインポートするか、既存のリソースから新しいスタックを作成する変更セットを作成します。インポート時に以下を指定します。
-
元のスタックリソースとインポートするリソースの両方を含む、スタック全体を記述するテンプレート。インポートする各リソースは、DeletionPolicy 属性 がある必要があります。
-
CloudFormation がテンプレート内の論理 IDs を既存のリソースにマッピングするために使用できる、インポートするリソースの識別子。
注記
AWS CloudFormation は、resource import
を使用して 1 つのレベルのネスト化のみをサポートします。つまり、子スタックにスタックをインポートしたり、子を持つスタックをインポートしたりすることはできません。
リソース識別子
各ターゲットリソースを識別するために、2 つの値を指定します。
-
識別子のプロパティ。これは、各リソースタイプを識別するために使用できるリソースプロパティです。たとえば、
AWS::S3::Bucket
リソースは、そのBucketName
を使用して識別できます。インポートするリソースを識別するために使用するリソースプロパティは、リソースタイプによって異なります。リソースの作成プロセスは、AWS CloudFormation コンソールで確認できます。インポートするリソースを含むテンプレートを作成したら、インポートプロセスを開始できます。インポートするリソースの識別子プロパティが表示されます。リソースタイプによっては、識別方法が複数ある場合があり、ドロップダウンリストで使用するプロパティを選択できます。
または、get-template-summary CLI コマンドを呼び出し、スタックテンプレートの S3 URL を
--template-url
オプションの値として指定することで、インポートするリソースの識別子プロパティを取得することもできます。 -
識別子の値。これは、ターゲットリソースの実際のプロパティ値です。たとえば、
BucketName
プロパティの実際の値はMyS3Bucket
です。識別子プロパティの値は、リソースのサービスコンソールから取得できます。
リソースのインポートの検証
インポートオペレーション中に、CloudFormation は次の検証を実行します。
-
インポートするリソースが存在します。
-
インポートする各リソースのプロパティと構成値は、リソースタイプスキーマに準拠します。リソースタイプスキーマでは、受け入れられるプロパティ、必須プロパティ、およびサポートされるプロパティ値が定義されます。
-
必要なプロパティはテンプレートで指定されています。各リソースタイプに必要なプロパティについては、「AWS リソースおよびプロパティタイプのリファレンス」を参照してください。
-
インポートするリソースは、同じリージョン内の別のスタックに属していません。
CloudFormation は、テンプレート構成がリソースプロパティの実際の構成と一致しているかどうかをチェックしません。
重要
予期しない変更を避けるために、テンプレートで定義されているリソースとそのプロパティが、意図したリソースインポートの構成と一致していることを確認します。
リソースのインポートのステータスコード
この表は、resource import
で使用されるさまざまなステータスタイプを示しています。
インポートオペレーションステータス | 説明 |
---|---|
|
インポートオペレーションは進行中です。 |
|
スタック内のすべてのリソースについて、インポートオペレーションが完了しました。 |
|
ロールバックインポートオペレーションは、以前のテンプレート構成をロールバックしています。 |
|
インポートのロールバックオペレーションが失敗しました。 |
|
インポートは、以前のテンプレート構成にロールバックされました。 |
インポートオペレーション中の考慮事項
-
インポートが完了した後、後続のスタックオペレーションを実行する前に、インポートされたリソースでドリフト検出を実行することをお勧めします。ドリフト検出により、テンプレート構成が実際の構成と一致することが保証されます。詳細については、「CloudFormation スタック全体のドリフトを検出する」を参照してください。
-
インポートオペレーションでは、新しいリソース作成、リソースの削除、プロパティ構成の変更は許可されません。
-
インポートオペレーションを成功させるには、インポートする各リソースに
DeletionPolicy
属性が必要です。DeletionPolicy
は任意の使用できる値に設定できます。インポートするリソースにのみ が必要ですDeletionPolicy
。スタックにすでに含まれているリソースは、DeletionPolicy
を必要としません。 -
同じリソースを複数のスタックにインポートすることはできません。
-
cloudformation:ImportResourceTypes
IAM ポリシー条件を使用して、インポートオペレーション中にユーザーが操作できるリソースタイプを制御できます。詳細については、「AWS CloudFormation の条件」を参照してください。 -
AWS CloudFormation スタックの制限は、リソースのインポート時に適用されます。制限の詳細については、「AWS CloudFormation のクォータ」を参照してください。
追加リソース
既存のスタックをリファクタリングするシナリオに焦点を当てた追加のインポート手順については、以下のトピックを参照してください。
-
スタック間でリソースを移動させるには、「スタック間でのリソースの移動」を参照してください。
-
既存のスタックを別の既存のスタック内にネストするには、「既存のスタックのネスト化」を参照してください。
-
スタックドリフトを解決するには、「」を参照してくださいインポートオペレーションでドリフトを解決する。