AWS CloudFormation コンソールで「このテンプレートにはインポートするリソースが含まれていません。詳細をご確認ください。」というエラーが表示されます。
簡単な説明
AWS CloudFormation コンソールを使用して CloudFormation の外部で作成された既存のスタックにリソースをインポートすると、このエラーが発生します。
このエラーは、以下のいずれかのシナリオで AWS CloudFormation コンソールを使用する場合に発生することがあります。
- 条件付きリソース。 インポートするリソースには、[false] と評価される条件に関連付けられた条件キーがあります。
- AWS サーバーレスアプリケーションモデル (AWS SAM) テンプレート。 AWS CloudFormation コンソールでは、リソースのインポート時に [Transforms] (変換) セクションがサポートされません。AWS::Serverless 変換を使用するテンプレートでリソースをインポートすることはできません。
- Fn::Transform。 AWS CloudFormation コンソールでは、リソースのインポート時に組み込み関数である Fn::Transform を使用することはできません。
AWS CloudFormation コンソールの代わりに AWS Command Line Interface (AWS CLI) を使用して、次を使用してテンプレートのこのエラーを解決できます:
条件付きリソースでこのエラーを解決するには、条件キーで指定した条件が、インポートされるリソースについて [true] と評価されることを確認します。
AWS CLI では、CloudFormation コマンドである create-change-set を使用して、インポートしたリソースを明示的に提供する必要があります。
注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
解決方法
次の例では、AWS CLI を使用して、既存の AWS::ECS::Cluster リソースを CloudFormation スタックにインポートします。
Resources:
...
ECSCluster2:
Condition: MyCondition
Type: AWS::ECS::Cluster
DeletionPolicy: Retain
Properties:
ClusterName: Cluster2
注: 次の手順に進む前に、条件 MyCondition が [true] と評価されることを確認してください。
AWS CLI を使用してリソースをインポートするには、以下のステップを完了します。
注: スタックがデフォルトの AWS リージョンにない場合は、コマンドに --region を追加するか、AWS_DEFAULT_REGION 環境変数を設定およびエクスポートしてデフォルトのリージョンを変更します。
1. import.txt という名前のリソースインポートファイルを作成します。例:
[
{
"ResourceType": "AWS::ECS::Cluster",
"LogicalResourceId":
"ECSCluster2"
,
"ResourceIdentifier": {
"ClusterName":"Cluster2"
}
}
]
2. スタックに対して変更セットを作成するには、次の create-change-set コマンドを実行します。
ID=$(aws cloudformation create-change-set --stack-name testStack --change-set-name testSet --resources-to-import file://import.txt --change-set-type IMPORT --template-body file://template.yaml --capabilities CAPABILITY_AUTO_EXPAND --query 'Id' --output text)
注: testStack をスタック名に置き換え、template.yaml を CloudFormation テンプレートのファイル名に置き換えます。前述のコマンドは、変更セットの Amazon リソースネーム (ARN) を返し、ARN を環境変数 ID に保存します。
注: CAPABILITY_AUTO_EXPAND は、テンプレートで変換を使用する場合にのみ使用してください。
3. (オプション) 変更セットが正常に作成されるのを待機するには、次のコマンドを実行します。
aws cloudformation wait change-set-create-complete --change-set-name ${ID}
4. AWS CloudFormation コンソールを使用して変更セットを表示します。または、次の describe-change-set コマンドを使用します。
aws cloudformation describe-change-set --change-set-name ${ID}
5. 変更セットを適用し、リソースをスタックにインポートするには、次のコマンドを実行します。
aws cloudformation execute-change-set --change-set-name ${ID}
6. (オプション) テンプレートのすべてのプロパティがリソースと一致することを確認するには、リソースでドリフト検出を使用します。
関連情報
AWS CLI を使用したスタックへの既存リソースのインポート
インポートおよびドリフト検出操作をサポートするリソース