Lambdaのコールドスタートの有無やコールドスタートにかかった時間を調査する方法を記載します。
コールドスタートの情報を得るには、Lambda InsightsまたはAWS X-Rayのどちらかを使用する必要があります。
Lambda Insights
AWS X-Ray
本記事ではLambda Insightsを使用したコールドスタートの調査方法を記載します。
なお、Lambda Insightsを有効化済みであることを前提に記載しますので、Lambda Insightsの有効化をしていない方は、以下の記事を参考に有効化くださいー
また、AWS X-Rayを使用したコールドスタートの調査方法は以下の記事をご参照ください。
それでは、Lambda Insightsを使用したコールドスタートの調査について記載していきます。
コールドスータートの調査方法
Lambda Insightsを有効にすることによって出力されるパフォーマンスログから調査を行います。
ログは、CloudWatch->ログ->ロググループ->「/aws/lambda-insights」->Log insightsで表示とメニューをたどると確認できます
まずは、コールドスタートの有無について、確認する方法を記載します。
コールドスタートの有無について
Log insightsでパフォーマンスログを見ると「cold_start」という項目があります。
- cold_start
- 値が「1」の場合はコールドスタート
- 値が「0」の場合はコールドスタートではない
上記のように読み取ることができます。
以下のクエリでコールドスタートの回数をカウントすることができます。
fields @timestamp, @message, @logStream, @log
| filter cold_start = 1
| stats count(cold_start)
| sort @timestamp desc
| limit 20
次はコールドスタートに要した時間について記載します。
コールドスタートに要した時間について
コールドスタートの有無の調査と同様にLog insightsでパフォーマンスログを検索して、確認することができます。
「init_duration」という項目がコールドスタートに要した時間になります。
以下のようなクエリで、コールドスタートに要した最大の時間を取得可能です。
fields @timestamp, @message, @logStream, @log
| stats max(init_duration)
| sort @timestamp desc
| limit 20
クエリを変更することで様々なデータを取得できます。
クエリの作り方は公式ページを参考にさせてもらいましょう。
まとめ
以下の2つを使って、コールドスタートの有無とコールドスタートに要した時間を求めることができましたー
パフォーマンスログ
Log insights
→Log insightsを使用してパフォーマンスログを検索することで、コールドスタートの情報を得られました!