2016-06-14 6 views
2

Ich habe eine Dynamodb-Tabelle mit ein paar Felder - my_id ist der PrimaryKey. Im API-Gateway habe ich eine Antwort mit einer Methode eingerichtet, die einen Parameter {my_id} aufnimmt.AWS API Gateway - Wechsel zu 404, wenn Abfrage nichts zurückgibt

Dann habe ich eine Integrationsanforderungszuordnungsvorlage, die den übergebenen Parameter übernimmt und die Tabelle abfragt, um alle Felder zurückzugeben, die übereinstimmen.

Dann habe ich eine Integration Antwort Mapping-Vorlage, die die zurückgegebenen Elemente wie ich will.

Das alles funktioniert perfekt.

Die Sache, die ich nicht herausfinden kann, ist, wenn der Parameter, der übergeben wird, nicht mit irgendetwas in der Tabelle übereinstimmt, wie bekomme ich es von einem Status 200 in einen 404 zu ändern?

Von dem, was ich sagen kann, wenn der übergebene Parameter mit nichts übereinstimmt, verursacht es keinen Fehler, es gibt einfach nichts zurück.

Es sieht so aus, als müsste ich die Mapping-Vorlage in der Integrationsantwort ändern, um zuerst zu prüfen, ob die Parameter leer sind und dann irgendwie den Antwortstatus zu ändern.

Ich kann Informationen über diese Art von Sache mit Menschen mit Lambda finden, aber ich benutze nicht Lambda - nur die Dynamodb-Tabelle und das API-Gateway.

+0

Haben Sie eine Method Response von 404 für Ihre API Gateway GET-Methode eingerichtet? DynamoDB-Antworten geben einen Fehlercode zurück, den Sie einem API-Gateway-Fehlercode in der Integrationsantwort zuordnen können. [Docs hier] (http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html) – esperluette

+0

Das Problem ist, dass ich eine Abfrage ausführen und wenn die Abfrage keine Ergebnisse gibt, gibt es keinen Fehler . Ich würde einen Fehler bekommen, wenn die Tabelle falsch war, aber die Tabelle ist nie falsch, da sie in die Mapping-Vorlage eingebacken ist. Ich möchte einen Fehler haben, wenn die Abfrage keine Ergebnisse zurückgibt. – Ron

+0

Die Dokumentation hier (http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html) scheint darauf hinzuweisen, dass Sie eine große JSON-Antwort erhalten, die ein "Count": Anzahl-Paar enthält - - Es sieht so aus, als ob Sie möglicherweise die Body-Mapping-Vorlage der Integrationsantwort verwenden könnten, um das JSON zu analysieren und zu prüfen, ob das Count-Element 0 ist und es einem 404-Fehler zuordnet - mehr Dokumentation hier: http: // docs .aws.amazon.com/apigateway/latest/developerguide/models-mappings.html – esperluette

Antwort

0

Das Api-Gateway unterstützt derzeit die Zuordnung des Statuscodes über den Statuscode der Integrationsantwort (Hier dynamobb response code). Die einzige Problemumgehung besteht darin, eine Lambda-Funktion zu verwenden, die verschiedene Fehlermeldungen ausgibt, die mithilfe einer Fehlerregex http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-method-settings-execution-console.html zugeordnet werden können.

+0

Leider stimmt das. Vielleicht werden sie es eines Tages ändern. – Ron