Lambda Telemetry API Event
スキーマリファレンス
Lambda Telemetry API エンドポイントを使用して、拡張機能をテレメトリーストリームにサブスクライブします。Telemetry API エンドポイントは、AWS_LAMBDA_RUNTIME_API
環境変数から取得できます。API リクエストを送信するには、API バージョン (2022-07-01/
) と telemetry/
を付加します。例:
http://${AWS_LAMBDA_RUNTIME_API}/2022-07-01/telemetry/
サブスクリプションレスポンスバージョン 2022-12-13
の OpenAPI Specification (OAS) 定義については、以下を参照してください。
以下の表は、Telemetry API がサポートするすべての Event
オブジェクトタイプをまとめたものです。
カテゴリ | イベントタイプ | 説明 | イベントレコードスキーマ |
---|---|---|---|
プラットフォームイベント |
|
関数の初期化が開始されました。 |
platform.initStart スキーマ |
プラットフォームイベント |
|
関数の初期化が完了しました。 |
|
プラットフォームイベント |
|
関数の初期化のレポートです。 |
platform.initReport スキーマ |
プラットフォームイベント |
|
関数の呼び出しが開始されました。 |
platform.start スキーマ |
プラットフォームイベント |
|
ランタイムが、成功または失敗のいずれかでイベントの処理を終了しました。 |
platform.runtimeDone スキーマ |
プラットフォームイベント |
|
関数の呼び出しのレポートです。 |
platform.report スキーマ |
プラットフォームイベント |
|
ランタイムの復元が開始されました。 |
|
プラットフォームイベント |
|
ランタイムの復元が完了しました。 |
|
プラットフォームイベント |
|
ランタイムの復元のレポート。 |
|
プラットフォームイベント |
|
拡張機能が Telemetry API にサブスクライブしました。 |
|
プラットフォームイベント |
|
Lambda がログエントリをドロップしました。 |
platform.logsDropped スキーマ |
関数ログ |
|
関数コードからのログ行です。 |
function スキーマ |
拡張ログ |
|
拡張コードからのログ行です。 |
extension スキーマ |
Telemetry API Event
オブジェクトタイプ
このセクションでは、Lambda Telemetry 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
イベントを発行します。関数が生成するレートで CloudWatch または Telemetry API にサブスクライブされている拡張機能にログを送信できない場合、Lambda は関数の実行速度が低下するのを防ぐためにログを削除します。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 Telemetry 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」ページにある「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