2017-10-10 16 views
0

documentationには、jsonが返すボディ、ヘッダー、ステータスコードがすべて含まれていると記載されています。しかし、私はAPIゲートウェイでそれをテストする何らかの理由で、それは不正な形式の応答を返します。AWS APIゲートウェイ不正な形式のラムダ応答

これはその下のメソッドの出力です。 "{アプリケーション/ JSONの\ "\ " "}、\" からstatusCode \ボディ\ ":200、\" ヘッダ\ "{\" コンテンツタイプ\ ":200

\"}"

def addnumbers(message, context): 

    result = message['num1'] + 1 
    print(result) 
    resp = { 
     "statusCode": 200, 
     "body": result, 
     "headers": { "Content-type": "application/json"} 
    } 
    return (json.dumps(resp)) 

私は現在、NUM1 = 1を渡していますし、それが任意のより良いエラーメッセージを与えるものではありません。どんな指導も高く評価されます。

+1

をrandomname 'json.dumps'で文字列に変換するのではなく?単純に 'return resp'ですか? –

+0

同じ問題ですが、コード以外に影響を与えることがありますか? –

+0

あなたはそのレスポンスを返していて、エラーを投げていないのですか?あなたはCloudWatchの関数のログをチェックしていますか? –

答えて

0

オックバックルインの回答です。

APIに必要なリソースにプロキシ統合が有効になっていることを確認してください。

今すぐラムダに行ってください。私が以前にnum1をどのように渡そうとしていたかを見てください。私は「イベント」またはメッセージからそれを取得しようとしていました。これが私が立ち上がるところです。また、ノート(you can't do a get with a body) ラムダへの入力はこのようにする必要があります。

{ "queryStringParameters":{ "入力":} "を入力あなたは、ラムダをテストしたいです何でも"}だから今我々は我々のテストをするために設定されていること

をlambdaラムダ自体をコーディングする必要があります。

私は、内のコードを置く:あなたがテストした場合さて、それは問題ないはず

number = "Hello, " + event['queryStringParameters']['input'] 
out = {} 
out['statusCode'] = 200 
out['body'] = number 

return (out) 

デフlambda_handler(イベント、コンテキスト)。

入力に入れて「クエリ文字列」のセクションでは、APIゲートウェイ に戻るには、=、、それは今、ハローで返す必要があります

をrandomnameあなたは直接応答オブジェクトを返すようにしようとするとどうなります

関連する問題