选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

将 Lambda 遥测 API Event 对象转换为 OpenTelemetry 跨度

聚焦模式
将 Lambda 遥测 API Event 对象转换为 OpenTelemetry 跨度 - AWS Lambda

AWS Lambda 遥测 API 架构在语义上与 OpenTelemetry(OTel)兼容。这意味着您可以将 AWS Lambda 遥测 API Event 对象转换为 OpenTelemetry(OTel)跨度。转换时,不应将单个 Event 对象映射到单个 OTel 跨度。相反,您应该在单个 OTel 跨度中呈现与生命周期阶段相关的所有三个事件。例如,startruntimeDoneruntimeReport 事件代表单个函数调用。将所有这三项事件作为单个 OTel 跨度呈现。

您可以使用跨度事件或子(嵌套)跨度来转换事件。此页面上的表格描述了两种方法的遥测 API 架构属性和 OTel 跨度属性之间的映射。有关 OTel 跨度的更多信息,请参阅 OpenTelemetry Docs 网站 Tracing API(跟踪 API)页面上的 Span(跨度)。

使用 Span 事件映射到 OTel 跨度

在下表中,e 代表来自遥测源的事件。

映射 *Start 事件

OpenTelemetry Lambda 遥测 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 遥测 API 架构

Span.Name

扩展根据 type 字段生成此值。

Span.StartTime

使用匹配 *Start 事件中的 e.time

或者,请使用 e.time - e.metrics.durationMs

Span.EndTime

不适用,因为事件尚未完成。

Span.Kind

设置为 Server

Span.Status

如果 e.status 不等于 success,则设置为 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 遥测 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 跨度

下表描述了如何将 Lambda 遥测 API 事件转换为带 *RuntimeDone 跨度子(嵌套)跨度的 OTel 跨度。对于 *Start*Report 映射,请参阅 使用 Span 事件映射到 OTel 跨度 中的表,因为它们与子跨度相同。在此表中,e 代表来自遥测源的事件。

映射 *RuntimeDone 事件

OpenTelemetry Lambda 遥测 API 架构

Span.Name

扩展根据 type 字段生成此值。

Span.StartTime

使用匹配 *Start 事件中的 e.time

或者,请使用 e.time - e.metrics.durationMs

Span.EndTime

不适用,因为事件尚未完成。

Span.Kind

设置为 Server

Span.Status

如果 e.status 不等于 success,则设置为 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 一样。

下一主题:

Logs API

上一主题:

Event 架构参考
隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。