無限ノック › DVA 練習問題一覧 › 問題
DVAトラブルシューティングと最適化

Lambda関数を使ったAPIサービスの開発者が、CloudWatch Logs Insightsを使ってコールドスタートを分析したいと考えています。過去24時間のコールドスタート件数と平均初期化時間(Init Duration)を算出するために最も適切なクエリはどれですか?

A
filter @type = "REPORT" | filter @initDuration > 0 | stats count() as coldStarts, avg(@initDuration) as avgInitDuration
✓ 正解
LambdaのREPORTログには @type = "REPORT" というフィールドがあり、コールドスタートが発生した場合のみ @initDuration フィールドが含まれます(ウォームスタートでは値がnullまたは存在しない)。`filter @initDuration > 0` でコールドスタートのみを絞り込み、stats関数でcount()とavg()を組み合わせることで件数と平均初期化時間を同時に算出できます。
B
filter @message like /Init Duration/ | stats count() as coldStarts, avg(@duration) as avgInitDuration
avg() の引数に @initDuration ではなく @duration(実行時間)を使用しており、コールドスタートの平均初期化時間を正確に算出できません。
C
stats count(@initDuration) as coldStarts, avg(@duration) as avgDuration by bin(1h)
フィルターなしで全ログタイプを対象とし、avg()にも @duration を使用しているため不正確であり、bin(1h)による時間帯別集計は設問の要件(過去24時間の合計集計)にも合致しません。
D
filter @type = "REPORT" | stats sum(@initDuration) as totalInitTime, count() as totalInvocations
REPORTフィルターは正しいものの、count()がコールドスタートに限らず全呼び出しを計上するためコールドスタート件数の算出にならず、avg(@initDuration)も算出されていません。

解説

LambdaのREPORTログには @type = "REPORT" というフィールドがあり、コールドスタートが発生した場合のみ @initDuration フィールドが含まれます(ウォームスタートでは値がnullまたは存在しない)。`filter @initDuration > 0` でコールドスタートのみを絞り込み、stats関数でcount()とavg()を組み合わせることで件数と平均初期化時間を同時に算出できます。 選択肢B は avg() の引数に @initDuration ではなく @duration(実行時間)を使用しており、コールドスタートの平均初期化時間を正確に算出できません。 選択肢C はフィルターなしで全ログタイプを対象とし、avg()にも @duration を使用しているため不正確であり、bin(1h)による時間帯別集計は設問の要件(過去24時間の合計集計)にも合致しません。 選択肢D はREPORTフィルターは正しいものの、count()がコールドスタートに限らず全呼び出しを計上するためコールドスタート件数の算出にならず、avg(@initDuration)も算出されていません。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DVA の問題一覧に戻る