Lambda Telemetry API Event オブジェクトを OpenTelemetryスパンに変換する - AWS Lambda

Lambda Telemetry API Event オブジェクトを OpenTelemetryスパンに変換する

AWS Lambda Telemetry API スキーマは OpenTelemetry 、 (OTel ) と意味的に互換性があります。つまり、AWS LambdaTelemetry API Event オブジェクトを OpenTelemetry (OTel ) スパンに変換できます。変換するときは、単一の Event オブジェクトを単一の OTel スパンにマップしないようにしてください。その代わりに、ライフサイクルフェーズに関連する 3 つのイベントすべてを 単一の OTel スパンで提示する必要があります。例えば、startruntimeDone、および runtimeReport イベントは、単一の関数呼び出しを表します。これら 3 つのイベントのすべてを単一の OTel スパンとして提示します。

イベントは、スパンイベントまたは子 (ネストされた) スパンを使用して変換できます。このページの表には、両方のアプローチに関する Telemetry API スキーマプロパティと OTel スパンプロパティ間のマッピングが説明されています。OTel スパンの詳細については、 OpenTelemetry Docs ウェブサイトのトレース API ページの「スパン」を参照してください。

スパンイベントを使用して OTel スパンにマップする

以下の表にある e は、テレメトリソースからのイベントを表しています。

*Start イベントのマッピング
OpenTelemetry Lambda Telemetry API スキーマ

Span.Name

拡張機能は、type フィールドに基づいてこの値を生成します。

Span.StartTime

e.time を使用します。

Span.EndTime

イベントがまだ完了していないことから、該当するものはありません。

Span.Kind

Server に設定します。

Span.Status

Unset に設定します。

Span.TraceId

e.tracing.value にある AWS X-Ray ヘッダーを解析してから、TraceId 値を使用します。

Span.ParentId

e.tracing.value にある X-Ray ヘッダーを解析してから、Parent 値を使用します。

Span.SpanId

利用できる場合は、e.tracing.spanId を使用します。利用できない場合は、新しい SpanId を生成します。

Span.SpanContext.TraceState

X-Ray トレースコンテキストについては、該当するものはありません。

Span.SpanContext.TraceFlags

e.tracing.value にある X-Ray ヘッダーを解析してから、Sampled 値を使用します。

Span.Attributes

拡張機能は、ここに任意のカスタム値を追加できます。

*RuntimeDone イベントのマッピング
OpenTelemetry Lambda Telemetry API スキーマ

Span.Name

拡張機能は、type フィールドに基づいて値を生成します。

Span.StartTime

一致する *Start イベントからの e.time を使用します。

または、e.time - e.metrics.durationMs を使用します。

Span.EndTime

イベントがまだ完了していないことから、該当するものはありません。

Span.Kind

Server に設定します。

Span.Status

e.statussuccess ではない場合は、Error に設定します。

それ以外の場合は、Ok に設定します。

Span.Events[]

e.spans[] を使用します。

Span.Events[i].Name

e.spans[i].name を使用します。

Span.Events[i].Time

e.spans[i].start を使用します。

Span.TraceId

e.tracing.value にある AWS X-Ray ヘッダーを解析してから、TraceId 値を使用します。

Span.ParentId

e.tracing.value にある X-Ray ヘッダーを解析してから、Parent 値を使用します。

Span.SpanId

*Start イベントからのものと同じ SpanId を使用します。利用できない場合は、e.tracing.spanId を使用するか、新しい SpanId を生成します。

Span.SpanContext.TraceState

X-Ray トレースコンテキストについては、該当するものはありません。

Span.SpanContext.TraceFlags

e.tracing.value にある X-Ray ヘッダーを解析してから、Sampled 値を使用します。

Span.Attributes

拡張機能は、ここに任意のカスタム値を追加できます。

*Report イベントのマッピング
OpenTelemetry Lambda Telemetry API スキーマ

Span.Name

拡張機能は、type フィールドに基づいて値を生成します。

Span.StartTime

一致する *Start イベントからの e.time を使用します。

または、e.time - e.metrics.durationMs を使用します。

Span.EndTime

e.time を使用します。

Span.Kind

Server に設定します。

Span.Status

*RuntimeDone イベントと同じ値を使用します。

Span.TraceId

e.tracing.value にある AWS X-Ray ヘッダーを解析してから、TraceId 値を使用します。

Span.ParentId

e.tracing.value にある X-Ray ヘッダーを解析してから、Parent 値を使用します。

Span.SpanId

*Start イベントからのものと同じ SpanId を使用します。利用できない場合は、e.tracing.spanId を使用するか、新しい SpanId を生成します。

Span.SpanContext.TraceState

X-Ray トレースコンテキストについては、該当するものはありません。

Span.SpanContext.TraceFlags

e.tracing.value にある X-Ray ヘッダーを解析してから、Sampled 値を使用します。

Span.Attributes

拡張機能は、ここに任意のカスタム値を追加できます。

子スパンを使用して OTel スパンにマップする

以下の表には、*RuntimeDone スパンの子 (ネストされた) スパンを使用して、Lambda Telemetry API イベントを OTel スパンに変換する方法が説明されています。*Start および *Report マッピングについては、これらは子スパンでも同様であるため、スパンイベントを使用して OTel スパンにマップする の表を参照してください。この表の e は、テレメトリソースからのイベントを表しています。

*RuntimeDone イベントのマッピング
OpenTelemetry Lambda Telemetry API スキーマ

Span.Name

拡張機能は、type フィールドに基づいて値を生成します。

Span.StartTime

一致する *Start イベントからの e.time を使用します。

または、e.time - e.metrics.durationMs を使用します。

Span.EndTime

イベントがまだ完了していないことから、該当するものはありません。

Span.Kind

Server に設定します。

Span.Status

e.statussuccess ではない場合は、Error に設定します。

それ以外の場合は、Ok に設定します。

Span.TraceId

e.tracing.value にある AWS X-Ray ヘッダーを解析してから、TraceId 値を使用します。

Span.ParentId

e.tracing.value にある X-Ray ヘッダーを解析してから、Parent 値を使用します。

Span.SpanId

*Start イベントからのものと同じ SpanId を使用します。利用できない場合は、e.tracing.spanId を使用するか、新しい SpanId を生成します。

Span.SpanContext.TraceState

X-Ray トレースコンテキストについては、該当するものはありません。

Span.SpanContext.TraceFlags

e.tracing.value にある X-Ray ヘッダーを解析してから、Sampled 値を使用します。

Span.Attributes

拡張機能は、ここに任意のカスタム値を追加できます。

ChildSpan[i].Name

e.spans[i].name を使用します。

ChildSpan[i].StartTime

e.spans[i].start を使用します。

ChildSpan[i].EndTime

e.spans[i].start + e.spans[i].durations を使用します。

ChildSpan[i].Kind

Span.Kind と同じ。

ChildSpan[i].Status

Span.Status と同じ。

ChildSpan[i].TraceId

Span.TraceId と同じ。

ChildSpan[i].ParentId

Span.SpanId を使用します。

ChildSpan[i].SpanId

新しい SpanId を生成します。

ChildSpan[i].SpanContext.TraceState

X-Ray トレースコンテキストについては、該当するものはありません。

ChildSpan[i].SpanContext.TraceFlags

Span.SpanContext.TraceFlags と同じ。