【问题标题】:How to pass the same trace ID from one lambda to another in GoLang?如何在 GoLang 中将相同的跟踪 ID 从一个 lambda 传递到另一个?
【发布时间】:2022-03-01 02:05:57
【问题描述】:

我正在尝试使用 GO 代码在应用程序中检测 XRay 跟踪。我希望在多个 lambda 阶段传递相同的跟踪 ID(2-3 个主管 lambda 一个接一个地调用 2-3 个工作 lambda),以便它们在一个 AWS XRay 服务地图中可见。每个 lambda 都可以访问 S3 存储桶、DynamoDB 和 PostgreSQL RDS 实例来执行一些操作。到目前为止,每个 lambda 阶段都有不同的跟踪 ID,当我刚刚尝试为 lambda 启用 X 射线跟踪时,这些 ID 在 XRay 服务图中显示为独立的图表(未连接)。还需要在 XRay 服务地图中查看上面提到的其他 AWS 服务。 任何示例 GO 代码都会非常有用。

例如:

Req := &slambda.InvokeInput{
            FunctionName:   aws.String(endInfo.workerArn),
            InvocationType: aws.String("RequestResponse"),
            Payload:        jsonData,
        }

上面是一段从主管 lambda 处理程序调用工作 lambda 的代码。我们如何将跟踪 id 或上下文从第一个 lambda 传递给后续 lambda,以便 AWS Xray 自动拾取它并显示相互关联的 xray 映射整个应用程序的?

【问题讨论】:

标签: amazon-web-services go aws-lambda aws-xray


【解决方案1】:

请使用aws-xray-sdk-go 检测从您的主管 lambda 函数到工作 lambda 函数的调用。这将自动传播您的跟踪 ID。您可以在此处找到有关 X-Ray Go SDK 的所有信息:https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-go.html

如果您可以在 lambda 函数中使用 OpenTelemetry for Go,那就更好了。 OpenTelemetry 现在对 X 射线跟踪具有竞争性支持,并且是一种插入式解决方案。请在此处找到更多信息:https://aws-otel.github.io/docs/getting-started/lambda/lambda-go

【讨论】:

    猜你喜欢
    • 2021-01-17
    • 2020-03-15
    • 2019-03-12
    • 2021-10-25
    • 2014-06-12
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多