Captura de solicitudes y respuestas de servicios AWS

Información general

AWS Payload Extraction captura los datos de solicitudes y respuestas intercambiados entre tu aplicación y los servicios AWS. Esta función adjunta la información extraída como etiquetas (tags) a tus trazas (traces), lo que te permite ver los datos en dashboards y utilizarlos para generar alertas.

Requisitos

Se admiten los siguientes servicios AWS:

  • Amazon Simple Notification Service (SNS)
  • Amazon Simple Queue Service (SQS)
  • Amazon Kinesis
  • Amazon S3
  • Amazon EventBridge

Se admiten las siguientes versiones de trazador y paquetes SDK de AWS:

LenguajeVersiónPaquetes SDK instrumentados por AWS
Node.jsv5.25.0 o v4.49.0 o sus versiones posteriores@aws-sdk/* (SDK de AWS v3)
Javav1.42.1 o posterioraws-sdk-v2
Pythonv 2.17.0 o posteriorbotocore (incluyendo boto3)

Cómo funciona

AWS Payload Extraction extrae pares clave-valor de cuerpos jerárquicos de solicitudes y respuestas, convirtiéndolos en etiquetas separadas por puntos. Por ejemplo:

JSON de entrada:

{  
  "Message": {  
    "foo.bar": "baz",  
    "Arr": ["a", "b"]  
  }  
}

Etiquetas generadas:

aws.request.body.Message.foo\.bar: baz  
aws.request.body.Message.Arr.0: a  
aws.request.body.Message.Arr.1: b

Los rastreadores están configurados para coincidir con datos JSON anidados dentro de documentos JSON, que es un patrón común con las cargas útiles de SQS.

Configuración general

Activar AWS Payload Extraction

Para activar AWS Payload Extraction, configura estas variables de entorno:

# Analizar solicitudes
DD_TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING=all

# Analizar respuestas  
DD_TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING=all

Puedes elegir analizar:

  • Sólo cuerpos de solicitudes
  • Sólo cuerpos de de respuestas
  • Tanto cuerpos de solicitudes como de respuestas

El valor all indica que se utiliza todo el cuerpo para generar etiquetas. Para ver más opciones de configuración, consulta Proteger la información confidencial.

Proteger la información confidencial

Se espera que muchas de estas cargas útiles contengan información personal identificable (PII).

Para proteger la información confidencial, los rastreadores sustituyen los campos PII comunes por 'redacted' (como los números de teléfono en SNS). Nota: No puedes desactivar los datos ocultos por defecto.

Puedes especificar campos adicionales para ocultar utilizando la sintaxis JSONPath en las variables de entorno. Por ejemplo:

DD_TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING=$.Metadata.UserId,$.Attributes.0.Pass

Este ejemplo:

  • Oculta el campo UserId dentro del objeto Metadata
  • Oculta el campo Pass en el primer elemento de la matriz Attributes
  • Aplica el ocultamiento por defecto
  • Sólo procesa cuerpos de solicitudes
Las reglas de ocultamiento se aplican a todos los servicios y no pueden configurarse por servicio.

Control de la profundidad de extracción de cargas útiles

Controla la profundidad máxima de extracción de cargas útiles con:

DD_TRACE_CLOUD_PAYLOAD_TAGGING_MAX_DEPTH=10

El valor por defecto es 10. Los nodos que superan esta profundidad se ignoran durante la generación de etiquetas. La principal razón para modificar este valor es ajustar el rendimiento.

Desactivar AWS Payload Extraction

Configura estas variables como una cadena vacía u omitirlas desactiva la función:

DD_TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING=""
DD_TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING=""

Configuración específica del lenguaje

Cada implementación del rastreador proporciona opciones adicionales de configuración específicas para ese lenguaje.

Servicios compatibles

Los siguientes servicios son compatibles:

  • SNS
  • SQS
  • Kinesis
  • S3
  • EventBridge
Para solicitar compatibilidad adicional para servicios, abre una solicitud de función con el equipo de asistencia de Datadog.

Reglas de ocultamiento por defecto

El rastreador Node.js aplica reglas de ocultamiento por cada servicio. Por ejemplo:

  • El campo $.Endpoint sólo se oculta para las solicitudes de servicio SNS.
  • Otros rastreadores ocultan este campo en todos los servicios.

Servicios compatibles

Los siguientes servicios son compatibles:

  • SNS
  • SQS
  • Kinesis
  • S3
  • EventBridge

Configurar servicios

Para activar la extracción de etiquetas de servicios adicionales utiliza esta variable de entorno:

# Valores por defecto
DD_TRACE_CLOUD_PAYLOAD_TAGGING_SERVICES=s3,sns,sqs,kinesis,eventbridge

Añade servicios a la lista separada por comas. Por ejemplo, para añadir la compatibilidad con AWS Amplify:

DD_TRACE_CLOUD_PAYLOAD_TAGGING_SERVICES=s3,sns,sqs,kinesis,eventbridge,amplify
Los servicios añadidos no incluyen el ocultamiento por defecto. Prueba tu aplicación en staging para identificar y configurar ocultamientos necesarios.

Nombres de servicios

Los nombres de servicios distinguen entre mayúsculas y minúsculas. Para encontrar nombres válidos de servicios:

  1. Visita la página Servicios Boto3 disponibles.
  2. Haz clic en el nombre de servicio que quieres utilizar.
  3. Utiliza el nombre de servicio de la llamada boto3.client().

Configurar el número de etiquetas extraídas

Controla el número máximo de etiquetas extraídas con:

# Valor por defecto
DD_TRACE_CLOUD_PAYLOAD_TAGGING_MAX_TAGS=758
El valor por defecto (758) es el máximo que puede aceptar el Datadog Agent. No se recomienda aumentar este valor.

Servicios compatibles

Los siguientes servicios son compatibles:

  • SNS
  • SQS
  • Kinesis
  • S3
  • EventBridge
  • API Gateway

Configurar servicios

Para activar la extracción de etiquetas de servicios adicionales utiliza esta variable de entorno:

# Valores por defecto
DD_TRACE_CLOUD_PAYLOAD_TAGGING_SERVICES=ApiGateway,ApiGatewayV2,EventBridge,Sqs,Sns,S3,Kinesis
Los servicios añadidos no incluyen el ocultamiento por defecto. Prueba tu aplicación en staging para identificar y configurar ocultamientos necesarios.

Nombres de servicios

Los nombres de servicios distinguen entre mayúsculas y minúsculas. Para encontrar un nombres de servicio:

  1. Genera una traza que incluya el servicio AWS.
  2. Encuentra el tramo (span) del servicio.
  3. Busca el campo aws_service.

Por ejemplo:

  • Para AWS SSO, el nombre del recurso es Sso.GetRoleCredentials.
  • El campo aws_service muestra Sso.
  • Utiliza Sso en tu configuración.

Configurar el número de etiquetas extraídas

Controla el número máximo de etiquetas extraídas con:

DD_TRACE_CLOUD_PAYLOAD_TAGGING_MAX_TAGS=758
El valor por defecto (758) es el máximo que puede aceptar el Datadog Agent. No se recomienda aumentar este valor.

Prácticas recomendadas

  • Los diferentes rastreadores utilizan diferentes implementaciones de JSONPath, así que prueba tus consultas con cada rastreador individualmente.
  • Comprueba siempre el comportamiento del ocultamiento en un entorno en staging antes de activarlo en producción.

Referencias adicionales