0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

lambdaでquerystringが取得されていない場合の解決方法 by cloudfront

Last updated at Posted at 2021-11-08

状況

  • AWSのcloudfrontを利用している。
  • API GatewayとLambdaを利用してweb APIサービスを構築している。
  • postメソッドをクエリパラメータで利用している。

発生したトラブル

  • クエリパラメータ(URLの後ろに?で繋げる文字列)を利用してPOSTメソッドでLambda関数を実行したときに、querystringにクエリパラメータの値が入るはずなのに入っていない。
    • 代替ドメイン名、ディストリビューションドメイン名のurlでpostするときのみ、querystringにクエリパラメータの値が入らないという状況。

原因

  • cloudfrontのビヘイビアの設定のキャッシュキーとオリジンリクエストの設定がされていなかったので、クエリパラメータが取得されなかった。

解決方法

キャッシュキーとオリジンリクエストで、Legacy cache settingsを選択して、クエリ文字列をすべてに変更して、保存すると解決します。

  • 少し待ってから、再度swaggerやcurlでpostメソッドを実行後、cloudWatchでログイベントを確認すれば、querystringに値が入っていることが確認できます。(但し、lambdaのコードの中でprint(event)等をしていること)

スクリーンショット 2021-11-08 22.54.15.png

あとがき

  • かなりニッチなトラブルです。
  • ボディリクエストのpostは問題ないのに、クエリパラメータのpostのみ影響が出るので、注意して下さい。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?