AWS CloudFormation の「このテンプレートにはインポートするリソースが含まれていません」というエラーを解決する方法を教えてください。

所要時間1分
0

AWS CloudFormation コンソールの以下のエラーを解決したいと思っています。 「このテンプレートには、インポートするリソースが含まれていません。詳細を知る。」

簡単な説明

このエラーは、CloudFormation コンソールを使用して、CloudFormation の外部で作成された既存のスタックにリソースをインポートするときに発生します。

このエラーは、以下のシナリオで CloudFormation コンソールを使用する場合に発生する可能性があります。

  • インポートしようとしているリソースには、false と評価される条件に関連付けられている条件キーがあります。
  • リソースをインポートするときは、組み込み関数 Fn::Transform、または AWS::ServerlessAWS::Include などのトランスフォームテンプレートセクションを使用します。

条件付きリソースのエラーを解決するには、インポートするリソースの条件キーで指定された条件が 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 環境変数を設定してエクスポートし、デフォルトのリージョンを変更します。

リソースをインポートするには、次の手順を実行します。

  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 テンプレートファイル名に置き換えてください。上記のコマンドは変更セットの ARN を返し、その ARN を環境変数 ID に保存します。

    テンプレートでトランスフォームを使用している場合は、CAPABILITY_AUTO_EXPAND を使用する必要があります。

  3. (オプション) チェンジセットが正常に作成されるのを待つには、change-set-create-complete コマンドを実行します。

    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. 変更セットを適用してリソースをスタックにインポートするには、execute-change-set コマンドを実行します。

    aws cloudformation execute-change-set --change-set-name ${ID}
  6. (オプション) テンプレート内のすべてのプロパティがリソースと一致していることを確認するには、リソースのドリフト検出を使用します

関連情報

AWS CLI を使用して既存のリソースをスタックにインポートする

リソースタイプのサポート

AWS公式
AWS公式更新しました 8ヶ月前
コメントはありません

関連するコンテンツ