AWS プログラミング

【AWS API Gateway】リクエストのマッピングについて

投稿日:

この記事は2年以上前ですので、内容が古い可能性があります

スクリーンショット 2015-07-15 15.08.54

ドキュメントをざっと読んだところ$inputについての記述が見つからなかったのでまとめ。

リクエスト時の$inputはクエリ、ヘッダ、POSTのbody等々色々と入っているよく分からない変数です。
API GatewayのIntegration Requestでinput mappingをするとlambda関数の一つ目の引数に渡されるようになります。

パス、クエリ、ヘッダから値をlambdaへ渡す場合

$input.params('[名前]')で取得出来ます。

パスはResourceを /test/{xxxxx} の様に作成します。
クエリはMethod Executionの画面->Method Request->URL Query String Parameters->Add query stringで追加します。
ヘッダはクエリ追加と同じ画面でHTTP Requery Headers->Add headerで追加します。

POSTしたbodyから渡す場合

$input.path('$')にbodyのJSONがパースされて入ります。

Resourceを /test/{user_id}, MethodをPOSTでつくってLambda関数に紐付けます。
紐付けるLambda関数は渡された引数を表示するだけの簡単なものです。

[javascript]
exports.handler = function(event, context) {
context.succeed(event);
};
[/javascript]

画像の様にクエリ、ヘッダを設定します。
apigateway01

Integration Requestのinput mappingで下記のとおり記述します。
その際にContent-Typeの項目にはapplication/jsonと入力下さい。placeholderでapplication/jsonと設定されていますが、ちゃんと入力しないとダメです。
それと、オブジェクトの値の方はダブルクォーテーションで囲まないと実行時にパースエラーが出ます。
[javascript]
{
"user_id": "$input.params('user_id')",
"user_name": "$input.params('user_name')",
"x-test": "$input.params('X-TEST')",
"path": "$input.path('$')",
"hoge": "$input.path('$').hoge"
}
[/javascript]

その後テスト実行です。色々とパラメーターを入れて実行してみて下さい。
スクリーンショット 2015-07-15 11.44.26

"path": "$input.path('$')" はRequest Bodyをパースしてオブジェクトとして入ると思いましたが、そうはいかないようですね。イコールでくっつけたテキストになってしまいました。マッピングするのも面倒なのでヘッダ、クエリ、Request body全部まとめて渡してくれると嬉しいですね。

この記事をシェアする:
◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

私たちと一緒に働きませんか?

「【AWS API Gateway】リクエストのマッピングについて」はいかがでしたか?
株式会社プレスマンでは、 WordPressが大好きな方、仕事を通してさらにスキルを磨きたい方を募集しています。 まずは募集職種をご覧の上、お気軽にお問い合わせください。 あなたとお会いできるのを楽しみにしています。

採用情報を見る

-AWS, プログラミング
-,

© 2024 PRESSMAN*Tech Powered by STINGER