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

AWS X-RayでLambda関数のトレースを実装している開発者がいます。顧客の注文処理において、特定の`orderId`に関連する遅いトレース(2秒超)をX-Rayコンソールのフィルター式で絞り込めるようにしたいです。以下のうち、X-Rayコンソールでフィルタリング可能な形で`orderId`をトレースに付加する正しい実装はどれですか?

A
subsegment.put_annotation('orderId', order_id) を使用してアノテーションとして追加する
✓ 正解
X-Rayのアノテーションはキーと値がインデックス化され、annotation.orderId="123"のようなフィルター式で検索できます。特定のビジネス属性でトレースを絞り込む用途に最適な正しい実装です。
B
subsegment.put_metadata('orderId', order_id) を使用してメタデータとして追加する
メタデータはトレースに付加情報として保存されますがインデックス化されず、フィルター式での検索対象になりません。詳細情報の記録には使えますが絞り込みには利用できません。
C
xray_recorder.begin_subsegment(order_id) で注文IDと同名のサブセグメントを作成する
サブセグメント名を動的なorderIdにしてもフィルター式での属性検索はできず、セグメント数が無秩序に増えて可観測性を損ないます。属性付与にはアノテーションを使う実装が適切です。
D
Lambda関数の環境変数に ORDER_ID を設定してX-Rayが自動的に取得するようにする
Lambdaの環境変数はX-Rayトレースに自動的には取り込まれず、フィルター式の対象にもなりません。トレースへの属性付与にはput_annotationを使用する必要があります。

解説

正解:subsegment.put_annotation('orderId', order_id) を使用してアノテーションとして追加する。 X-Rayのアノテーション(Annotations)はキーと値のペアとしてインデックス化され、フィルター式(例: annotation.orderId = "123")での検索が可能です。一方、メタデータ(Metadata)はトレースに保存されますがインデックス化されないため、フィルター式では使用できません。特定のビジネス属性でトレースを絞り込む場合は必ずアノテーションを使用します。 選択肢Bのメタデータはインデックス化されないためフィルター式では使用できません。 選択肢CのサブセグメントをorderIdと同名で作成するのは正しい実装ではありません。 選択肢DのLambda環境変数はX-Rayが自動的に取得しません。

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

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

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