Wie behebe ich den Fehler „Die Modellüberprüfung ist fehlgeschlagen (#: Fremdschlüssel [Schlüssel] ist nicht zulässig)“ in CloudFormation?
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:
- Wie behebe ich den Fehler „Resource specification is invalid“ (Ressourcenspezifikation ist ungültig), wenn ich den Befehl cfn generate mit der CloudFormation CLI in AWS CloudFormation ausführe?
- Wie behebe ich den Fehler "Resource timed out waiting for creation of physical resource" (Zeitüberschreitung bei der Erstellung einer physischen Ressource), wenn ich eine Ressource mit meinem Ressourcenanbieter-Typ in AWS CloudFormation erstelle?
- Wie behebe ich den Fehler „Attribute 'Key' does not exist“ (Attribut-'Schlüssel' existiert nicht), wenn ich die Funktion Fn::GetAtt bei meiner Ressourcenanbieter-Ressource in AWS CloudFormation verwende?
- Wie behebe ich den Fehler „java.lang.ClassNotFoundException: com.example.Package.Resource.HandlerWrapper“ in AWS CloudFormation?
Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS-CLI-Version verwenden.
Behebung
- 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.
- 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}}
- 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.
- 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
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren