Wie behebe ich den Fehler „Model validation failed (#: extraneous key [Key] is not permitted)“ in CloudFormation?

Lesedauer: 3 Minute
0

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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. Führen Sie den folgenden Befehl aus, um die aktuelle Typversion als Standard festzulegen:

    cfn submit --set-default

    Weitere Informationen finden Sie unter Senden.

  6. 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:

Ähnliche Informationen

CloudFormation CLI auf der GitHub-Website.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Monat