本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 物件類型。
| 類別 | 事件類型 | 描述 | 事件記錄結構描述 |
|---|---|---|---|
|
平台事件 |
|
函數初始化已開始。 |
platform.initStart 結構描述 |
|
平台事件 |
|
函數初始化已完成。 |
|
|
平台事件 |
|
函數初始化報告。 |
platform.initReport 結構描述 |
|
平台事件 |
|
函數調用已開始。 |
platform.start 結構描述 |
|
平台事件 |
|
執行階段已完成處理的事件,結果為成功或失敗。 |
platform.runtimeDone 結構描述 |
|
平台事件 |
|
函數調用報告。 |
platform.report 結構描述 |
|
平台事件 |
|
執行時間還原已開始。 |
|
|
平台事件 |
|
執行時間還原已完成。 |
|
|
平台事件 |
|
執行時間還原報告。 |
|
|
平台事件 |
|
延伸項目已訂閱遙測 API。 |
|
|
平台事件 |
|
Lambda 已捨棄日誌項目。 |
platform.logsDropped 結構描述 |
|
函數日誌 |
|
函數程式碼的日誌行。 |
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 版本舊,則即使函數的 "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!" }
以下是日誌格式為 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 版本舊,則即使函數的 "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
描述初始化或呼叫階段狀態的物件。如果狀態為 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