開発者はAWS X-Rayを使用して、Lambda・API Gateway・DynamoDBで構成されたサーバーレスアプリケーションをトレースしている。特定のユーザー(userId)のリクエストでのみエラーが発生していることが判明した。X-Rayコンソールでそのユーザーのトレースだけをフィルタリングして表示するには、どの方法が正しいか?
正解: X-RayセグメントのannotationフィールドにuserIdを記録し、X-Rayコンソールのフィルター式(filter expression)で検索する。 X-Rayにはannotation(アノテーション)とmetadata(メタデータ)の2種類の追加データ記録方式があります。annotationはインデックス化されるためフィルター式による検索が可能ですが、metadataはインデックス化されないため検索には使用できません。特定の値でトレースを絞り込みたい場合は必ずannotationを使用し、`putAnnotation("userId", userId)`のように記録します。 選択肢Aは X-RayセグメントのmetadataフィールドにuserIdを記録する方法はインデックス化されないため検索に使用できません。 選択肢Cは CloudWatch LogsにuserIdを出力し、X-Rayのトレースと手動でタイムスタンプを照合する方法は非効率です。 選択肢Dは X-RayのアクティブトレーシングをLambdaで有効化するだけではuserIdは自動的に記録されません。