1

Jedes Mal, wenn ich einen Syntaxfehler habe oder ich einfach einen benutzerdefinierten Fehler in meiner AWS Lambda-Funktion senden möchte, bekomme ich die gleiche 502 Bad Gateway-Antwort (Interner Serverfehler).Fehler in AWS Lambda-Funktion mit API-Gateway

habe ich versucht, so einfach Code:

module.exports.saveImage = (event, context, callback) => { 
    callback("the sky is falling!"); // also tried sending new Error("the sky is falling!") 
} 

Und immer noch die gleiche „Interner Serverfehler“ Antwort anstelle des definierten machtlos.

Dies ist meine Funktion in der Datei serverless.yml:

saveImage: 
    handler: handler.saveImage 
    environment: 
    BUCKET: ${self:custom.bucket} 
    events: 
    - http: 
     path: saveImage 
     method: post 
     cors: true, 
     integration: lambda-proxy 

Darf ich etwas von diesem Artikel falsch verstanden? Es scheint die "errorMessage" zu erhalten: "Der Himmel fällt!" in der API-Gateway-Antwort (und das ist, was ich erwarten würde).

https://aws.amazon.com/es/blogs/compute/error-handling-patterns-in-amazon-api-gateway-and-aws-lambda/

+1

Haben Sie den Integrationsantwortbereich des API-Gateways konfiguriert, um die Antwort des Lambda zu verarbeiten? –

+0

Ich habe meine Frage mit der serverless.yml-Konfiguration aktualisiert. By the way, kann ich die Antwort erhalten, wenn ich den Fehler im zweiten Argument setzen, wie folgt aus: Rückruf (null, { Körper: JSON.stringify ( { errormessage: "mein Fehler" }) }); So sollten wir Fehler behandeln? Ich dachte, wir können das erste Argument verwenden, um Fehler zu senden. – Emi

Antwort

2

Wenn Sie integration: lambda-proxy verwenden, müssen Sie eine entsprechende Fehlerreaktion von Ihrem Lambda zurückzukehren, nicht von API-Gateway.

In diesem Fall können Sie verwenden, was bereits versucht:

callback(null, { body: JSON.stringify({ errorMessage: "my error" }) 

dachte ich, dass wir das erste Argument Fehler versenden können

können Sie, wenn Sie verwenden integration: lambda in Ihrem serverless.yml aber in Ihrem Fall sind Sie nicht.

+0

Danke, ich werde mir die Unterschiede in ihnen ansehen und ob es sich lohnt, sie zu ändern. – Emi

+1

Es ist eine Frage der Präferenz und jeder hat seine eigenen Vor- und Nachteile. Siehe https://stackoverflow.com/q/42474264/1252647. – dashmug

Verwandte Themen