2017-09-25 18 views
1

HTTP応答に問題が発生し、ステータスコード502とエラーメッセージInternal Server Errorが表示されます。私のセットアップはNodeJSで書かれたAWS Lambdaで、別のLambdaと統合されたAWS API GatewayへのHTTPS POSTリクエストをバックエンドとして作成します。HTTP要求の発行内部サーバーエラー

奇妙な部分は、APIのバックエンドとして機能するラムダは、すべてのPOST要求をうまく受け取り、その機能を完璧に実行できますが、コールバックは他のラムダにエラーで応答します。

以下

は、APIゲートウェイ側のラムダ

const done = (err, res) => callback(err, { 
    statusCode: err ? JSON.stringify(err.code) : '200', 
    body: err ? JSON.stringify(err.message) : JSON.stringify(res), 
    headers: { 
     'Content-Type': 'application/json', 
    } 
}); 

そして、ここでは上のコールバックは、他のラムダからのコードがHTTPS POSTリクエスト

  const req = https.request(options, (res) => { 
       console.log('statusCode:', res.statusCode); 
       console.log('headers:', res.headers); 


       res.on('data', (d) => { 
        process.stdout.write(d); 
       }); 

       res.on('end', function() { 
        console.log(JSON.stringify(body)); 
       }); 
      }); 

      req.on('error', (e) => { 
       console.error(e); 
       console.log("request error"); 
      }); 


      req.write(JSON.stringify(payload)); 
      console.log("req.end"); 
      req.end();  

を作るです私はこの問題はであると感じこれらのコードブロックは、ラムダ統合APIゲートウェイのコールバックを変更して200ステータスコードへの応答をハードコードするため、すべて正常に機能するためです。

+1

APIラムダには何らかのエラーがありますそれ。そのログを確認します。下記を参照してください:https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-mode-exceptions.html –

+1

まず、Cloudwatchのエラーを確認します。次に、マッピングテンプレートを確認します(Lambda-Proxy統合を使用していない場合)。 – dashmug

答えて

0

問題err.codeが空または無効な値であれば、APIゲートウェイで502を取得します。有効なステータスコードで有効なhttp応答を返すようにコードを修正する必要があります。

ステータスコードが無効または空の場合、ラムダからのhttp応答が無効であるため、発信者に502が送信されます。

希望します。

関連する問題