本記事について
Serverless Framework を使ってLambdaをデプロイする時、オーソライザーを複数のLambdaから使えるようにするための設定について記載
手順
公式マニュアルに記載の通り、オーソライザーを使う全てのhttpイベントにおいて、resultTtlInSeconds: 0
を記載する
全てに記載しないとオーソライザーのキャッシュが無効にならないので注意
serverless.yml
functions: create: handler: posts.create events: - http: path: posts/create method: post authorizer: name: authorizerFunc resultTtlInSeconds: 0
解説
オーソライザーのキャッシュが有効になっていると、複数のhttpイベントからオーソライザーが呼び出された際、httpイベントが異なっても他のhttpイベントのキャッシュが参照されてしまうので、オーソライザーのキャッシュは無効にしておかなければいけない。
Serverless Frameworkにおいて、オーソライザーのキャッシュの無効化は、上記の手順で行う。
1つでもresultTtlInSeconds: 0
設定が抜けると、キャッシュが設定されてしまうので注意。
本来、API Gatewayのオーソライザーのキャッシュの設定は、オーソライザーの定義箇所で行うが、Serverless Frameworkでは、オーソライザーの定義箇所での設定は行えず(AuthorizerResultTtlInSeconds・resultTtlInSecondsを記述しても効かない)、httpイベントの設定状況から自動で設定されてしまう。