Referência de esquema para Event da API de Telemetria do Lambda - AWS Lambda

Referência de esquema para Event da API de Telemetria do Lambda

Use o endpoint da API de Telemetria do Lambda para assinar extensões para fluxos de telemetria. É possível recuperar o endpoint da API de telemetria da variável de ambiente AWS_LAMBDA_RUNTIME_API. Para enviar uma solicitação de API, vincule a versão da API (2022-07-01/) e telemetry/. Por exemplo:

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

Para obter a definição da Especificação OpenAPI (OAS) da versão das respostas de assinatura 2022-12-13, consulte os itens a seguir:

A tabela a seguir é um resumo de todos os tipos de objetos Event aos quais a API de telemetria oferece suporte.

Categoria Tipo de evento Descrição Esquema de registro de evento

Evento de plataforma

platform.initStart

A inicialização da função foi iniciada.

Esquema platform.initStart

Evento de plataforma

platform.initRuntimeDone

A inicialização da função foi concluída.

Esquema platform.initRuntimeDone

Evento de plataforma

platform.initReport

Um relatório sobre a inicialização da função.

Esquema platform.initReport

Evento de plataforma

platform.start

A invocação da função foi iniciada.

Esquema platform.start

Evento de plataforma

platform.runtimeDone

O runtime concluiu o processamento de um evento com sucesso ou com falha.

Esquema platform.runtimeDone

Evento de plataforma

platform.report

Um relatório sobre a invocação de função.

Esquema platform.report

Evento de plataforma

platform.restoreStart

A restauração do runtime foi iniciada.

Esquema platform.restoreStart

Evento de plataforma

platform.restoreRuntimeDone

A restauração do runtime foi concluída.

Esquema platform.restoreRuntimeDone

Evento de plataforma

platform.restoreReport

Relatório de restauração do runtime.

Esquema platform.restoreReport

Evento de plataforma

platform.telemetrySubscription

A extensão foi inscrita na API de telemetria.

Esquema platform.telemetrySubscription

Evento de plataforma

platform.logsDropped

O Lambda descartou entradas de log.

Esquema platform.logsDropped

Registros de função

function

Uma linha de log do código da função.

Esquema function

Logs de extensões

extension

Uma linha de log do código de extensão.

Esquema extension

Tipos de objeto Event da API de telemetria

Esta seção detalha os tipos de objetos Event aos quais a API de Telemetria do Lambda oferece suporte. Nas descrições dos eventos, um ponto de interrogação (?) indica que o atributo pode não estar presente no objeto.

platform.initStart

Um evento platform.initStart indica que a fase de inicialização da função foi iniciada. Um objeto Event platform.initStart tem a forma a seguir:

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

O objeto PlatformInitStart tem os seguintes atributos:

  • functionName: String

  • functionVersion: String

  • initializationType: objeto InitType

  • instanceId?: String

  • instanceMaxMemory?: Integer

  • phase (fase): objeto InitPhase

  • runtimeVersion?: String

  • runtimeVersionArn?: String

Veja a seguir um exemplo de Event do 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

Um evento platform.initRuntimeDone indica que a fase de inicialização da função foi concluída. Um objeto Event platform.initRuntimeDone tem a forma a seguir:

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

O objeto PlatformInitRuntimeDone tem os seguintes atributos:

Veja a seguir um exemplo de Event do 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

Um evento platform.initReport contém um relatório geral da fase de inicialização da função. Um objeto Event platform.initReport tem a forma a seguir:

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

O objeto PlatformInitReport tem os seguintes atributos:

Veja a seguir um exemplo de Event do 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

Um evento platform.start indica que a fase de invocação da função foi iniciada. Um objeto Event platform.start tem a forma a seguir:

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

O objeto PlatformStart tem os seguintes atributos:

Veja a seguir um exemplo de Event do 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

Um evento platform.runtimeDone indica que a fase de invocação da função foi concluída. Um objeto Event platform.runtimeDone tem a forma a seguir:

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

O objeto PlatformRuntimeDone tem os seguintes atributos:

Veja a seguir um exemplo de Event do 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

Um evento platform.report contém um relatório geral da fase de invocação da função. Um objeto Event platform.report tem a forma a seguir:

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

O objeto PlatformReport tem os seguintes atributos:

Veja a seguir um exemplo de Event do 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

Um evento platform.restoreStart indica que um evento de restauração do ambiente de função foi iniciado. Em um evento de restauração do ambiente, o Lambda cria o ambiente de um snapshot armazenado em cache, em vez de inicializá-lo do zero. Para ter mais informações, consulte Lambda SnapStart. Um objeto Event platform.restoreStart tem a forma a seguir:

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

O objeto PlatformRestoreStart tem os seguintes atributos:

  • functionName: String

  • functionVersion: String

  • instanceId?: String

  • instanceMaxMemory?: String

  • runtimeVersion?: String

  • runtimeVersionArn?: String

Veja a seguir um exemplo de Event do 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

Um evento platform.restoreRuntimeDone indica que um evento de restauração do ambiente de função foi concluído. Em um evento de restauração do ambiente, o Lambda cria o ambiente de um snapshot armazenado em cache, em vez de inicializá-lo do zero. Para ter mais informações, consulte Lambda SnapStart. Um objeto Event platform.restoreRuntimeDone tem a forma a seguir:

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

O objeto PlatformRestoreRuntimeDone tem os seguintes atributos:

  • errorType?: String

  • spans? : lista de objetos Span

  • status: objeto Status

Veja a seguir um exemplo de Event do 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

Um evento platform.restoreReport contém um relatório geral de um evento de restauração de função. Um objeto Event platform.restoreReport tem a forma a seguir:

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

O objeto PlatformRestoreReport tem os seguintes atributos:

Veja a seguir um exemplo de Event do 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

Um evento extension contém logs do código de extensão. Um objeto Event extension tem a forma a seguir:

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

O objeto PlatformExtension tem os seguintes atributos:

  • events (eventos): lista de String

  • name (nome): String

  • state (estado): String

Veja a seguir um exemplo de Event do 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

Um evento platform.telemetrySubscription contém informações sobre uma assinatura de extensão. Um objeto Event platform.telemetrySubscription tem a forma a seguir:

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

O objeto PlatformTelemetrySubscription tem os seguintes atributos:

  • name (nome): String

  • state (estado): String

  • types (tipos): lista de String

Veja a seguir um exemplo de Event do 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

Um evento platform.logsDropped contém informações sobre eventos descartados. O Lambda emite o evento platform.logsDropped quando uma função gera logs em uma taxa muito alta para o Lambda processá-los. Quando o Lambda não consegue enviar logs para o CloudWatch ou para a extensão inscrita na API Telemetry na velocidade em que a função os produz, ele descarta logs para impedir que a execução da função fique mais lenta. Um objeto Event platform.logsDropped tem a forma a seguir:

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

O objeto PlatformLogsDropped tem os seguintes atributos:

  • droppedBytes: Integer

  • droppedRecords: Integer

  • reason (razão): String

Veja a seguir um exemplo de Event do 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

Um evento function contém logs do código da função. Um objeto Event function tem a forma a seguir:

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

O formato do campo record vai variar dependendo se os logs da função estão em formato de texto simples ou JSON. Para saber mais sobre as opções de configuração de formato de logs, consulte Configurar logs em formato de texto simples e JSON.

Veja abaixo um exemplo de Event de tipo function em que o log está formatado em texto simples:

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

Veja abaixo um exemplo de Event de tipo function em que o log está formatado em 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

Se a versão do esquema que você está usando for mais antiga que a versão 2022-12-13, o campo "record" será sempre renderizado como uma string, mesmo se o formato do log da função estiver configurado como JSON.

extension

Um evento extension contém logs do código de extensão. Um objeto Event extension tem a forma a seguir:

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

O formato do campo record vai variar dependendo se os logs da função estão em formato de texto simples ou JSON. Para saber mais sobre as opções de configuração de formato de logs, consulte Configurar logs em formato de texto simples e JSON.

Veja abaixo um exemplo de Event de tipo extension em que o log está formatado em texto simples:

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

Veja abaixo um exemplo de Event de tipo extension em que o log está formatado em 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

Se a versão do esquema que você está usando for mais antiga que a versão 2022-12-13, o campo "record" será sempre renderizado como uma string, mesmo se o formato do log da função estiver configurado como JSON.

Tipos de objetos compartilhados

Esta seção detalha os tipos de objetos compartilhados aos quais a API de Telemetria do Lambda oferece suporte.

InitPhase

Uma enumeração da string que descreve a fase em que ocorre a etapa de inicialização. Na maioria dos casos, o Lambda executa o código de inicialização da função durante a fase init. No entanto, em alguns casos de erro, o Lambda pode executar novamente o código de inicialização da função durante a fase invoke. (Isso é chamado de suppressed init [inicialização suprimida]).

  • Tipo: String

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

InitReportMetrics

Um objeto que contém as métricas sobre uma fase de inicialização.

  • Tipo: Object

Um objeto InitReportMetrics tem a forma a seguir:

InitReportMetrics: Object - durationMs: Double

Veja a seguir um exemplo de um objeto InitReportMetrics:

{ "durationMs": 247.88 }

InitType

Uma enumeração de string que descreve como o Lambda inicializou o ambiente.

  • Tipo: String

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

ReportMetrics

Um objeto que contém métricas sobre uma fase concluída.

  • Tipo: Object

Um objeto ReportMetrics tem a forma a seguir:

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

Veja a seguir um exemplo de um objeto ReportMetrics:

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

RestoreReportMetrics

Um objeto que contém métricas sobre uma fase de restauração concluída.

  • Tipo: Object

Um objeto RestoreReportMetrics tem a forma a seguir:

RestoreReportMetrics: Object - durationMs: Double

Veja a seguir um exemplo de um objeto RestoreReportMetrics:

{ "durationMs": 15.19 }

RuntimeDoneMetrics

Um objeto que contém métricas sobre uma fase de invocação.

  • Tipo: Object

Um objeto RuntimeDoneMetrics tem a forma a seguir:

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

Veja a seguir um exemplo de um objeto RuntimeDoneMetrics:

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

Span

Um objeto que contém detalhes sobre um span. Um span representa uma unidade de trabalho ou de operação em um rastreamento. Para obter mais informações sobre os spans, consulte Span na página Tracing API (API de rastreamento) do site OpenTelemetry Docs.

O Lambda é compatível com os seguintes spans para o evento platform.RuntimeDone:

  • O span responseLatency descreve quanto tempo sua função do Lambda demorou para começar a enviar a resposta.

  • O span responseDuration descreve quanto tempo sua função do Lambda demorou para concluir o envio da resposta completa.

  • O span runtimeOverhead descreve quanto tempo levou para o runtime do Lambda sinalizar que está pronto para processar a próxima invocação da função. Esse é o tempo que o runtime levou para chamar a próxima API de invocação para obter o próximo evento após retornar a resposta da função.

Veja a seguir um exemplo de um objeto do span responseLatency:

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

Status

Um objeto que descreve o status de uma fase de inicialização ou invocação. Se o status for failure ouerror, o objeto Status também conterá um campo errorType com a descrição do erro.

  • Tipo: Object

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

TraceContext

Um objeto que descreve as propriedades de um rastreamento.

  • Tipo: Object

Um objeto TraceContext tem a forma a seguir:

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

Veja a seguir um exemplo de um objeto TraceContext:

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

TracingType

Uma enumeração de string que descreve o tipo de rastreamento em um objeto TraceContext.

  • Tipo: String

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