Lambda Telemetry API Event スキーマリファレンス - AWS Lambda

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.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

拡張機能が Telemetry API にサブスクライブしました。

platform.telemetrySubscription スキーマ

プラットフォームイベント

platform.logsDropped

Lambda がログエントリをドロップしました。

platform.logsDropped スキーマ

関数ログ

function

関数コードからのログ行です。

function スキーマ

拡張ログ

extension

拡張コードからのログ行です。

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 オブジェクトには以下の属性があります。

  • functionNameString

  • functionVersionString

  • initializationTypeInitType オブジェクト

  • instanceId?String

  • instanceMaxMemory?Integer

  • phaseInitPhase オブジェクト

  • runtimeVersion?String

  • runtimeVersionArn?String

以下は、タイプ platform.initStartEvent の例です。

{ "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 オブジェクトには以下の属性があります。

  • initializationTypeInitType オブジェクト

  • phaseInitPhase オブジェクト

  • statusStatus オブジェクト

  • spans?Span オブジェクトのリスト

以下は、タイプ platform.initRuntimeDoneEvent の例です。

{ "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? – 文字列

  • initializationTypeInitType オブジェクト

  • phaseInitPhase オブジェクト

  • metricsInitReportMetrics オブジェクト

  • spans?Span オブジェクトのリスト

  • statusStatus オブジェクト

以下は、タイプ platform.initReportEvent の例です。

{ "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.startEvent の例です。

{ "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 オブジェクト

  • requestIdString

  • statusStatus オブジェクト

  • spans?Span オブジェクトのリスト

  • tracing?TraceContext オブジェクト

以下は、タイプ platform.runtimeDoneEvent の例です。

{ "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 オブジェクトには以下の属性があります。

  • metricsReportMetrics オブジェクト

  • requestIdString

  • spans?Span オブジェクトのリスト

  • statusStatus オブジェクト

  • tracing?TraceContext オブジェクト

以下は、タイプ platform.reportEvent の例です。

{ "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 オブジェクトには以下の属性があります。

  • functionNameString

  • functionVersionString

  • instanceId?String

  • instanceMaxMemory?String

  • runtimeVersion?String

  • runtimeVersionArn?String

以下は、タイプ platform.restoreStartEvent の例です。

{ "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 オブジェクトには以下の属性があります。

  • errorType?String

  • spans?Span オブジェクトのリスト

  • statusStatus オブジェクト

以下は、タイプ platform.restoreRuntimeDoneEvent の例です。

{ "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 オブジェクトのリスト

  • statusStatus オブジェクト

以下は、タイプ platform.restoreReportEvent の例です。

{ "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.extensionEvent の例です。

{ "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.telemetrySubscriptionEvent の例です。

{ "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 オブジェクトには以下の属性があります。

  • droppedBytesInteger

  • droppedRecordsInteger

  • reasonString

以下は、タイプ platform.logsDroppedEvent の例です。

{ "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 とプレーンテキストのログフォーマットの設定」を参照してください。

以下は、ログ形式がプレーンテキストであるタイプ functionEvent 例です。

{ "time": "2022-10-12T00:03:50.000Z", "type": "function", "record": "[INFO] Hello world, I am a function!" }

以下は、ログ形式が JSON であるタイプ functionEvent 例です。

{ "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 とプレーンテキストのログフォーマットの設定」を参照してください。

以下は、ログ形式がプレーンテキストであるタイプ extensionEvent 例です。

{ "time": "2022-10-12T00:03:50.000Z", "type": "extension", "record": "[INFO] Hello world, I am an extension!" }

以下は、ログ形式が JSON であるタイプ extensionEvent 例です。

{ "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