我想要解決 AWS CloudFormation 主控台的下列錯誤: 「此範本不含任何要匯入的資源。進一步了解。」
簡短描述
在使用 CloudFormation 主控台將資源匯入至在 CloudFormation 外部建立的現有堆疊時,您會收到此錯誤。
在下列情況下使用 CloudFormation 主控台時,可能會發生此錯誤:
若要解決條件式資源的錯誤,在條件索引鍵下指定的條件必須針對您要匯入的資源評估為 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 環境變數,以變更預設區域。
若要匯入資源,請完成下列步驟:
-
建立命名為 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 將現有資源匯入堆疊
資源類型支援