Come posso risolvere l'errore "Convalida del modello non riuscita (#: chiave estranea [chiave] non consentita)" in CloudFormation?
Ricevo l'errore "Convalida del modello non riuscita (#: chiave estranea [chiave] non consentita)" nei miei eventi di stack. Questo errore si verifica quando creo una risorsa utilizzando un provider di risorse personalizzato con l'interfaccia a riga di comando (CLI) di AWS CloudFormation.
Breve descrizione
Questo errore viene visualizzato quando si tenta di creare una risorsa con proprietà utilizzando il proprio provider di risorse. Tuttavia, non hai definito una o più proprietà nello schema del provider di risorse o stai utilizzando proprietà riservate.
Se riscontri problemi con altri errori relativi all'utilizzo di un provider di risorse, consulta i seguenti articoli per ulteriori procedure di risoluzione dei problemi:
- Come posso risolvere l'errore "La specifica della risorsa non è valida" quando eseguo il comando cfn generate utilizzando l'interfaccia a riga di comando di CloudFormation in AWS CloudFormation?
- Come posso risolvere l'errore "Tempo scaduto in attesa della creazione di una risorsa fisica" quando creo una risorsa utilizzando il mio tipo di provider di risorse in AWS CloudFormation?
- Come posso risolvere l'errore "L'attributo 'Key' non esiste" quando utilizzo la funzione Fn::GetAtt sulla mia risorsa del fornitore di risorse in AWS CloudFormation?
- Come posso risolvere l'errore "java.lang.ClassNotFoundException: com.example.package.resource.handlerWrapper" in AWS CloudFormation?
Nota: se ricevi errori durante l'esecuzione dei comandi dell'interfaccia a riga di comando di AWS, assicurati di utilizzare la versione più recente dell'interfaccia a riga di comando di AWS.
Risoluzione
- Verifica che le proprietà definite nel tuo modello CloudFormation siano definite anche nel tuo file organization-service-resource.json.
Nota: il file di schema del provider di risorse è un file JSON nel formato organization-service-resource.json e si trova nella directory principale del progetto.
- Se hai definito correttamente le proprietà, conferma che il tuo progetto sia stato creato correttamente eseguendo i comandi cfn generate, mvn package e cfn submit in sequenza. Ad esempio:
$ 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}}
- Per impostare la versione corrente del progetto da utilizzare come impostazione predefinita, esegui il seguente comando:
aws cloudformation set-type-default-version --type RESOURCE --type-name Organization::Service::Resource --version-id 00000005
Nota: sostituisci i valori per --type-name e --version-id con il nome del tuo tipo di risorsa e l'ultima versione della build restituita da cfn submit nella chiave TypeVersionArn.
- Se i passaggi 1-3 non risolvono il problema, verifica se stai utilizzando una proprietà riservata modificando il nome della proprietà sia nello schema del provider di risorse che nel modello CloudFormation. Quindi, ricostruisci e registra il tuo tipo di risorsa e prova a creare nuovamente la risorsa utilizzando CloudFormation con il nome di proprietà diverso.
Considera i seguenti suggerimenti:
Se i tuoi unit test non sono completi e desideri saltare i test, esegui il pacchetto mvn -dmaven.test.skip=true invece del pacchetto mvn.
Per impostare la versione del tipo corrente come predefinita dopo una corretta registrazione della versione del tipo, specifica l'opzione --set-default su cfn submit. Ad esempio:
$ cfn submit --set-default
Nota: per ulteriori informazioni, consulta submit.
Puoi risolvere i test accedendo alla directory /target/surefire-reports dalla directory principale del tuo progetto.
Informazioni correlate
Contenuto pertinente
- AWS UFFICIALEAggiornata 4 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 mesi fa