本記事について
Serverless Framework を使ってLambdaをデプロイする時、オーソライザーを複数のLambdaから使えるようにするための設定について記載
手順
公式マニュアルに記載の通り、オーソライザーを使う全てのhttpイベントにおいて、resultTtlInSeconds: 0
を記載する
全てに記載しないとオーソライザーのキャッシュが無効にならないので注意
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イベントの設定状況から自動で設定されてしまう。