Lambdaのコールドスタートを回避したく、Provisioned Concurrencyを利用することとした。それに関するメモ。いじってみての所感も入っているので、間違えているかも。
設定箇所
対象Lambda関数の"設定">"同時実行と再起の検出"と進むと設定できる
設定内容
同時実行
"同時実行”を設定しただけではLambdaが起動しっぱなしにはならない。形としては、これは対象の関数が占有できる枠を抑えたにすぎない様に思う。
今回は、一つのLambdaのみ動かしておきたいので1を設定した。
プロビジョニングされた同時実行設定
これが必要。ここに追加することでLambda関数が起動しっぱなしになる。
ただ、ここで設定するためには、対象のバージョンを設定し、エイリアスを作成する必要がある。
バージョン
"バージョン"タブで設定すれば、$LATESTに対してバージョンが振られる。なので、再デプロイした時は再度バージョンを設定しないとデプロイ前の物を使い続けることになる
エイリアス
"エイリアス"タブで設定できる。上記のバージョンを指定してエイリアスを作成できる。
これは、基本的にバージョンを指定することになるので、新しいバージョンをリリースした場合は対象バージョンを変更する必要がある。
プロビジョニングされた同時実行設定(再)
そしてここに戻り、対象のエイリアスを指定して同時実行設定を追加。
API Gatewayとの接続
ここで、エイリアスを起動して同時実行として設定したところで、WebAPIを叩いてもここでは処理されない。APIGatewayの接続を、こちらに切り替える必要がある。
この設定は、以下で対応可能。
- エイリアスの画面で、エイリアスのARNを取得
- API Gatewayの対象のメソッドの”統合リクエスト”で、そのARNを設定する(差し替える)
とりあえず、上記の感じで対応できた。
これをSAMで実行したいが、それはこれからの検討。。。