本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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