AWS CloudFormation 콘솔에서 다음과 같은 오류가 표시되었습니다. "This template does not include any resources to import. Learn more."(이 템플릿에는 가져올 리소스가 없습니다. 자세히 알아보기)
간략한 설명
이 오류는 AWS CloudFormation 콘솔을 사용해 CloudFormation 외부에서 생성된 리소스를 기존 스택에 가져오려 할 때 발생합니다.
다음과 같은 상황에서 AWS CloudFormation 콘솔을 사용할 때 이 오류가 발생할 수 있습니다.
- 조건부 리소스. 가져오는 리소스에 false로 평가되는 조건과 연결된 조건 키가 있습니다.
- AWS Serverless Application Model(AWS SAM) 템플릿. AWS CloudFormation 콘솔은 리소스를 가져올 때 변환 섹션을 지원하지 않습니다. AWS::Serverless 변환을 사용하는 템플릿이 있는 리소스는 가져올 수 없습니다.
- Fn::Transform. AWS CloudFormation 콘솔은 리소스를 가져올 때 내장 함수 Fn::Transform의 사용을 지원하지 않습니다.
이 오류를 해결하려면 AWS CloudFormation 콘솔 대신 AWS Command Line Interface(AWS CLI)를 사용할 수 있습니다.
조건부 리소스에 대한 이 오류를 해결하려면 가져오는 리소스에 대하여 조건 키 아래에 지정된 조건이 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를 사용하여 기존 리소스를 스택으로 가져오기
가져오기 및 드리프트 감지 작업을 지원하는 리소스