Lambda 遥测 API Event 架构参考
使用 Lambda 遥测 API 端点订阅遥测流的扩展。您可以从 AWS_LAMBDA_RUNTIME_API 环境变量中检索遥测 API 端点。若要发送 API 请求,请附加 API 版本(2022-07-01/)和 telemetry/。例如:
http://${AWS_LAMBDA_RUNTIME_API}/2022-07-01/telemetry/
有关订阅响应版本 2022-12-13 的 OpenAPI 规范(OAS)定义,请参阅以下内容:
下表汇总了遥测 API 支持的所有 Event 对象类型。
| 类别 | 事件类型 | 说明 | 事件记录架构 | 
|---|---|---|---|
| 平台事件 | 
 | 函数初始化已启动。 | |
| 平台事件 | 
 | 函数初始化已完成。 | |
| 平台事件 | 
 | 函数初始化的报告。 | |
| 平台事件 | 
 | 函数调用已启动。 | |
| 平台事件 | 
 | 运行时通过成功或失败的方式完成对事件的处理。 | |
| 平台事件 | 
 | 函数调用的报告。 | |
| 平台事件 | 
 | 运行时恢复已开始。 | |
| 平台事件 | 
 | 运行时恢复已完成。 | |
| 平台事件 | 
 | 运行时恢复报告。 | |
| 平台事件 | 
 | 扩展订阅了遥测 API。 | |
| 平台事件 | 
 | Lambda 删除了日志条目。 | |
| 函数日志 | 
 | 来自函数代码的日志行。 | function 架构 | 
| 扩展日志 | 
 | 来自扩展代码的日志行。 | extension 架构 | 
目录
遥测 API Event 对象类型
    本节详细介绍 Lambda 遥测 API 支持的 Event 对象类型。在事件描述中,问号(?)表示该属性可能不存在于对象中。
platform.initStart
      platform.initStart 事件表示函数初始化阶段已开始。platform.initStart Event 对象具有以下形状:
Event: Object - time: String - type: String = platform.initStart - record: PlatformInitStart
PlatformInitStart 对象具有以下属性:
以下是 platform.initStart 类型的示例 Event:
{ "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
      platform.initRuntimeDone 事件表示函数初始化阶段已完成。platform.initRuntimeDone Event 对象具有以下形状:
Event: Object - time: String - type: String = platform.initRuntimeDone - record: PlatformInitRuntimeDone
PlatformInitRuntimeDone 对象具有以下属性:
以下是 platform.initRuntimeDone 类型的示例 Event:
{ "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
      platform.initReport 事件包含函数初始化阶段的总体报告。platform.initReport Event 对象具有以下形状:
Event: Object - time: String - type: String = platform.initReport - record: PlatformInitReport
PlatformInitReport 对象具有以下属性:
- 
          errorType? – 字符串 
- 
          initializationType – InitType对象
- 
          phase – InitPhase对象
- 
          metrics – InitReportMetrics对象
- 
          spans? – Span对象的列表。
- 
          status – Status对象
以下是 platform.initReport 类型的示例 Event:
{ "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
      platform.start 事件表示函数调用阶段已开始。platform.start Event 对象具有以下形状:
Event: Object - time: String - type: String = platform.start - record: PlatformStart
PlatformStart 对象具有以下属性:
- 
          requestId – String
- 
          version? – String
- 
          tracing? – TraceContext
以下是 platform.start 类型的示例 Event:
{ "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
      platform.runtimeDone 事件表示函数调用阶段已完成。platform.runtimeDone Event 对象具有以下形状:
Event: Object - time: String - type: String = platform.runtimeDone - record: PlatformRuntimeDone
PlatformRuntimeDone 对象具有以下属性:
- 
          errorType? – String
- 
          metrics? – RuntimeDoneMetrics对象
- 
          requestId – String
- 
          status – Status对象
- 
          spans? – Span对象的列表。
- 
          tracing? – TraceContext对象
以下是 platform.runtimeDone 类型的示例 Event:
{ "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
      platform.report 事件包含函数调用阶段的总体报告。platform.report Event 对象具有以下形状:
Event: Object - time: String - type: String = platform.report - record: PlatformReport
PlatformReport 对象具有以下属性:
- 
          metrics – ReportMetrics对象
- 
          requestId – String
- 
          spans? – Span对象的列表。
- 
          status – Status对象
- 
          tracing? – TraceContext对象
以下是 platform.report 类型的示例 Event:
{ "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
      platform.restoreStart 事件表示函数环境还原事件已启动。在环境还原事件中,Lambda 会从缓存的快照创建环境,而不是从头开始初始化该环境。有关更多信息,请参阅 Lambda SnapStart。platform.restoreStart Event 对象具有以下形状:
Event: Object - time: String - type: String = platform.restoreStart - record: PlatformRestoreStart
PlatformRestoreStart 对象具有以下属性:
- 
          functionName – String
- 
          functionVersion – String
- 
          instanceId? – String
- 
          instanceMaxMemory? – String
- 
          runtimeVersion? – String
- 
          runtimeVersionArn? – String
以下是 platform.restoreStart 类型的示例 Event:
{ "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
      platform.restoreRuntimeDone 事件表示函数环境还原事件已完成。在环境还原事件中,Lambda 会从缓存的快照创建环境,而不是从头开始初始化该环境。有关更多信息,请参阅 Lambda SnapStart。platform.restoreRuntimeDone Event 对象具有以下形状:
Event: Object - time: String - type: String = platform.restoreRuntimeDone - record: PlatformRestoreRuntimeDone
PlatformRestoreRuntimeDone 对象具有以下属性:
以下是 platform.restoreRuntimeDone 类型的示例 Event:
{ "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
      platform.restoreReport 事件包含函数还原事件的总体报告。platform.restoreReport Event 对象具有以下形状:
Event: Object - time: String - type: String = platform.restoreReport - record: PlatformRestoreReport
PlatformRestoreReport 对象具有以下属性:
- 
          errorType? – 字符串 
- 
          metrics? – RestoreReportMetrics对象
- 
          spans? – Span对象的列表。
- 
          status – Status对象
以下是 platform.restoreReport 类型的示例 Event:
{ "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
      extension 事件包含来自扩展代码的日志。extension Event 对象具有以下形状:
Event: Object - time: String - type: String = extension - record: {}
PlatformExtension 对象具有以下属性:
- 
          events – String列表
- 
          name – String
- 
          state – String
以下是 platform.extension 类型的示例 Event:
{ "time": "2022-10-12T00:02:15.000Z", "type": "platform.extension", "record": { "events": [ "INVOKE", "SHUTDOWN" ], "name": "my-telemetry-extension", "state": "Ready" } }
platform.telemetrySubscription
      platform.telemetrySubscription 事件包含有关扩展订阅的信息。platform.telemetrySubscription Event 对象具有以下形状:
Event: Object - time: String - type: String = platform.telemetrySubscription - record: PlatformTelemetrySubscription
PlatformTelemetrySubscription 对象具有以下属性:
- 
          name – String
- 
          state – String
- 
          types – String列表
以下是 platform.telemetrySubscription 类型的示例 Event:
{ "time": "2022-10-12T00:02:35.000Z", "type": "platform.telemetrySubscription", "record": { "name": "my-telemetry-extension", "state": "Subscribed", "types": [ "platform", "function" ] } }
platform.logsDropped
      platform.logsDropped 事件包含有关已丢弃事件的信息。函数输出日志的速度过快,超过 Lambda 的处理能力时,Lambda 会发出 platform.logsDropped 事件。当 Lambda 无法按照函数生成日志的速度将日志发送给 CloudWatch 或订阅到遥测 API 的扩展时,它会丢弃日志以防止函数的执行速度变慢。platform.logsDropped Event 对象具有以下形状:
Event: Object - time: String - type: String = platform.logsDropped - record: PlatformLogsDropped
PlatformLogsDropped 对象具有以下属性:
- 
          droppedBytes – Integer
- 
          droppedRecords – Integer
- 
          reason – String
以下是 platform.logsDropped 类型的示例 Event:
{ "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
      function 事件包含来自函数代码的日志。function Event 对象具有以下形状:
Event: Object - time: String - type: String = function - record: {}
record 字段的格式取决于函数的日志格式为纯文本还是 JSON 格式。要了解有关日志格式配置选项的更多信息,请参阅 配置 JSON 和纯文本日志格式
以下是日志格式为纯文本的 function 类型 Event 示例:
{ "time": "2022-10-12T00:03:50.000Z", "type": "function", "record": "[INFO] Hello world, I am a function!" }
以下是日志格式为 JSON 的 function 类型 Event 示例:
{ "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!" } }
注意
如果您使用的架构版本早于 2022-12-13 版本,则即使将函数的日志格式配置为 JSON,也会始终将 "record" 呈现为字符串。
extension
      extension 事件包含来自扩展代码的日志。extension Event 对象具有以下形状:
Event: Object - time: String - type: String = extension - record: {}
record 字段的格式取决于函数的日志格式为纯文本还是 JSON 格式。要了解有关日志格式配置选项的更多信息,请参阅 配置 JSON 和纯文本日志格式
以下是日志格式为纯文本的 extension 类型 Event 示例:
{ "time": "2022-10-12T00:03:50.000Z", "type": "extension", "record": "[INFO] Hello world, I am an extension!" }
以下是日志格式为 JSON 的 extension 类型 Event 示例:
{ "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!" } }
注意
如果您使用的架构版本早于 2022-12-13 版本,则即使将函数的日志格式配置为 JSON,也会始终将 "record" 呈现为字符串。
共享对象类型
本节详细介绍 Lambda 遥测 API 支持的共享对象类型。
InitPhase
      描述初始化步骤发生时的阶段的字符串枚举。在大多数情况下,Lambda 在 init 阶段期间运行函数初始化代码。但是,在某些发生错误的情况下,Lambda 可能会在 invoke 阶段期间重新运行函数初始化代码。(此情况称为抑制初始化。)
- 
          类型 – String
- 
          有效值 – init|invoke|snap-start
InitReportMetrics
      包含有关初始化阶段指标的对象。
- 
          类型 – Object
InitReportMetrics 对象具有以下形状:
InitReportMetrics: Object - durationMs: Double
以下是 InitReportMetrics 对象的示例:
{ "durationMs": 247.88 }
InitType
      描述 Lambda 如何初始化环境的字符串枚举。
- 
          类型 – String
- 
          有效值 – on-demand|provisioned-concurrency
ReportMetrics
      包含有关已完成阶段指标的对象。
- 
          类型 – Object
ReportMetrics 对象具有以下形状:
ReportMetrics: Object - billedDurationMs: Integer - durationMs: Double - initDurationMs?: Double - maxMemoryUsedMB: Integer - memorySizeMB: Integer - restoreDurationMs?: Double
以下是 ReportMetrics 对象的示例:
{ "billedDurationMs": 694, "durationMs": 693.92, "initDurationMs": 397.68, "maxMemoryUsedMB": 84, "memorySizeMB": 128 }
RestoreReportMetrics
      包含有关已完成还原阶段指标的对象。
- 
          类型 – Object
RestoreReportMetrics 对象具有以下形状:
RestoreReportMetrics: Object - durationMs: Double
以下是 RestoreReportMetrics 对象的示例:
{ "durationMs": 15.19 }
RuntimeDoneMetrics
      包含有关调用阶段指标的对象。
- 
          类型 – Object
RuntimeDoneMetrics 对象具有以下形状:
RuntimeDoneMetrics: Object - durationMs: Double - producedBytes?: Integer
以下是 RuntimeDoneMetrics 对象的示例:
{ "durationMs": 200.0, "producedBytes": 15 }
Span
      包含有关跨度详细信息的对象。跨度表示某个跟踪中的一个工作或操作单位。有关跨度的更多信息,请参阅 OpenTelemetry Docs 网站 Tracing API(跟踪 API)页面上的 Span
Lambda 对 platform.RuntimeDone 事件支持以下跨度:
- 
          responseLatency跨度描述了 Lambda 函数开始发送响应所需的时间。
- 
          responseDuration跨度描述 Lambda 函数完成发送整个响应所需的时间。
- 
          runtimeOverhead跨度描述了 Lambda 运行时系统发出信号表明其已准备好处理下一个函数调用所需的时间。这是返回函数响应后,运行时系统调用下一个调用 API 以获取下一个事件所需的时间。
以下是 responseLatency 跨度对象的示例:
{ "name": "responseLatency", "start": "2022-08-02T12:01:23.521Z", "durationMs": 23.02 }
Status
      描述初始化或调用阶段状态的对象。如果状态为 failure 或 error,则 Status 对象还会包含一个 errorType 字段,用来描述错误。
- 
          类型 – Object
- 
          有效状态值 – success|failure|error|timeout
TraceContext
      描述跟踪属性的对象。
- 
          类型 – Object
TraceContext 对象具有以下形状:
TraceContext: Object - spanId?: String - type: TracingType enum - value: String
以下是 TraceContext 对象的示例:
{ "spanId": "073a49012f3c312e", "type": "X-Amzn-Trace-Id", "value": "Root=1-62e900b2-710d76f009d6e7785905449a;Parent=0efbd19962d95b05;Sampled=1" }
TracingType
      描述 TraceContext 对象中跟踪类型的字符串枚举。
- 
          类型 – String
- 
          有效值 – X-Amzn-Trace-Id