

# Referencia de la API de telemetría de Lambda
<a name="telemetry-api-reference"></a>

Utilice el punto de conexión de la API de telemetría de Lambda para suscribir extensiones a los flujos de telemetría. Puede recuperar el punto de conexión de la API de telemetría desde la variable de entorno `AWS_LAMBDA_RUNTIME_API`. Para enviar una solicitud de API, agregue la versión de la API (`2022-07-01/`) y `telemetry/`. Por ejemplo:

```
http://${AWS_LAMBDA_RUNTIME_API}/2022-07-01/telemetry/
```

Para ver la definición de la especificación OpenAPI (OAS) de la versión de respuestas de suscripción `2025-01-29`, consulte lo siguiente:
+ **HTTP**: [telemetry-api-http-schema.zip](samples/events_http_schema_v2025_01_29.zip)
+ **TCP**: [telemetry-api-tcp-schema.zip](samples/events_tcp_schema_v2025_01_29.zip)

**Topics**
+ [Suscribirse](#telemetry-subscribe-api)

## Suscribirse
<a name="telemetry-subscribe-api"></a>

Para suscribirse a un flujo de telemetría, una extensión de Lambda puede enviar una solicitud de API de suscripción.
+ **Ruta** – `/telemetry`
+ **Método** – `PUT`
+ **Encabezados**
  + `Content-Type`: `application/json`
+ **Parámetros del cuerpo de la solicitud**
  + **schemaVersion**
    + Obligatorio: sí
    + Tipo: cadena
    + Valores válidos: `"2025-01-29"`, `"2022-12-13"` o `"2022-07-01"`
    + **Nota:** Las instancias administradas de Lambda requieren `"2025-01-29"`. Esta versión es compatible con versiones anteriores de las funciones de Lambda (predeterminadas).
  + **destino**: los parámetros de configuración que definen el destino del evento de telemetría y el protocolo para la entrega del evento.
    + Obligatorio: sí
    + Tipo: objeto

      ```
      {
          "protocol": "HTTP",
          "URI": "http://sandbox.localdomain:8080"
      }
      ```
    + **protocolo**: el protocolo que utiliza Lambda para enviar datos de telemetría.
      + Obligatorio: sí
      + Tipo: cadena
      + Valores válidos: `"HTTP"`\$1`"TCP"`
    + **URI**: el URI al que se envían los datos de telemetría.
      + Obligatorio: sí
      + Tipo: cadena
    + Para obtener más información, consulte [Especificación de un protocolo de destino](telemetry-api.md#telemetry-api-destination).
  + **tipos**: los tipos de telemetría a los que desea que se suscriba la extensión.
    + Obligatorio: sí
    + Tipo: matriz de cadenas
    + Valores válidos: `"platform"`\$1`"function"`\$1`"extension"`
  + **almacenamiento en búfer**: los ajustes de configuración para el almacenamiento en búfer de eventos.
    + Obligatorio: no
    + Tipo: objeto

      ```
      {
         "buffering": {
              "maxItems": 1000,
              "maxBytes": 256*1024,
              "timeoutMs": 100
         }
      }
      ```
    + **maxItems**: el número máximo de eventos que se deben almacenar en memoria.
      + Obligatorio: no
      + Tipo: número entero
      + Predeterminado: 1000
      + Mínimo: 1000
      + Máximo: 10 000
    + **maxBytes**: el volumen máximo de telemetría (en bytes) que se debe almacenar en memoria.
      + Obligatorio: no
      + Tipo: número entero
      + Predeterminado: 262 144
      + Mínimo: 262 144
      + Máximo: 1 048 576
    + **timeoutMs**: el tiempo máximo (en milisegundos) para almacenar en búfer un lote.
      + Obligatorio: no
      + Tipo: número entero
      + Predeterminado: 1000
      + Mínimo: 25
      + Máximo: 30 000
    + Para obtener más información, consulte [Configuración del uso de memoria y el almacenamiento en búfer](telemetry-api.md#telemetry-api-buffering).

### Ejemplo de solicitud de API de suscripción
<a name="telemetry-subscribe-api-example"></a>

```
PUT http://${AWS_LAMBDA_RUNTIME_API}/2022-07-01/telemetry HTTP/1.1
{
   "schemaVersion": "2025-01-29",
   "types": [
        "platform",
        "function",
        "extension"
   ],
   "buffering": {
        "maxItems": 1000,
        "maxBytes": 256*1024,
        "timeoutMs": 100
   },
   "destination": {
        "protocol": "HTTP",
        "URI": "http://sandbox.localdomain:8080"
   }
}
```

Si la solicitud de suscripción se realiza correctamente, la extensión recibe una respuesta correcta HTTP 200.

```
HTTP/1.1 200 OK
"OK"
```

Si la suscripción falla, la extensión recibe una respuesta de error. Por ejemplo:

```
HTTP/1.1 400 OK
{
    "errorType": "ValidationError",
    "errorMessage": "URI port is not provided; types should not be empty"
}
```

Estos son algunos códigos de respuesta adicionales que puede recibir la extensión:
+ 200: solicitud completada correctamente
+ 202: solicitud aceptada. Respuesta a la solicitud de suscripción en un entorno de pruebas locales
+ 400: solicitud errónea
+ 500: error de servicio