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

최종 업데이트 날짜: 2020년 8월 17일

AWS CloudFormation에서 리소스 공급자를 사용하여 리소스를 만들 때 스택 이벤트에서 "Model validation failed (#: extraneous key [Key] is not permitted)" 오류가 발생합니다. 이 오류를 해결하려면 어떻게 해야 합니까?

간략한 설명

해결 방법

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

다음 팁을 고려하세요.

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

유형 버전을 성공적으로 등록한 후 현재 유형 버전을 기본값으로 설정하려면 다음 예제에 따라 --set-default option to cfn submit으로 지정합니다.

$ cfn submit --set-default

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

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


이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?