AWS CloudFormation 콘솔에서 다음 오류를 해결하고 싶습니다. "This template does not include any resources to import. Learn more."
간략한 설명
CloudFormation 콘솔을 사용하여 CloudFormation 외부에서 생성된 기존 스택으로 리소스를 가져올 때 이 오류가 발생합니다.
이 오류는 다음 시나리오에서 CloudFormation 콘솔을 사용할 때 발생할 수 있습니다.
조건부 리소스에 대한 오류를 해결하려면 조건 키 아래에 지정된 조건이 가져오는 리소스에 대해 true로 평가되어야 합니다.
변환을 사용하는 템플릿의 오류를 해결하려면 AWS CloudFormation 콘솔 대신 AWS Command Line Interface(AWS CLI)를 사용합니다.
AWS CLI를 사용하려면 create-change-set CloudFormation 명령에 대해 가져온 리소스를 명시적으로 제공해야 합니다.
참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 Troubleshoot AWS CLI errors를 참고하세요. 또한 최신 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}
-
(선택 사항) 템플릿의 모든 속성이 리소스와 일치하는지 확인하려면 리소스에서 drift detection을 사용합니다.
관련 정보
AWS CLI를 사용하여 기존 리소스를 스택으로 가져오기
리소스 유형 지원