Como resolvo o erro “Falha na validação do modelo (#: chave estranha [chave] não é permitida)” no CloudFormation?

4 minuto de leitura
0

Eu recebo o erro “Falha na validação do modelo (#: chave estranha [chave] não é permitida)” em meus eventos de pilha. Esse erro ocorre quando eu crio um recurso usando um provedor de recursos personalizado com a interface de linha de comando (CLI) do AWS CloudFormation.

Breve descrição

Você recebe esse erro ao tentar criar um recurso com propriedades usando seu provedor de recursos. No entanto, você não definiu uma ou mais propriedades no esquema do provedor de recursos ou está usando propriedades reservadas.

Se você estiver tendo problemas com outros erros relacionados ao uso de um provedor de recursos, consulte os artigos a seguir para obter etapas adicionais de solução de problemas:

Observação: Se você receber erros ao executar comandos da AWS CLI, certifique-se de estar usando a versão mais recente da AWS CLI.

Resolução

1.Confirme se as propriedades definidas no modelo do CloudFormation também estão definidas no arquivo organization-service-resource.json.

**Observação:**O arquivo de esquema do provedor de recursos é um arquivo JSON no formato organization-service-resource.json e está localizado no diretório raiz do seu projeto.

2.Se você definiu as propriedades corretamente, confirme se seu projeto foi criado com êxito executando os comandos cfn generate, mvn package e **cfn submit ** em sequência. Por exemplo:

$ 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.Para definir a versão atual do seu projeto para ser usada por padrão, execute o seguinte comando:

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

Observação: substitua os valores de --type-name e --version-id pelo nome do seu tipo de recurso e pela versão mais recente da compilação retornada por cfn submit na chave TypeVersionArn.

4.Se as etapas 1 a 3 não resolverem o problema, verifique se você está usando uma propriedade reservada alterando o nome da propriedade no esquema do provedor de recursos e no modelo do CloudFormation. Em seguida, reconstrua e registre seu tipo de recurso e tente criar o recurso usando o CloudFormation novamente com o nome de propriedade diferente.

Considere as dicas a seguir:

Se seus testes de unidade não estiverem concluídos e você quiser ignorá-los, execute o pacote mvn-dmaven.test.skip=true em vez do pacote mvn.

Para definir a versão do tipo atual como padrão após um registro bem-sucedido da versão do tipo, especifique a opção --set-default para cfn submit. Por exemplo:

$ cfn submit --set-default

**Observação:**Para mais informações, consulte submeter.

Você pode solucionar os testes navegando até o diretório /target/surefire-reports do diretório raiz do seu projeto.


Informações relacionadas

AWS CLI CloudFormation

AWS OFICIAL
AWS OFICIALAtualizada há um ano