Wie behebe ich den Fehler „Model validation failed (#: extraneous key [Key] is not permitted)“ in CloudFormation?
Ich habe einen benutzerdefinierten Ressourcenanbieter im AWS CloudFormation Command Line Interface (CFN-CLI) verwendet, um eine Ressource zu erstellen. Ich habe jedoch in meinen CloudFormation-Stack-Ereignissen den Fehler „Model validation failed (#: extraneous key [Key] is not permitted)“ erhalten.
Lösung
Sie können Ihren Ressourcenanbieter verwenden, um nur Ressourcentypen mit Eigenschaften zu erstellen. Wenn Sie im Ressourcentypschema keine Eigenschaften definieren oder reservierte Eigenschaften verwenden, wird der Modellvalidierungsfehler angezeigt.
Gehen Sie wie folgt vor, um dieses Problem zu beheben:
-
Stellen Sie sicher, dass die definierten Eigenschaften in Ihrer CloudFormation-Vorlage auch in Ihrer Ressourcentyp-Schemadatei definiert sind. Sie finden die Datei im Stammverzeichnis Ihres Projekts.
Hinweis: Die Datei verwendet das Benennungsformat organization-service-resource.json. Beispielsweise ist article-ec2-subnet.json der Dateiname für eine Amazon Elastic Cloud Compute (Amazon EC2) -Ressource mit dem Namen Article::EC2::Subnet. -
Prüfen Sie, ob Sie eine reservierte Eigenschaft nutzen. Wenn Sie eine reservierte Eigenschaft verwenden, ändern Sie den Namen der Eigenschaft sowohl im Ressourcentypschema als auch in Ihrer CloudFormation-Vorlage.
-
Um zu überprüfen, ob Ihr Projekt erfolgreich erstellt wurde, führen Sie nacheinander die Befehle cfn validate, cfn generate und cfn submit aus. Wenn Sie das Java-Plugin verwenden, führen Sie nacheinander die Befehle cfn validate, cfn generate, mvn package und cfn submit aus.
Beispiel: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}}
Hinweis: Wenn Ihre Komponententests noch nicht abgeschlossen sind und Sie die Tests überspringen möchten, führen Sie mvn -Dmaven.test.skip=true package anstelle von mvn package aus.
-
Um die aktuelle Version Ihres Projekts als Standard festzulegen, führen Sie den Befehl set-type-default-version im AWS Command Line Interface (AWS CLI) aus:
aws cloudformation set-type-default-version --type RESOURCE --type-name Organization::Service::Resource --version-id 00000005
Hinweis: Ersetzen Sie Organization::Service::Resource durch den Namen Ihres Ressourcentyps. Ersetzen Sie außerdem 00000005 durch die neueste Version des Builds, die der cfn submit im Schlüssel TypeVersionArn zurückgibt. Wenn Sie beim Ausführen von Befehlen in AWS CLI Fehlermeldungen erhalten, finden Sie weitere Informationen unter Beheben von AWS CLI-Fehlern. Stellen Sie außerdem sicher, dass Sie die neueste Version von AWS CLI verwenden.
-
Führen Sie den folgenden Befehl aus, um die aktuelle Typversion als Standard festzulegen:
cfn submit --set-default
Weitere Informationen finden Sie unter Senden.
-
Verwenden Sie zur Fehlerbehebung bei den Tests die Datei rpdk.log im Stammverzeichnis Ihres Projekts.
Wenn Sie einen Ressourcenanbieter verwenden und eine andere Art von Fehler erhalten, finden Sie in den folgenden Artikeln des AWS Knowledge Center weitere Schritte zur Fehlerbehebung:
- Wie behebe ich den Fehler „Resource specification is invalid“, wenn ich den Befehl cfn generate mit dem CloudFormation-CLI ausführe?
- Wie behebe ich den Fehler „Resource timed out waiting for creation of physical resource“, wenn ich eine Ressource mithilfe meines Ressourcenanbieters in CloudFormation erstelle?
- Wie behebe ich den Fehler „Attribute 'Key' does not exist“, wenn ich die Funktion Fn::GetAtt für meine Ressourcenanbieter-Ressource in CloudFormation verwende?
- Wie behebe ich den Fehler „java.lang.ClassNotFoundException: com.example.package.resource.HandlerWrapper“ in CloudFormation?
Ähnliche Informationen
CloudFormation CLI auf der GitHub-Website.
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Monat
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor einem Monat