2017-03-27 4 views
0

私はプロキシサーバーのaws apigatewayラムダ統合を作成しました。私がゲートウェイに要求を出すとき、要求は成功裏に通過しています。ラムダ関数は正常に実行されると200とからstatusCodeで出力ストリームに応答を書き込みます。しかしapigateway常に502aws apigatewayラムダ常に返す502

スニペットのhandleRequest()を返します。

BufferedReader reader = new BufferedReader(new 
     InputStreamReader(inputStream)); 
     JSONObject event = (JSONObject) parser.parse(reader); 
     request = Input.builder().setEvent(event).build(); 

    Response response = requestManager.handleRequest(request); 
    logger.log(String.format("Response [%s]", response.toString())); 

    JSONObject responseJson = new JSONObject(); 
    responseJson.put("statusCode", response.getStatusCode()); 
    responseJson.put("headers", response.getHeaders()); 
    JSONObject jsonBody = (JSONObject) parser.parse(response.getBody()); 
    responseJson.put("body", jsonBody); 
    OutputStreamWriter writer = new OutputStreamWriter(outputStream, "UTF-8"); 
    logger.log("response recieved"); 
    logger.log(String.format("responseJson [%s]", responseJson)); 
    writer.write(responseJson.toJSONString()); 
    writer.close(); 
    logger.log(String.format("output stream [%s]", outputStream)); 

私が何か足りませんか?

答えて

1

Lambda usuaullyの502エラーは、あなたがラムダプロキシメソッドを使用していて、適切なJSON応答を生成していないことを示しています。応答がappropriate formatに準拠していることを確認してください。

問題が解決しない場合は、Lambda関数で生成されたJSONサンプルを共有してください。

+0

出力ストリーム[ { "ヘッダ":{ "キープアライブ": ""、 "転送エンコード": "チャンク"、 "サーバ": "アパッチ"、 は "ヴァリ": " "アプリケーション/ JSON;のcharset = UTF-8" }、 "本体": ": ""、 "コンテンツタイプ" " " 日付エンコーディングを受け入れる{ "メタデータ":{}、 " http_code ":200、 " data ":{ " size ":1、 " list_item_type ":" message "、 " type ":" messages "、 " items ":[ ] }、 "メッセージ": ""、 "ステータス": "成功" }、 "からstatusCode":200 }] –

+1

@kunalshrivastava本体は文字列であると予想されます。 JSONを返す場合は、それをエスケープする必要があります。 –

0

すべてのログでラムダが正常に実行されたと言っていたのと同じ問題がありましたが、APIゲートウェイはリクエストごとに502sを返していました。 APIゲートウェイコンソールで応答ステータスコードを設定するのを忘れてしまったので、適切な書式設定でも応答が「間違っていた」ため、エラーが発生していました。ゲートウェイ上のルートにステータスコード200,400,403などを追加するだけで、問題が解決する可能性があります。

関連する問題