1

構文エラーが発生するか、AWSラムダ関数でカスタムエラーを送信するたびに、同じ502 Bad Gateway応答(内部サーバーエラー)が発生します。APIゲートウェイでのAWSラムダ関数のエラー処理

私はその簡単なコードを試みた:

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

そして、まだ同じ「内部サーバーエラー」応答の代わりに、定義された1つを得ることを。

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

が、私はこの記事から何かを誤解した可能性があります。

これはserverless.ymlファイルの私の機能はありますか?それは "errorMessage"を受信するようだ: "空が落ちている! APIゲートウェイの応答(と私はそれが私が期待するものです)。

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

+1

ラムダの応答を処理するために、APIゲートウェイのインテグレーションレスポンスセクションを設定しましたか? –

+0

質問をserverless.yml設定で更新しました。 コールバック(NULL、{ ボディ::JSON.stringify( { にErrorMessage:「私のエラー」 }) }私は2番目の引数にエラーを置けばところで、私はこのように、応答を受け取ることができます); エラーを処理する方法はありますか?最初の引数を使ってエラーを送信できると思った。 – Emi

答えて

2

あなたがintegration: lambda-proxyを使用する場合は、あなたのラムダからではなく、API Gatewayから適切なエラー応答を返す必要があります。

この場合

、すでに試したものを使用することができます。

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

を私たちは、エラー

はあなたが integration: lambdaを使用し、できるかどうかを送信するために、最初の引数を使用することができます思ったあなた serverless.ymlあなたのケースでは、そうではありません。

+0

ありがとう、私はそれらの違いを見て、それが変更の価値がある場合。 – Emi

+1

それは好みの問題であり、それぞれ独自の賛否両論があります。 https://stackoverflow.com/q/42474264/1252647を参照してください。 – dashmug

関連する問題