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

開発者はAWS X-Rayを使ってサーバーレスアプリケーションのトレースを取得しています。特定の顧客IDに関連するトレースをX-Rayコンソールのフィルター式で検索したいと考え、Lambda関数内に以下のコードを追加しました:`subsegment.putMetadata('customerId', customerId)`。しかしX-Rayコンソールで `annotation.customerId = "C-123"` というフィルター式を使っても結果が表示されません。原因として最も可能性が高いのはどれですか?

A
Lambda関数のX-Rayアクティブトレーシングが有効になっていないため、トレースデータがX-Rayに送信されていない
問題文ではトレースを取得しているとあるため、X-Rayアクティブトレーシングはすでに有効であり、データ未送信の状態ではないため根拠がありません。
B
putMetadata() で追加した値はインデックス化されないため検索できない。検索・フィルタリングには putAnnotation() を使用する必要がある
✓ 正解
putMetadata()はインデックス化されず検索できないのに対し、putAnnotation()はインデックス化されてフィルタリング検索に対応し、ビジネスキー検索では後者が必須です。
C
X-Rayのフィルター式は文字列値の検索をサポートしておらず、数値のみ検索できる
X-Rayフィルター式は文字列値の検索をサポートしており、annotation.key="value"の構文は正常に動作するため、この前提は誤りです。
D
customerId の値にハイフンが含まれているため、X-Rayフィルター式でパースエラーが発生している
ハイフンを含む文字列値はX-Rayフィルター式で正常に処理され、パースエラーは発生しないため、この根拠は不正確です。

解説

正解: B. putMetadata() で追加した値はインデックス化されないため検索できない。検索・フィルタリングには putAnnotation() を使用する必要がある。 X-Rayでは、アノテーション(putAnnotation())はインデックス化され、コンソールやAPIのフィルター式で検索できます。一方、メタデータ(putMetadata())はインデックス化されないため個々のトレース詳細の閲覧には使えますがフィルタリングはできません。orderId・userId・transactionIdなどのビジネスキーでトレースを検索したい場合は必ずputAnnotation()を使用してください。選択肢Aについて:問題文では「トレースを取得している」とあるためX-Rayアクティブトレーシングはすでに有効であり、データ未送信の状態ではありません。選択肢Cについて:X-Rayフィルター式は文字列値の検索をサポートしており、annotation.key = "value" の構文は正常に動作します。選択肢Dについて:ハイフンを含む文字列値はX-Rayフィルター式で正常に処理され、パースエラーは発生しません。

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

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

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