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