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とボディは時にリクエスト番号=「」空にすることはできません。
実装:
- 私はエラーがマッピングされてきたラムダエラー正規表現で新しい方法応答400
- を作成しました*ので、体で、その文字列
をキャッチします。マッピングテンプレート:私はアプリケーション/ jsonとしてコンテンツタイプを作成しました。テンプレートとして使用しました。(設定前にハッシュタグのシンボルがありますが、このページのフォーマットが壊れてしまったので省略しました):
セット($ inputRoot = $ input.path( '$')){ "メッセージ":$ input.json( '$にErrorMessage') は}
私はHTTPステータスを持つようにチェックしましたメソッドの応答400(と私はそれを持っている)私はHTTP 400とメッセージエラーリクエスト数は空にすることはできません持ってテストしてみたAWS API Gatewayコンソールを通じて
テスト 体の中に
私はHTTPステータス200と、エラーメッセージが正しくフォーマットされていない私が持っていることはされてポストマンとChromeプラグインのRestletクライアントとからもテストすることにしました::良い私は私が望んで達成
これは非常に奇妙です:AWS APIコンソールからは、外部サービスから何も期待されていないものがあります。
誰かが同様のものを扱わなければならなかったのですか?
ありがとうございます!
ああ、そうです。私は配備について考えずに何が間違っているのか考え続けました。 ありがとうScott! – AlessioG
あなたは大歓迎です –