2017-11-07 34 views
1

AWS API GatewayとLambda Function(Python)をインテグレーションタイプとして使用して、適切なhttpステータスコードとエラーメッセージを設定する方法を理解するのは難しいです。私は簡単な例で働いていAWS API Gateway、Python Lambda、HTTPステータス

、ここでは詳細:

ラムダ関数

def lambda_handler(event, context): 

    return_json = {} 
    if event["request-number"] == "": 
     raise Exception("Error request-number can't be empty") 
    elif event["request-number"] == "3": 
     raise Exception("Value not accepted") 
    else: 
     return_json = {"service-activated": "TRUE"} 

    return return_json 

API /resourcetest POST

これは、ラムダと統合されています上記。

目標:メッセージエラーリクエスト数と帰りのHTTP 400とボディは時にリクエスト番号=「」空にすることはできません。

実装

  1. 私はエラーがマッピングされてきたラムダエラー正規表現で新しい方法応答400
  2. を作成しました*ので、体で、その文字列
  3. をキャッチします。マッピングテンプレート:私はアプリケーション/ jsonとしてコンテンツタイプを作成しました。テンプレートとして使用しました。(設定前にハッシュタグのシンボルがありますが、このページのフォーマットが壊れてしまったので省略しました):

    セット($ inputRoot = $ input.path( '$')){ "メッセージ":$ input.json( '$にErrorMessage') は}

  4. 私はHTTPステータスを持つようにチェックしましたメソッドの応答400(と私はそれを持っている)私はHTTP 400とメッセージエラーリクエスト数は空にすることはできません持ってテストしてみたAWS API Gatewayコンソールを通じて

テスト 体の中に

enter image description here

私はHTTPステータス200と、エラーメッセージが正しくフォーマットされていない私が持っていることはされてポストマンとChromeプラグインのRestletクライアントとからもテストすることにしました::良い私は私が望んで達成

enter image description here

これは非常に奇妙です:AWS APIコンソールからは、外部サービスから何も期待されていないものがあります。

誰かが同様のものを扱わなければならなかったのですか?

ありがとうございます!

答えて

1

APIを再デプロイしましたか?

+0

ああ、そうです。私は配備について考えずに何が間違っているのか考え続けました。 ありがとうScott! – AlessioG

+0

あなたは大歓迎です –

関連する問題