Lambda@Edge でプレウォーミングを行う方法を教えてください

2021.09.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

アプリへのプッシュ配信に画像を添付しており、画像をCloudFront経由で取得しています。 その際に Lambda@Edge を使って、URLの書き換えを行っているのですが、 静的なビューワーリクエストでスロットリングが発生しています。

スロットリングが発生しないように、Lambda@Edge でプレウォーミングを行うにはどのようにすればよいでしょうか?

どう対応すればいいの?

Lambda では「予約された同時実行」および「プロビジョニングされた同時実行」を使い、 スロットリングを回避することが可能です。

一方、Lambda@Edge では「予約された同時実行」および「プロビジョニングされた同時実行」は、 現在のところ共に対応しておりません。 そこで、対応策としては、事前にアクセスすることで、コールドスタートを回避することになります。

Lambda@Edge を CloudFrontに設定した後、 世界中の AWS ロケーションに関数をレプリケートしつつ、 リクエスト数の状況に合わせて、同時実行数を自動的に調整します。

Lambda@Edge のリクエスト数が急上昇した場合、 Lambda@Edge はリクエスト数に合わせて1分あたり同時実行数 500 ずつ増加し続け、スケールアウトします。

参考資料

Lambda@Edge デザインベストプラクティス