AWS CloudFormation w/ AWS::ApiGateway::RestApi gibt Ungültige REST-API identifier angegeben
Ich bin versucht, zu erstellen eine AWS::ApiGateway::RestApi
Ressource mit CloudFormation aber beim laufen
aws cloudformation-Bereitstellung --template-Datei lorem.json --stack-name lorem
Endet dies scheiterte und beim Blick in die CloudFormation-Konsole sehe ich, dass der Fehler Invalid REST API identifier specified
.
Hier ist mein lorem.json
Datei:
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "lorem.io Stack",
"Resources": {
"API": {
"Type" : "AWS::ApiGateway::RestApi",
"Properties" : {
"FailOnWarnings": true,
"BodyS3Location": {
"Bucket": "cloudformation.lorem.io",
"Key": "open-api.json"
}
}
}
}
}
Hier bin ich der Angabe BodyS3Location
die Punkte in ein S3-Objekt, die Folgendes enthält:
{
"swagger": "2.0",
"info": {
"title": "Lorem.IO API",
"version": "1.0.0"
},
"definitions": {
"Generator": {
"type": "object",
"properties": {
"title": {
"type": "string"
}
}
}
},
"produces": [
"application/json"
],
"paths": {
"/generators": {
"get": {
"responses": {
"200": {
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/Generator"
}
}
}
}
}
}
}
}
Weil ich bin die Bereitstellung dieser Datei nach der Dokumentation ich sollte nicht den Namen von der RestApi also ich glaube nicht, dass das das problem. Jede Idee, wie ich gehen würde, über das Debuggen genau das, was es ist unglücklich darüber?
Update #1
Habe ich entfernt eine Menge meiner Konfiguration, so dass die einzige Eigenschaft, die ich nun angeben ist name
und ich bekomme immer noch den gleichen Fehler (Invalid REST API identifier specified
):
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "lorem.io Stack",
"Resources": {
"API": {
"Type" : "AWS::ApiGateway::RestApi",
"Properties" : {
"FailOnWarnings": true,
"Name": "Hello World"
}
}
}
}
Entsprechend der Dokumentation Name
ist das einzige erforderliche Attribut - Ist das ein bug w/CloudFormation-oder bin ich etwas fehlt?
- hoffe, dies hilft dir : github.com/serverless/serverless/issues/173
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sowohl die original-Vorlage und das "Update 1" minimal-Beispiel für Sie bereitgestellt wurde erfolgreich in meine lokale tests, und ich sehe keine offensichtlichen Probleme mit einer von Ihnen.
Bemerkte ich, dass die event-log screenshot oben gesagt
UPDATE_FAILED
stattCREATE_FAILED
, und denke, dass das Problem irgendwo in dem Versuch, "update" der bestehenden Ressource.Ist es möglich, dass die ursprüngliche
RestAPI
Ressource wurde manuell geändert/gelöscht, nachdem die CloudFormation-Stacks, die erste Schöpfung? Wenn dem so ist, werden Sie gewarnt, dass dies gegen die "Verwalten Sie Alle Stack-Ressourcen Über die AWS CloudFormation" best practice, und könnte die Quelle der Fehler:Sich zu erholen, Sie könnte sich ändern, den logischen Namen der Ressource (z.B. von
API
zuAPI2
) und aktualisieren Sie den Stapel wieder ein. Dadurch wird eine neueRestAPI
Ressource angelegt werden getrennt von den alten.Verbrachte ich eine gute Weile, versucht zu replizieren Nutzung der
lorem.json
undBodyS3Location
Inhalte, die Sie zur Verfügung gestellt, aber nicht in der Lage war den Fehler zu reproduzieren. Gibt es eine weitere Vorlage, die Inhalte oder die hintergrund-Informationen fehlen hier?Ich denke der Fehler liegen kann mit Ihrem Fors-Vorlage, nicht CloudFormation. Ich war in der Lage, den Fehler zu reproduzieren in der AWS-Konsole durch absichtliches hinzufügen von eine ungültige Methode, um die Swagger-Vorlage (
foobar
stattget
), dann den stack erstellen. Der stack wurde erfolgreich erstellt, aber beim anzeigen der API in der Konsole angezeigt dein Fehler.Ich sah sogar an der Geschichte von diesem post und versucht zu replizieren Nutzung der original Swagger Vorlage, aber der Stapel würde nicht erstellen. Dies führt mich zu glauben, es gibt einige, die die Geschichte mit Ihren stack, und vielleicht die API-Ressource erstellt wurde, zunächst mit, wie die Fehlermeldung schon sagt, eine "Ungültige REST-API identifier specified".