CloudFormation에서 "Model validation failed (#: extraneous key [Key] is not permitted)" 오류를 해결하려면 어떻게 해야 합니까?

3분 분량
0

스택 이벤트에서 "Model validation failed (#: extraneous key [Key] is not permitted)" 오류가 발생합니다. 이 오류는 AWS CloudFormation 명령줄 인터페이스(CLI)를 사용하여 사용자 지정 리소스 공급자로 리소스를 만들 때 발생합니다.

간략한 설명

리소스 공급자를 사용하여 속성이 있는 리소스를 만들려고 할 때 이 오류가 발생합니다. 그러나 리소스 공급자 스키마에서 하나 이상의 속성을 정의하지 않았거나 예약된 속성을 사용하고 있습니다.

리소스 공급자 사용과 관련된 다른 오류 때문에 문제를 겪고 있는 경우에는 다음 문서에서 추가적인 문제 해결 단계를 참조하세요.

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우, 최신 버전의 AWS CLI를 사용하고 있는지 확인합니다.

해결 방법

1.    CloudFormation 템플릿에 정의된 속성이 organization-service-resource.json 파일에도 정의되어 있는지 확인합니다.

참고: 리소스 공급자 스키마 파일은 organization-service-resource.json 형식의 JSON 파일이며 프로젝트의 루트 디렉터리에 있습니다.

2.    속성을 올바르게 정의한 경우 cfn generate, mvn package, cfn submit 명령을 차례로 실행하여 프로젝트가 성공적으로 구축되었는지 확인합니다. 예를 들어 다음과 같습니다.

$ cfn generate
Generated files for Organization::Service::Resource
$ mvn package
[INFO] Scanning for projects...
[INFO] 
[INFO] --< software.organization.service.resource:organization-service-resource-handler >--
[INFO] Building organization-service-resource-handler 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  21.690 s
[INFO] Finished at: 2020-07-14T16:02:47-05:00
[INFO] ------------------------------------------------------------------------
$ cfn submit 
Successfully submitted type. Waiting for registration with token '12345a-abcde-6789-abc1-a1234b567891' to complete.
{'ProgressStatus': 'COMPLETE', 'Description': 'Deployment is currently in DEPLOY_STAGE of status COMPLETED' , 'TypeArn': 'arn:aws:cloudformation:us-east-1:1234567891:type/resource/Organization-Service-Resource', 'TypeVersionArn': 'arn:aws:cloudformation:us-east-1:1234567891:type/resource/Organization-Service-Resource/00000035', 'ResponseMetadata': {'RequestId': '123a1234-b123-4567-abcd-123a123b1c1d', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '123a1234-b123-4567-abcd-123a123b1c1d', 'content-type': 'text/xml', 'content-length': '952', 'date': 'Tue, 14 Jul 2020 21:16:17 GMT'}, 'RetryAttempts': 0}}

3.    기본적으로 사용할 프로젝트의 현재 버전을 설정하기 위해 다음 명령을 실행합니다.

aws cloudformation set-type-default-version --type RESOURCE --type-name Organization::Service::Resource --version-id 00000005

참고: --type-name--version-id를 각각 리소스 유형의 이름과 TypeVersionArn 키에서 cfn submit에 의해 반환된 빌드의 최신 버전으로 바꾸세요.

4.    1~3단계로 문제가 해결되지 않으면 리소스 공급자 스키마와 CloudFormation 템플릿 모두에서 속성 이름을 변경하여 예약된 속성을 사용하고 있는 것인지 확인합니다. 그런 후에 리소스 유형을 다시 구축하고 등록한 다음, 다른 속성 이름으로 CloudFormation을 다시 사용하여 리소스를 생성해 봅니다.

다음 팁을 고려하세요.

단위 테스트가 완료되지 않았는데 테스트를 건너뛰려면 mvn package 대신 mvn -Dmaven.test.skip=true package를 실행합니다.

유형 버전을 성공적으로 등록한 후 현재 유형 버전을 기본값으로 설정하려면 --set-default 옵션을 cfn submit으로 지정합니다. 예를 들어 다음과 같습니다.

$ cfn submit --set-default

참고: 자세한 내용은 submit을 참조하세요.

프로젝트의 루트 디렉토리에서 /target/surefire-reports 디렉토리로 이동하여 테스트 문제를 해결할 수 있습니다.


관련 정보

AWS CloudFormation CLI

AWS 공식
AWS 공식업데이트됨 2년 전
댓글 없음

관련 콘텐츠