跳至內容

如何解決 AWS CloudFormation 中的「此範本不含任何要匯入的資源」錯誤?

2 分的閱讀內容
0

我想要解決 AWS CloudFormation 主控台的下列錯誤: 「此範本不含任何要匯入的資源。進一步了解。」

簡短描述

在使用 CloudFormation 主控台將資源匯入至在 CloudFormation 外部建立的現有堆疊時,您會收到此錯誤。

在下列情況下使用 CloudFormation 主控台時,可能會發生此錯誤:

  • 您要匯入的資源具有與評估為 False 的條件相關聯的條件索引鍵。
  • 當您要匯入資源時,可以使用內建函數 Fn::Transform 或轉換範本區段 (例如,AWS::ServerlessAWS::Include)。

若要解決條件式資源的錯誤,在條件索引鍵下指定的條件必須針對您要匯入的資源評估為 True

若要解決使用轉換之範本的錯誤,請使用 AWS Command Line Interface (AWS CLI),而非使用 AWS CloudFormation 主控台。

AWS CLI 會要求您針對 CloudFormation 命令 create-change-set 明確提供匯入的資源。

**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請參閱對 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 區域中,請將 --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 官方已更新 2 年前