Referencia del esquema Event de la API de telemetría de Lambda - AWS Lambda

Referencia del esquema Event de la API de telemetría de Lambda

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 2022-12-13, consulte lo siguiente:

La siguiente tabla resume de todos los tipos de objetos de Event que admite la API de telemetría.

Categoría Tipo de evento Descripción Esquema de registro de eventos

Evento de plataforma

platform.initStart

Se inició la inicialización de la función.

esquema platform.initStart

Evento de plataforma

platform.initRuntimeDone

Se completó la inicialización de la función.

esquema platform.initRuntimeDone

Evento de plataforma

platform.initReport

Un informe de inicialización de la función.

esquema platform.initReport

Evento de plataforma

platform.start

Se inició la invocación de la función.

esquema platform.start

Evento de plataforma

platform.runtimeDone

El tiempo de ejecución terminó de procesar un evento con éxito o con falla.

esquema platform.runtimeDone

Evento de plataforma

platform.report

Un informe de la invocación de funciones.

esquema platform.report

Evento de plataforma

platform.restoreStart

Se inició la restauración en tiempo de ejecución.

esquema platform.restoreStart

Evento de plataforma

platform.restoreRuntimeDone

Se completó la restauración en tiempo de ejecución.

esquema platform.restoreRuntimeDone

Evento de plataforma

platform.restoreReport

Informe de restauración en tiempo de ejecución.

esquema platform.restoreReport

Evento de plataforma

platform.telemetrySubscription

La extensión suscrita a la API de telemetría.

esquema platform.telemetrySubscription

Evento de plataforma

platform.logsDropped

Lambda ha eliminado las entradas de registro.

esquema platform.logsDropped

Registros de funciones

function

Una línea de registro del código de la función.

esquema function

Registros de extensión

extension

Una línea de registro del código de extensión.

esquema extension

Tipos de objetos Event de la API de telemetría

En esta sección, se detallan los tipos de objetos Event que admite la API de telemetría de Lambda. En las descripciones de los eventos, un signo de interrogación (?) indica que el atributo puede no estar presente en el objeto.

platform.initStart

Un evento platform.initStart indica que se ha iniciado la fase de inicialización de la función. Un objeto platform.initStart Event tiene la siguiente forma:

Event: Object - time: String - type: String = platform.initStart - record: PlatformInitStart

El objeto PlatformInitStart tiene los siguientes atributos:

  • functionName: String

  • functionVersion: String

  • InitializationType: objeto InitType

  • instanceId?: String

  • instanceMaxMemory?: Integer

  • phase: objeto InitPhase

  • runtimeVersion?: String

  • runtimeVersionArn?: String

A continuación, se muestra un ejemplo de Event de tipo platform.initStart:

{ "time": "2022-10-12T00:00:15.064Z", "type": "platform.initStart", "record": { "initializationType": "on-demand", "phase": "init", "runtimeVersion": "nodejs-14.v3", "runtimeVersionArn": "arn", "functionName": "myFunction", "functionVersion": "$LATEST", "instanceId": "82561ce0-53dd-47d1-90e0-c8f5e063e62e", "instanceMaxMemory": 256 } }

platform.initRuntimeDone

Un evento platform.initRuntimeDone indica que se ha completado la fase de inicialización de la función. Un objeto platform.initRuntimeDone Event tiene la siguiente forma:

Event: Object - time: String - type: String = platform.initRuntimeDone - record: PlatformInitRuntimeDone

El objeto PlatformInitRuntimeDone tiene los siguientes atributos:

A continuación, se muestra un ejemplo de Event de tipo platform.initRuntimeDone:

{ "time": "2022-10-12T00:01:15.000Z", "type": "platform.initRuntimeDone", "record": { "initializationType": "on-demand" "status": "success", "spans": [ { "name": "someTimeSpan", "start": "2022-06-02T12:02:33.913Z", "durationMs": 70.5 } ] } }

platform.initReport

Un evento platform.initReport contiene un informe general de la fase de inicialización de la función. Un objeto platform.initReport Event tiene la siguiente forma:

Event: Object - time: String - type: String = platform.initReport - record: PlatformInitReport

El objeto PlatformInitReport tiene los siguientes atributos:

A continuación, se muestra un ejemplo de Event de tipo platform.initReport:

{ "time": "2022-10-12T00:01:15.000Z", "type": "platform.initReport", "record": { "initializationType": "on-demand", "status": "success", "phase": "init", "metrics": { "durationMs": 125.33 }, "spans": [ { "name": "someTimeSpan", "start": "2022-06-02T12:02:33.913Z", "durationMs": 90.1 } ] } }

platform.start

Un evento platform.start indica que se ha iniciado la fase de invocación de la función. Un objeto platform.start Event tiene la siguiente forma:

Event: Object - time: String - type: String = platform.start - record: PlatformStart

El objeto PlatformStart tiene los siguientes atributos:

A continuación, se muestra un ejemplo de Event de tipo platform.start:

{ "time": "2022-10-12T00:00:15.064Z", "type": "platform.start", "record": { "requestId": "6d68ca91-49c9-448d-89b8-7ca3e6dc66aa", "version": "$LATEST", "tracing": { "spanId": "54565fb41ac79632", "type": "X-Amzn-Trace-Id", "value": "Root=1-62e900b2-710d76f009d6e7785905449a;Parent=0efbd19962d95b05;Sampled=1" } } }

platform.runtimeDone

Un evento platform.runtimeDone indica que se ha completado la fase de invocación de la función. Un objeto platform.runtimeDone Event tiene la siguiente forma:

Event: Object - time: String - type: String = platform.runtimeDone - record: PlatformRuntimeDone

El objeto PlatformRuntimeDone tiene los siguientes atributos:

A continuación, se muestra un ejemplo de Event de tipo platform.runtimeDone:

{ "time": "2022-10-12T00:01:15.000Z", "type": "platform.runtimeDone", "record": { "requestId": "6d68ca91-49c9-448d-89b8-7ca3e6dc66aa", "status": "success", "tracing": { "spanId": "54565fb41ac79632", "type": "X-Amzn-Trace-Id", "value": "Root=1-62e900b2-710d76f009d6e7785905449a;Parent=0efbd19962d95b05;Sampled=1" }, "spans": [ { "name": "someTimeSpan", "start": "2022-08-02T12:01:23:521Z", "durationMs": 80.0 } ], "metrics": { "durationMs": 140.0, "producedBytes": 16 } } }

platform.report

Un evento platform.report contiene un informe general de la fase de invocación de la función. Un objeto platform.report Event tiene la siguiente forma:

Event: Object - time: String - type: String = platform.report - record: PlatformReport

El objeto PlatformReport tiene los siguientes atributos:

A continuación, se muestra un ejemplo de Event de tipo platform.report:

{ "time": "2022-10-12T00:01:15.000Z", "type": "platform.report", "record": { "metrics": { "billedDurationMs": 694, "durationMs": 693.92, "initDurationMs": 397.68, "maxMemoryUsedMB": 84, "memorySizeMB": 128 }, "requestId": "6d68ca91-49c9-448d-89b8-7ca3e6dc66aa", } }

platform.restoreStart

Un evento platform.restoreStart indica que se inició un evento de restauración del entorno de funciones. En un evento de restauración del entorno, Lambda crea el entorno a partir de una instantánea almacenada en caché en lugar de inicializarlo desde cero. Para obtener más información, consulte Lambda SnapStart. Un objeto platform.restoreStart Event tiene la siguiente forma:

Event: Object - time: String - type: String = platform.restoreStart - record: PlatformRestoreStart

El objeto PlatformRestoreStart tiene los siguientes atributos:

  • functionName: String

  • functionVersion: String

  • instanceId?: String

  • instanceMaxMemory?: String

  • runtimeVersion?: String

  • runtimeVersionArn?: String

A continuación, se muestra un ejemplo de Event de tipo platform.restoreStart:

{ "time": "2022-10-12T00:00:15.064Z", "type": "platform.restoreStart", "record": { "runtimeVersion": "nodejs-14.v3", "runtimeVersionArn": "arn", "functionName": "myFunction", "functionVersion": "$LATEST", "instanceId": "82561ce0-53dd-47d1-90e0-c8f5e063e62e", "instanceMaxMemory": 256 } }

platform.restoreRuntimeDone

Un evento platform.restoreRuntimeDone indica que se completó un evento de restauración del entorno de funciones. En un evento de restauración del entorno, Lambda crea el entorno a partir de una instantánea almacenada en caché en lugar de inicializarlo desde cero. Para obtener más información, consulte Lambda SnapStart. Un objeto platform.restoreRuntimeDone Event tiene la siguiente forma:

Event: Object - time: String - type: String = platform.restoreRuntimeDone - record: PlatformRestoreRuntimeDone

El objeto PlatformRestoreRuntimeDone tiene los siguientes atributos:

  • errorType?: String

  • spans? Lista de objetos Span

  • status: objeto Status

A continuación, se muestra un ejemplo de Event de tipo platform.restoreRuntimeDone:

{ "time": "2022-10-12T00:00:15.064Z", "type": "platform.restoreRuntimeDone", "record": { "status": "success", "spans": [ { "name": "someTimeSpan", "start": "2022-08-02T12:01:23:521Z", "durationMs": 80.0 } ] } }

platform.restoreReport

Un evento platform.restoreReport contiene un informe general de un evento de restauración de funciones. Un objeto platform.restoreReport Event tiene la siguiente forma:

Event: Object - time: String - type: String = platform.restoreReport - record: PlatformRestoreReport

El objeto PlatformRestoreReport tiene los siguientes atributos:

A continuación, se muestra un ejemplo de Event de tipo platform.restoreReport:

{ "time": "2022-10-12T00:00:15.064Z", "type": "platform.restoreReport", "record": { "status": "success", "metrics": { "durationMs": 15.19 }, "spans": [ { "name": "someTimeSpan", "start": "2022-08-02T12:01:23:521Z", "durationMs": 30.0 } ] } }

platform.extension

Un evento extension contiene registros del código de extensión. Un objeto extension Event tiene la siguiente forma:

Event: Object - time: String - type: String = extension - record: {}

El objeto PlatformExtension tiene los siguientes atributos:

  • events: Lista de String

  • name: String

  • state: String

A continuación, se muestra un ejemplo de Event de tipo platform.extension:

{ "time": "2022-10-12T00:02:15.000Z", "type": "platform.extension", "record": { "events": [ "INVOKE", "SHUTDOWN" ], "name": "my-telemetry-extension", "state": "Ready" } }

platform.telemetrySubscription

Un evento platform.telemetrySubscription contiene información sobre una suscripción de extensión. Un objeto platform.telemetrySubscription Event tiene la siguiente forma:

Event: Object - time: String - type: String = platform.telemetrySubscription - record: PlatformTelemetrySubscription

El objeto PlatformTelemetrySubscription tiene los siguientes atributos:

  • name: String

  • state: String

  • types: lista de String

A continuación, se muestra un ejemplo de Event de tipo platform.telemetrySubscription:

{ "time": "2022-10-12T00:02:35.000Z", "type": "platform.telemetrySubscription", "record": { "name": "my-telemetry-extension", "state": "Subscribed", "types": [ "platform", "function" ] } }

platform.logsDropped

Un evento platform.logsDropped contiene información sobre los eventos eliminados. Lambda emite el evento platform.logsDropped cuando una función genera registros a una velocidad demasiado alta para que Lambda los procese. Cuando Lambda no puede enviar registros a CloudWatch o a la extensión suscripta a la API de telemetría a la velocidad a la que su función los produce, elimina los registros para evitar que la ejecución de la función se ralentice. Un objeto platform.logsDropped Event tiene la siguiente forma:

Event: Object - time: String - type: String = platform.logsDropped - record: PlatformLogsDropped

El objeto PlatformLogsDropped tiene los siguientes atributos:

  • droppedBytes: Integer

  • droppedRecords: Integer

  • reason: String

A continuación, se muestra un ejemplo de Event de tipo platform.logsDropped:

{ "time": "2022-10-12T00:02:35.000Z", "type": "platform.logsDropped", "record": { "droppedBytes": 12345, "droppedRecords": 123, "reason": "Some logs were dropped because the downstream consumer is slower than the logs production rate" } }

function

Un evento function contiene registros del código de la función. Un objeto function Event tiene la siguiente forma:

Event: Object - time: String - type: String = function - record: {}

El formato del campo record depende de si los registros de la función están formateados en texto sin formato o en formato JSON. Para obtener más información sobre las opciones de configuración del formato de registro, consulte Configuración de los formatos de registro JSON y de texto sin formato

El siguiente es un ejemplo de Event de un tipo function en el que el formato de registro es texto sin formato:

{ "time": "2022-10-12T00:03:50.000Z", "type": "function", "record": "[INFO] Hello world, I am a function!" }

El siguiente es un ejemplo de Event de un tipo function en el que el formato de registro es texto en formato JSON:

{ "time": "2022-10-12T00:03:50.000Z", "type": "function", "record": { "timestamp": "2022-10-12T00:03:50.000Z", "level": "INFO", "requestId": "79b4f56e-95b1-4643-9700-2807f4e68189", "message": "Hello world, I am a function!" } }
nota

Si la versión del esquema que está utilizando es anterior a la versión 2022-12-13, entonces "record" siempre se representa como una cadena, incluso cuando el formato de registro de la función esté configurado como JSON.

extension

Un evento extension contiene registros del código de extensión. Un objeto extension Event tiene la siguiente forma:

Event: Object - time: String - type: String = extension - record: {}

El formato del campo record depende de si los registros de la función están formateados en texto sin formato o en formato JSON. Para obtener más información sobre las opciones de configuración del formato de registro, consulte Configuración de los formatos de registro JSON y de texto sin formato

El siguiente es un ejemplo de Event de un tipo extension en el que el formato de registro es texto sin formato:

{ "time": "2022-10-12T00:03:50.000Z", "type": "extension", "record": "[INFO] Hello world, I am an extension!" }

El siguiente es un ejemplo de Event de un tipo extension en el que el formato de registro es texto en formato JSON:

{ "time": "2022-10-12T00:03:50.000Z", "type": "extension", "record": { "timestamp": "2022-10-12T00:03:50.000Z", "level": "INFO", "requestId": "79b4f56e-95b1-4643-9700-2807f4e68189", "message": "Hello world, I am an extension!" } }
nota

Si la versión del esquema que está utilizando es anterior a la versión 2022-12-13, entonces "record" siempre se representa como una cadena, incluso cuando el formato de registro de la función esté configurado como JSON.

Tipos de objetos compartidos

En esta sección, se detallan los tipos de objetos compartidos que admite la API de telemetría de Lambda.

InitPhase

Una enumeración de la cadena que describe la fase en la que se produce el paso de inicialización. En la mayoría de los casos, Lambda ejecuta el código de inicialización de la función durante la fase init. Sin embargo, en algunos casos de error, Lambda puede volver a ejecutar el código de inicialización de la función durante la fase invoke. (Esto se denomina inicio suprimido).

  • Tipo: String

  • Valores válidos: init|invoke|snap-start

InitReportMetrics

Un objeto que contiene métricas sobre una fase de inicialización.

  • Tipo: Object

Un objeto InitReportMetrics tiene la siguiente forma:

InitReportMetrics: Object - durationMs: Double

A continuación, se muestra un ejemplo de objeto InitReportMetrics:

{ "durationMs": 247.88 }

InitType

Una enumeración de la cadena que describe cómo Lambda inicializó el entorno.

  • Tipo: String

  • Valores válidos: on-demand|provisioned-concurrency

ReportMetrics

Un objeto que contiene métricas sobre una fase completa.

  • Tipo: Object

Un objeto ReportMetrics tiene la siguiente forma:

ReportMetrics: Object - billedDurationMs: Integer - durationMs: Double - initDurationMs?: Double - maxMemoryUsedMB: Integer - memorySizeMB: Integer - restoreDurationMs?: Double

A continuación, se muestra un ejemplo de objeto ReportMetrics:

{ "billedDurationMs": 694, "durationMs": 693.92, "initDurationMs": 397.68, "maxMemoryUsedMB": 84, "memorySizeMB": 128 }

RestoreReportMetrics

Un objeto que contiene métricas sobre una fase de restauración completa.

  • Tipo: Object

Un objeto RestoreReportMetrics tiene la siguiente forma:

RestoreReportMetrics: Object - durationMs: Double

A continuación, se muestra un ejemplo de objeto RestoreReportMetrics:

{ "durationMs": 15.19 }

RuntimeDoneMetrics

Un objeto que contiene métricas sobre una fase de invocación completa.

  • Tipo: Object

Un objeto RuntimeDoneMetrics tiene la siguiente forma:

RuntimeDoneMetrics: Object - durationMs: Double - producedBytes?: Integer

A continuación, se muestra un ejemplo de objeto RuntimeDoneMetrics:

{ "durationMs": 200.0, "producedBytes": 15 }

Span

Un objeto que contiene detalles acerca de un intervalo. Un intervalo representa una unidad de trabajo u operación en un seguimiento. Para obtener más información sobre intervalos, consulte Span en la página de la API de seguimiento del sitio web de OpenTelemetry Docs.

Lambda admite los siguientes intervalos para el evento platform.RuntimeDone:

  • El intervalo responseLatency describe cuánto tiempo tardó la función de Lambda en empezar a enviar la respuesta.

  • El intervalo responseDuration describe cuánto tiempo tardó la función de Lambda en terminar de enviar toda la respuesta.

  • El intervalo runtimeOverhead describe cuánto tiempo tardó el tiempo de ejecución de Lambda en indicar que estaba listo para procesar la siguiente invocación de la función. Este es el tiempo que tardó el tiempo de ejecución en llamar a la API de siguiente invocación para obtener el siguiente evento después de devolver la respuesta de su función.

A continuación, se muestra un ejemplo de objeto de intervalo responseLatency:

{ "name": "responseLatency", "start": "2022-08-02T12:01:23.521Z", "durationMs": 23.02 }

Status

Un objeto que describe el estado de una fase de inicialización o invocación. Si el estado es failure o error, el objeto Status también contiene un campo errorType que describe el error.

  • Tipo: Object

  • Valores de estado válidos: success|failure|error|timeout

TraceContext

Un objeto que describe las propiedades de un seguimiento.

  • Tipo: Object

Un objeto TraceContext tiene la siguiente forma:

TraceContext: Object - spanId?: String - type: TracingType enum - value: String

A continuación, se muestra un ejemplo de objeto TraceContext:

{ "spanId": "073a49012f3c312e", "type": "X-Amzn-Trace-Id", "value": "Root=1-62e900b2-710d76f009d6e7785905449a;Parent=0efbd19962d95b05;Sampled=1" }

TracingType

Una enumeración de la cadena que describe el tipo de seguimiento de un objeto TraceContext.

  • Tipo: String

  • Valores válidos: X-Amzn-Trace-Id