遙 Lambda API Event 結構描述參考 - AWS Lambda

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

遙 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/

如需訂閱回應版本的「開放API規格」(OAS) 定義2022-12-13,請參閱下列內容:

下表是遙測API支援之所有Event物件類型的摘要。

類別 事件類型 描述 事件記錄結構描述

平台事件

platform.initStart

函數初始化已開始。

platform.initStart 結構描述

平台事件

platform.initRuntimeDone

函數初始化已完成。

platform.initRuntimeDone 結構描述

平台事件

platform.initReport

函數初始化報告。

platform.initReport 結構描述

平台事件

platform.start

函數調用已開始。

platform.start 結構描述

平台事件

platform.runtimeDone

執行階段已完成處理的事件,結果為成功或失敗。

platform.runtimeDone 結構描述

平台事件

platform.report

函數調用報告。

platform.report 結構描述

平台事件

platform.restoreStart

執行時間還原已開始。

platform.restoreStart 結構描述

平台事件

platform.restoreRuntimeDone

執行時間還原已完成。

platform.restoreRuntimeDone 結構描述

平台事件

platform.restoreReport

執行時間還原報告。

platform.restoreReport 結構描述

平台事件

platform.telemetrySubscription

已訂閱遙測的擴充功能API。

platform.telemetrySubscription 結構描述

平台事件

platform.logsDropped

Lambda 已捨棄日誌項目。

platform.logsDropped 結構描述

函數日誌

function

函數程式碼的日誌行。

function 結構描述

延伸項目日誌

extension

延伸項目程式碼的日誌行。

extension 結構描述

遙測APIEvent物件類型

本節詳細說明 Lambda 遙測API支援的Event物件類型。在事件描述中,問號 (?) 表示該屬性可能不存在於物件中。

platform.initStart

platform.initStart 事件表示函數初始化階段已開始。platform.initStart Event 物件的結構如下:

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

PlatformInitStart 物件具有下列屬性:

  • functionNameString

  • functionVersionString

  • initializationTypeInitType 物件

  • instanceId?String

  • instanceMaxMemory?Integer

  • phaseInitPhase 物件

  • runtimeVersion?String

  • runtimeVersionArn?String

以下是 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 物件具有下列屬性:

以下是 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 物件具有下列屬性:

  • requestIdString

  • 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 物件具有下列屬性:

以下是 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 物件具有下列屬性:

以下是 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 SnapStartplatform.restoreStart Event 物件的結構如下:

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

PlatformRestoreStart 物件具有下列屬性:

  • functionNameString

  • functionVersionString

  • 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 SnapStartplatform.restoreRuntimeDone Event 物件的結構如下:

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

PlatformRestoreRuntimeDone 物件具有下列屬性:

  • errorType?String

  • spans?Span 物件的清單

  • statusStatus 物件

以下是 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 物件具有下列屬性:

以下是 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 物件具有下列屬性:

  • eventsString 清單

  • nameString

  • stateString

以下是 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 物件具有下列屬性:

  • nameString

  • stateString

  • typesString 清單

以下是 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 物件具有下列屬性:

  • droppedBytesInteger

  • droppedRecordsInteger

  • reasonString

以下是 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!" }

以下是記錄格式為Eventfunction的類型範例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!" } }
注意

如果您使用的模式版本比2022-12-13版本舊,則即使函數"record"的日誌記錄格式配置為,也始終將其呈現為字符串JSON。

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!" }

以下是記錄格式為Eventextension的類型範例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!" } }
注意

如果您使用的模式版本比2022-12-13版本舊,則即使函數"record"的日誌記錄格式配置為,也始終將其呈現為字符串JSON。

共用物件類型

本節詳細說明 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 文件網站的追蹤API頁面上的跨距。

Lambda 針對 platform.RuntimeDone 事件支援下列跨度:

  • responseLatency 跨度描述 Lambda 函數開始傳送回應所花費的時間。

  • responseDuration 跨度描述 Lambda 函數完成傳送整個回應所花費的時間。

  • runtimeOverhead 跨度描述 Lambda 執行期表示已準備好處理下一個函數調用所花費的時間。這是運行時在返回函數響應後調用下一個調用API以獲取下一個事件所花費的時間。

下列為 responseLatency 跨度物件的範例:

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

Status

描述初始化或呼叫階段狀態的物件。如果狀態為 failureerror,則 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