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

所要時間2分
0

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) を使用して、次を使用してテンプレートのこのエラーを解決できます:

  • AWS SAM
  • Fn::Transform

条件付きリソースでこのエラーを解決するには、条件キーで指定した条件が、インポートされるリソースについて [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 を使用したスタックへの既存リソースのインポート

インポートおよびドリフト検出操作をサポートするリソース

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

関連するコンテンツ