AWS CloudFormation コンソールの以下のエラーを解決したいと思っています。 「このテンプレートには、インポートするリソースが含まれていません。詳細を知る。」
簡単な説明
このエラーは、CloudFormation コンソールを使用して、CloudFormation の外部で作成された既存のスタックにリソースをインポートするときに発生します。
このエラーは、以下のシナリオで CloudFormation コンソールを使用する場合に発生する可能性があります。
条件付きリソースのエラーを解決するには、インポートするリソースの条件キーで指定された条件が true と評価される必要があります。
トランスフォームを使用するテンプレートのエラーを解決するには、AWS CloudFormation コンソールの代わりに AWS コマンドラインインターフェイス (AWS CLI) を使用してください。
AWS CLI では、create-change-set CloudFormation コマンド用にインポートされたリソースを明示的に提供する必要があります。
**注:**AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
解決策
次の例では、AWS CLI を使用して既存の AWS::ECS::クラスターリソースを CloudFormation スタックにインポートしています。
Resources:
...
ECSCluster2:
Condition: MyCondition
Type: AWS::ECS::Cluster
DeletionPolicy: Retain
Properties:
ClusterName: Cluster2
**注:**次のステップに進む前に、MyCondition という条件が true と評価されることを確認してください。
リソースをインポートする
**注:**スタックがデフォルトの AWS リージョンにない場合は、コマンドに --region を追加します。または、AWS_DEFAULT_REGION 環境変数を設定してエクスポートし、デフォルトのリージョンを変更します。
リソースをインポートするには、次の手順を実行します。
-
import.txt という名前のリソースインポートファイルを作成します。
[
{
"ResourceType": "AWS::ECS::Cluster",
"LogicalResourceId":
"ECSCluster2"
,
"ResourceIdentifier": {
"ClusterName":"Cluster2"
}
}
]
-
スタックに対して変更セットを作成するには、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 テンプレートファイル名に置き換えてください。上記のコマンドは変更セットの ARN を返し、その ARN を環境変数 ID に保存します。
テンプレートでトランスフォームを使用している場合は、CAPABILITY_AUTO_EXPAND を使用する必要があります。
-
(オプション) チェンジセットが正常に作成されるのを待つには、change-set-create-complete コマンドを実行します。
aws cloudformation wait change-set-create-complete --change-set-name ${ID}
-
AWS CloudFormation コンソールを使用して変更セットを確認してください。または、以下のように describe-change-set コマンドを実行してください。
aws cloudformation describe-change-set --change-set-name ${ID}
-
変更セットを適用してリソースをスタックにインポートするには、execute-change-set コマンドを実行します。
aws cloudformation execute-change-set --change-set-name ${ID}
-
(オプション) テンプレート内のすべてのプロパティがリソースと一致していることを確認するには、リソースのドリフト検出を使用します。
関連情報
AWS CLI を使用して既存のリソースをスタックにインポートする
リソースタイプのサポート