DVAAWSのサービスを使用した開発
ECサイトのバックエンドでLambda関数がDynamoDB・SQS・外部決済APIを呼び出しています。開発者はX-Rayのトレースに注文IDや顧客IDを付加し、X-Rayコンソールで「特定の注文IDに関連するトレースのみをフィルタリングして検索する」ことを実現したいと考えています。どの方法を採用すべきですか?
AAWS X-Ray SDK の putAnnotation() を使用し、サブセグメントに注文ID・顧客IDのキー・バリューペアを追加する
✓ 正解
putAnnotation()で追加されたキー・バリューペアはX-Rayでインデックス化されるため、フィルタ式を使ったトレースの検索・絞り込みが可能です。注文IDや顧客IDなどビジネス固有の値でトレースを検索したい場合に最適な方法です。
BAWS X-Ray SDK の putMetadata() を使用し、サブセグメントにビジネスデータをオブジェクト形式で格納する
putMetadata()はオブジェクト・リストなど複雑なデータを保存できますが、インデックス化されないためX-Rayのフィルタ式による検索には使用できません。ビジネスデータでトレースを絞り込むという要件を満たせません。
CCloudWatch Logs に注文IDと顧客IDをJSON形式で出力し、CloudWatch Logs Insights でクエリして絞り込む
CloudWatch Logs Insightsは注文IDでログを検索できますが、X-Rayのサービスマップやトレースビューとの統合がなく、X-Rayコンソールでのトレースフィルタリングとはなりません。ログ検索とトレース検索は別のシステムです。
DLambda の環境変数に注文IDを格納し、X-Ray デーモンがトレースへ自動的に付加するよう設定する
Lambda環境変数はX-Rayトレースへ自動付加される機能はありません。環境変数はDB接続先やAPIキーなどデプロイ時の設定値を保持するもので、リクエストごとに変わる注文IDの格納には使用できません。
解説
X-Rayのアノテーション(annotations)はインデックス化されたキー・バリューペアです。X-Rayコンソールのフィルタ式(filter expressions)を使って特定の値を持つトレースを絞り込めます。注文IDをアノテーションとして追加すれば、フィルタ式で特定注文に関連するトレースだけを抽出できます。putAnnotation()はセグメントまたはサブセグメントに対して呼び出し、文字列・数値・真偽値型の値をサポートします。
選択肢BのputMetadata()はビジネスデータをオブジェクト形式で保存できますが、メタデータはインデックス化されないためX-Rayのフィルタ式での検索・絞り込みに使用できません。
選択肢CのCloudWatch Logs Insightsは強力なログ検索機能を持ちますが、X-Rayのサービスマップやトレースビューと統合されたフィルタリングはできません。
選択肢DのLambda環境変数はX-Rayトレースへの自動付加機能はなく、デプロイ時の設定値を保持するための仕組みです。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →