CloudFormation의 변경 세트 오류를 해결하려면 어떻게 해야 합니까?
리소스를 AWS CloudFormation 스택으로 가져오려고 하면 오류가 발생합니다.
해결 방법
오류 유형에 따라 관련 섹션의 단계를 완료하여 오류를 해결하십시오.
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
수정된 출력 오류
두 템플릿의 출력 섹션은 동일해야 합니다. CloudFormation 콘솔을 통해 출력이 있는 리소스 가져오기 템플릿으로 새 스택을 만들면 다음과 비슷한 오류가 표시됩니다.
"There was an error creating this change set. As part of the import operation, you cannot modify or add [Outputs]"
리소스를 스택으로 가져오려고 할 때도 이 오류가 발생합니다.
이 오류를 해결하려면 최신 CloudFormation 템플릿의 출력 섹션이 스택에서 현재 사용하는 템플릿과 일치하는지 확인하십시오. 값이 동일하지 않은 경우 현재 템플릿의 출력 섹션에 있는 값 및 출력과 일치하도록 최신 템플릿을 업데이트하십시오.
중요: 가져오기 작업에는 논리적 ID, 설명, 값, 내보내기 또는 출력에 대한 추가 및 수정 사항이 포함될 수 없습니다.
가져오기 작업이 완료되면 출력 구성의 변경 사항으로 스택을 업데이트합니다. 또는 AWS 리소스를 CloudFormation 스택으로 자동으로 가져올 수 있습니다.
스택 속성의 유효성 검사 오류
AWS CLI 또는 AWS SDK를 사용하여 수정되거나 추가된 스택 속성이 포함된 IMPORT 유형 변경 세트를 만들면 다음과 비슷한 오류가 표시됩니다.
"An error occurred (ValidationError) when calling the CreateChangeSet operation: As part of the import operation, you cannot modify or add [Tags]"
이 오류는 IMPORT 유형 변경 세트에 수정된 스택 속성이 포함되어 있을 때 발생합니다.
오류를 해결하려면 변경 세트 생성 작업에 포함된 스택 속성이 스택의 현재 속성 값과 일치하는지 확인하십시오.
중요: 새 속성 값을 업데이트하거나 추가하지 마십시오.
리소스를 가져온 후 별도의 업데이트 작업을 통해 속성을 업데이트하십시오. 또는 AWS 리소스를 CloudFormation 스택으로 자동으로 가져올 수 있습니다.
수정된 리소스 오류
가져오기 작업 중에는 리소스를 생성, 업데이트 또는 삭제할 수 없습니다. 리소스 가져오기 작업 중에 기존 리소스를 수정하면 다음과 비슷한 오류가 표시됩니다.
"There was an error creating this change set. You have modified resources [ResourceName] in your template that are not being imported. Update, create or delete operations cannot be executed during import operations."
이 오류를 해결하려면 IMPORT 형식 변경 세트 대신 UPDATE 형식 변경 세트를 만드십시오. 이렇게 하면 리소스 변경의 원인을 알 수 있습니다. 그런 다음 기존 리소스에 대해 동일한 리소스 사양을 사용하고 템플릿에 가져올 적절한 리소스만 추가합니다. 또는 AWS 리소스를 CloudFormation 스택으로 자동으로 가져올 수 있습니다.
리소스 가져오기 목록 오류
AWS CLI 또는 AWS SDK를 사용하여 IMPORT 형식 변경 세트를 만들면 다음 오류 메시지 중 하나가 표시됩니다.
<ResourceName>"An error occurred (ValidationError) when calling the CreateChangeSet operation: Resources [] is missing from ResourceToImport list"
"Error: "An error occurred (ValidationError) when calling the CreateChangeSet operation: Must Provide at least one resource to import""
이 오류를 해결하려면 AWS CLI 명령의 --resources-to-import 속성에 물리적 ID를 전달해야 합니다. 또는 CreateChangeSet API에서 스택으로 가져오려는 리소스에 대해 ResourceToImport 속성을 사용합니다.
가져오려면 새 리소스에 물리적 ID를 전달해야 합니다. 이 오류를 해결하려면 AWS CLI 명령에 --resources-to-import를 포함하거나 API 호출에 ResourceToImport를 포함했는지 확인하십시오. 또한 가져올 리소스를 나열해야 합니다.
IAM 기능 오류
변경 세트에 포함된 IAM 리소스에 대한 권한이 없는 경우 다음 오류 메시지 중 하나가 표시됩니다.
<StackName>"Error: Failed to create changeset for the stack: , ex: Waiter ChangeSetCreateComplete failed: Waiter encountered a terminal failure state: For expression "Status" we matched expected path: "FAILED" Status: FAILED. Reason: Requires capabilities: [CAPABILITY_NAMED_IAM]"
"When calling the CreateChangeSet operation: Requires capabilities : [CAPABILITY_IAM/CAPABILITY_NAMED_IAM]"
"Please acknowledge all checkboxes before proceeding."
이 오류를 해결하려면 다음 단계를 완료하십시오.
- CloudFormation 콘솔을 엽니다.
- 기존 리소스로 스택 생성 또는 스택 업데이트를 선택합니다.
- 검토 페이지로 이동한 다음 AWS CloudFormation이 IAM 리소스를 만들 수 있음을 인정합니다 / AWS CloudFormation이 사용자 지정 이름으로 IAM 리소스를 만들 수 있음을 인정합니다를 선택합니다.
-또는-
create-stack 및 update-stack AWS CLI 명령을 사용하여 --capabilities 파라미터에 CAPABILITY_IAM 또는 CAPABILITY_NAMED_IAM 값을 지정합니다.
참고: CloudFormation 템플릿에 AWS Identity and Access Management(IAM) 리소스가 포함된 경우 CAPABILITY_IAM을 확인해야 합니다. 템플릿에 IAM 리소스에 대한 사용자 지정 이름이 포함되어 있는 경우 CAPABILITY_NAMED_IAM을 확인해야 합니다. 자세한 내용은 AWS CloudFormation 배포 작업 참조의 기능 섹션을 참조하십시오.
스택 업데이트 작업 중 "Submitted information didn't contain changes" 오류 발생
스택 업데이트 작업 중에 동일한 스택 템플릿을 사용하는 경우 다음 오류 메시지 중 하나가 표시됩니다.
"The submitted information didn't contain changes. Submit different information to create a change set"
"An error occurred (ValidationError) when calling the UpdateStack operation: No updates are to be performed."
이 오류를 해결하려면 다음 작업을 수행하십시오.
- 스택을 변경했는지 확인합니다. CloudFormation은 파라미터 또는 스택 설명에 대한 수정 사항을 스택 템플릿의 변경 사항으로 간주하지 않습니다.
- 리소스에 실질적인 변경 사항이 있는지 확인하십시오. 예를 들어 스택에 설명을 추가하려는 경우, 다음에 스택의 다른 리소스를 업데이트할 때 변경을 수행하십시오.
- 스택에 대한 변경 감지를 활성화하려면 스택 태그 수정과 같은 실질적인 변경을 수행하십시오. 예를 들어 템플릿에 Description만 추가하면 오류가 표시될 수 있습니다. 하지만 ChangeSet를 만들 때 Stack Tags도 수정하면 오류가 표시되지 않습니다.
- 모든 리소스에 사용자 지정 메타데이터를 추가하여 변경을 활성화하십시오.<br id=hardline_break/>
예시 템플릿:
참고: MyResourceType을 리소스 유형으로 바꾸고 MyResourceProperties를 리소스 속성으로 바꾸십시오.Description: This description is the cause of the error when only updating this field. Resources: myResource: Type: MyResourceType Properties: MyResourceProperties Metadata: ### ADD THIS CUSTOM METADATA test: 1 ### ANY KEY-VALUE PAIR
여전히 스택을 업데이트할 수 없는 경우 AWS Support에 문의하십시오.
ExecuteChangeSet API 호출 오류
CreateChangeSet API의 OnStackFailure 파라미터와 ExecuteChangeSet API의 DisableRollback 파라미터를 동시에 사용할 수 없습니다.
"Either DisableRollback or OnStackFailure can be specified, but not both. Validation error as OnStackFailure parameter was specified during CreateChangeSet."
이 오류를 해결하려면 이 두 파라미터를 함께 사용하지 마십시오.
콘솔에서 변경 세트의 입력과 형식 불일치 오류
CloudFormation 템플릿에서 잘못된 형식의 AWS Secrets Manager 동적 참조를 사용하는 경우 다음 오류 중 하나가 표시됩니다.
"Given input did not match expected format"
"Incorrect format is used in the following SSM reference"
이 오류를 해결하려면 Secrets Manager 동적 참조에 대한 모범 사례를 따라야 합니다. 자세한 내용은 동적 참조를 사용하여 다른 서비스에 저장된 값 가져오기를 참조하십시오.
관련 정보
- 언어
- 한국어
