Come posso risolvere l'errore "Model validation failed (#: extraneous key [Key] is not permitted)" in CloudFormation?
Ho utilizzato un provider di risorse personalizzato nell'interfaccia a riga di comando (CFN-CLI) di AWS CloudFormation per creare una risorsa. Tuttavia, ho ricevuto l'errore "Model validation failed (#: extraneous key [Key] is not permitted)" nei miei eventi di stack CloudFormation.
Risoluzione
È possibile utilizzare il provider di risorse per creare solo tipi di risorse con proprietà. Quando non si definiscono le proprietà nello schema del tipo di risorsa o si utilizzano proprietà riservate, viene visualizzato l'errore di convalida del modello.
Per risolvere questo problema, completa i seguenti passaggi:
-
Verifica che le proprietà definite nel modello CloudFormation siano definite anche nel file di schema del tipo di risorsa. Puoi trovare il file nella directory principale del tuo progetto.
Nota: il file utilizza il formato di denominazione organization-service-resource.json. Ad esempio, article-ec2-subnet.json è il nome di file per una risorsa Amazon Elastic Cloud Compute (Amazon EC2) denominata Article::EC2::Subnet. -
Verifica se stai utilizzando una proprietà riservata. Se stai utilizzando una proprietà riservata, modifica il nome della proprietà sia nello schema del tipo di risorsa che nel modello CloudFormation.
-
Per verificare che il progetto sia stato creato correttamente, esegui i comandi cfn validate, cfn generate e cfn submit in sequenza. Se stai usando il plugin Java, esegui i comandi cfn validate, cfn generate, mvn package e cfn submit in sequenza.
Esempio:cfn validate Resource schema is valid. 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}}
Nota: se i test di unità non sono completi e desideri saltarli, esegui il pacchetto mvn -Dmaven.test.skip=true invece di mvn package.
-
Per impostare la versione corrente del progetto come predefinita, esegui il comando set-type-default-version AWS Command Line Interface (AWS CLI):
aws cloudformation set-type-default-version --type RESOURCE --type-name Organization::Service::Resource --version-id 00000005
Nota: sostituisci Organization::Service::Resource con il nome del tipo di risorsa. Inoltre, sostituisci 00000005 con l'ultima versione della build restituita da cfn submit nella chiave TypeVersionArn. Se visualizzi dei messaggi di errore quando esegui i comandi dell'interfaccia a riga di comando AWS, consulta Troubleshoot AWS CLI errors. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
-
Esegui il comando seguente per impostare la versione del tipo corrente come predefinita:
cfn submit --set-default
Per ulteriori informazioni, consulta submit.
-
Per risolvere i problemi relativi ai test, utilizza il file rpdk.log nella directory principale del progetto.
Se utilizzi un fornitore di risorse e ricevi un tipo di errore diverso, consulta i seguenti articoli di AWS Knowledge Center per ulteriori passaggi di risoluzione dei problemi:
- Come posso risolvere l'errore "La specifica della risorsa non è valida" quando eseguo il comando cfn generate utilizzando la CLI di CloudFormation in CloudFormation?
- Come posso risolvere l'errore "Timeout risorsa in attesa della creazione di una risorsa fisica" quando creo una risorsa utilizzando il mio tipo di provider di risorse in CloudFormation?
- Come posso risolvere l'errore "L'attributo 'chiave' non esiste" quando utilizzo la funzione Fn::GetAtt sulla mia risorsa del provider di risorse in CloudFormation?
- Come posso risolvere l'errore "java.lang.ClassNotFoundException: com.example.package.resource.HandlerWrapper" in CloudFormation?
Informazioni correlate
CloudFormation CLI sul sito web di GitHub.

Contenuto pertinente
- AWS UFFICIALEAggiornata 3 anni fa