ただメモができるだけのブラウザアプリ「TextArea」はこちらw

AWS Lambdaのコールドスタートの有無とコールドスタートに要した時間を確認する方法

スポンサーリンク

Lambdaのコールドスタートの有無やコールドスタートにかかった時間を調査する方法を記載します。

コールドスタートの情報を得るには、Lambda InsightsまたはAWS X-Rayのどちらかを使用する必要があります。

コールドスタート調査

Lambda Insights
AWS X-Ray

 

本記事ではLambda Insightsを使用したコールドスタートの調査方法を記載します。

なお、Lambda Insightsを有効化済みであることを前提に記載しますので、Lambda Insightsの有効化をしていない方は、以下の記事を参考に有効化くださいー

https://it.kensan.net/it/aws-lambda-x-ray-start-end.html

また、AWS X-Rayを使用したコールドスタートの調査方法は以下の記事をご参照ください。

https://it.kensan.net/it/lambda-x-ray-capture.html

それでは、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

クエリを変更することで様々なデータを取得できます。

クエリの作り方は公式ページを参考にさせてもらいましょう。

CloudWatch Logs Insights クエリ構文 - Amazon CloudWatch Logs
CloudWatch Logs Insights では、クエリ言語を使用してロググループをクエリします。クエリ構文は、一般的な関数、算術演算と比較演算、正規表現など、さまざまな関数とオペレーションをサポートしています。

まとめ

以下の2つを使って、コールドスタートの有無とコールドスタートに要した時間を求めることができましたー

使用したもの

パフォーマンスログ
Log insights
→Log insightsを使用してパフォーマンスログを検索することで、コールドスタートの情報を得られました!