Wie behebe ich den Fehler „Die Modellüberprüfung ist fehlgeschlagen (#: Fremdschlüssel [Schlüssel] ist nicht zulässig)“ in CloudFormation?

Lesedauer: 3 Minute
0

In meinen Stack-Ereignissen erhalte ich den Fehler „Modellüberprüfung fehlgeschlagen (#: Fremdschlüssel [Schlüssel] ist nicht zulässig)“. Dieser Fehler tritt auf, wenn ich eine Ressource mithilfe eines benutzerdefinierten Ressourcenanbieters mit der AWS CloudFormation Command Line Interface (CLI) erstelle.

Kurzbeschreibung

Sie erhalten diesen Fehler, wenn Sie versuchen, mithilfe Ihres Ressourcenanbieters eine Ressource mit Eigenschaften zu erstellen. Sie haben jedoch keine oder mehrere Eigenschaften im Ressourcenanbieter-Schema definiert oder Sie verwenden reservierte Eigenschaften.

Wenn Sie Probleme mit anderen Fehlern im Zusammenhang mit der Verwendung eines Ressourcenanbieters haben, finden Sie in den folgenden Artikeln weitere Schritte zur Fehlerbehebung:

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS-CLI-Version verwenden.

Behebung

  1. Vergewissern Sie sich, dass die in Ihrer CloudFormation-Vorlage definierten Eigenschaften auch in Ihrer Datei organization-service-resource.json definiert sind.

**Hinweis:**Die Schemadatei des Ressourcenanbieters ist eine JSON-Datei im Format organization-service-resource.json und befindet sich im Stammverzeichnis Ihres Projekts.

  1. Wenn Sie die Eigenschaften korrekt definiert haben, überprüfen Sie, ob Ihr Projekt erfolgreich erstellt wurde, indem Sie die Befehle cfn generate, mvn package und cfn submit nacheinander ausführen. Zum Beispiel:
$ 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}}
  1. Führen Sie den folgenden Befehl aus, um die aktuelle Version Ihres Projekts so einzustellen, dass sie standardmäßig verwendet wird:
aws cloudformation set-type-default-version --type RESOURCE --type-name Organization::Service::Resource --version-id 00000005

**Hinweis:Ersetzen Sie die Werte für ** --type-name und --version-id durch den Namen Ihres Ressourcentyps und die neueste Version des Builds, die von cfn submit im TypeVersionARN-Schlüssel zurückgegeben wurde.

  1. Wenn die Schritte 1 bis 3 das Problem nicht lösen, überprüfen Sie, ob Sie eine reservierte Eigenschaft verwenden, indem Sie den Namen der Eigenschaft sowohl im Ressourcenanbieter-Schema als auch in Ihrer CloudFormation-Vorlage ändern. Erstellen Sie dann Ihren Ressourcentyp neu, registrieren Sie ihn und versuchen Sie erneut, die Ressource mithilfe von CloudFormation mit dem anderen Eigenschaftsnamen zu erstellen.

Beachten Sie die folgenden Tipps:

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 Typversion nach einer erfolgreichen Registrierung der Typversion als Standard festzulegen, geben Sie die Option --set-default für cfn submit an. Zum Beispiel:

$ cfn submit --set-default

**Hinweis:**Weitere Informationen finden Sie unter Senden.

Sie können die Tests beheben, indem Sie vom Stammverzeichnis Ihres Projekts zum Verzeichnis /target/surefire-reports navigieren.


Ähnliche Informationen

AWS CloudFormation CLI

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren