2016-06-30 11 views
0

Ich habe einen http Endpunktname - HE. Dieser 'HE'-Endpunkt ist mit der Lambda-Funktion' L 'verbunden.Wie transformiere ich die zurückgegebene Ausnahme von der AWS Java Lambda-Funktion in das API-Gateway?

So HE -> L

Auf einiger Situation 'L' Rückkehr Ausnahme in diesem Format:

{ "errormessage": "Name John Doe ist ungültig Ausnahme aufgetreten ...", "errortype": "java.lang.Exception" "stacktrace": [ "example.Hello.handler (Hello.java:9)" "sun.reflect.NativeMethodAccessorImpl.invoke0 (Mutter Method)", "sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)", "sun.reflect.DelegatingMethodAccesso rImpl.invoke (DelegatingMethodAccessorImpl.java:43)“, "java.lang.reflect.Method.invoke (Method.java:497)" ] }

Und das gleiche wieder von der 'HE' wie .

Wie kann ich mich bei der Integration Response (AWS API-Gateway) verwenden können, 'er', so dass es nur die folgende angezeigt werden sollen:

{ "errormessage":. „Namen John Doe ist ungültig Ausnahme aufgetreten ... " }

Antwort

1

Ich bin mir nicht sicher, ob ich Ihre Einrichtung richtig verstehe. Ich gehe davon aus, dass Ihr API-Gateway Ihre Lambda-Funktion aufruft und dass Ihre Lambda-Funktion die von Ihnen angegebene Zeichenfolge als Fehlerobjekt zurückgibt. In diesem Fall ...

Fügen Sie Ihrer Methode eine neue Methodenantwort hinzu. Setzen Sie den HTTP-Status der Methodenantwort auf den HTTP-Statuscode, den Sie zurückgeben möchten, in diesem Fall 400.

Fügen Sie Ihrer Methode eine neue Integrationsantwort hinzu.

Setzen Sie den "Lambda Error Regex" der Integrationsantwort auf eine Regex, die den Fehler eindeutig identifiziert. ". Name. ist ungültig. *" Sollte für diesen Fall funktionieren.

Setzen Sie den "Method response status" auf den HTTP-Status der Methodenantwort (in meinem Beispiel 400).

Treffer speichern. Erweitern Sie die Integrationsantwort. Erweitern Sie "Körperzuordnungsvorlagen". Klicken Sie auf "Zuordnungsvorlage hinzufügen". Setzen Sie den Inhaltstyp auf "application/json" (oder den gewünschten Inhaltstyp). Klicken Sie auf das Kontrollkästchen.

im Mapping-Template-Editor-Box, eine Mapping-Vorlage so ...

#set($inputRoot = $input.path('$')) 
 
{"errorMessage" : "$input.path('$.errorMessage')"}

Wenn ich-Gateway einen HTTP-Endpunkt ruft mißverstanden Ihre Set-up und Ihre API hinzufügen, dann ist der Ansatz ähnlich, aber die Terminologie einiger Begriffe ändert sich.