API GatewayのREST APIからLambdaを経由してDynamoDBを呼ぶリクエストが遅い。APIステージとLambdaはActive tracingを有効化し、LambdaのDynamoDB呼び出しも計装済みである。
トレース送信権限があり、サンプリングされたリクエストの記録が取得できている。一つのリクエストでどの処理・下流呼び出しに時間がかかったか調べたい。
最も適切な調査方法はどれか。
計装と送信設定が揃ったX-Rayトレースを読み、リクエスト内の処理と下流呼び出しの時間を調べる。
詳細解説
API操作の監査は、一つのアプリリクエストのセグメント・サブセグメントをつなぐ分散トレースではない。
関数全体の平均時間では、個々のリクエストの内部処理と下流呼び出しの時間を分離できない。
同じリクエストの記録をつなぎ、Lambdaの処理とDynamoDBへの下流呼び出しの所要時間を確認できる。
5xxの件数はエラー傾向を示すが、成功リクエストを含む処理区間の所要時間は分からない。
公式資料で確認する
以下の項目を公式資料の記述と照合して確認します。
公式資料でREST APIの対応、LambdaのActive/PassThrough、DynamoDB呼び出しのサブセグメントを確認する。
参考にした公式資料
確認できる内容
送信設定と計装を確認したうえで区間ごとの時間を読める。DynamoDB内部の全処理時間や全リクエストが記録されると断定しない。
理解のポイント
- AWS X-Ray
- サービスマップ
- トレース
確認時の注意
- 確認環境: AWS公式SOA-C03試験ガイドとAWS公式ドキュメントの確認
- AWS公式SOA-C03試験ガイドと各サービスの公式ドキュメントを確認する。
基礎のおさらい
計装と送信の前提を確認する
API GatewayのX-Ray対応はREST APIである。LambdaのActive tracingと送信権限を確認し、下流のAWS SDK呼び出しも計装する。PassThroughはコンテキストの伝播であり、Lambdaが自動的にトレースを送る設定と混同しない。
観測範囲とサンプリングを読む
DynamoDBへのサブセグメントは呼び出し側から見た時間であり、DynamoDB自身が送る内部処理セグメントではない。サービスマップの概要から個別トレースへ進む。サンプリングにより記録がないリクエストもあるため、全リクエストの完全な記録とは考えない。