登录
首页 >  Golang >  Go问答

在 Lambda 函数中利用 Xray 上下文传递

来源:stackoverflow

时间:2024-02-24 11:39:24 130浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《在 Lambda 函数中利用 Xray 上下文传递》,正文内容主要涉及到等等,如果你正在学习Golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

问题内容

我们有一个包含大约 25 个 Lambda 的应用程序,我们希望在其中对所有(或大多数)AWS SDK 客户端调用实施 Xray 跟踪。我们已经完成了此处描述的 PoC 实现,并且它按预期工作。我想知道我们如何才能最好地传递所有客户端 ...WithContext() 方法所需的 xray 上下文对象?

我认为最好的方法是在创建实际客户端时传递上下文,但由于我们在调用实际处理程序之前创建客户端以允许重用这些客户端,因此这是不可能的,因为我们不这样做尚未访问请求上下文对象。将每个方法调用中的上下文传递给下游客户端(DynamoDB、Cognito、S3、KMS 等)感觉也不是一个好的解决方案,因为这会使代码变得混乱,而且我们基本上在各处传递完全相同的上下文。

是否有更好的方式来共享上下文?


解决方案


您提到客户端是在调用处理程序之前创建的。这确实是建议,但只要您在此初始化阶段不执行任何实际的 AWS SDK 调用,此方法确实会像您所看到的那样工作。

您是否需要自己手动传递上下文?我们提供了一个 API,允许您修补现有客户端以在内部执行上下文处理。您可以像现在一样在函数处理程序外部初始化客户端,然后通过调用 xray.AWS(CLIENT_HERE) 对其进行修补。然后你不需要手动传递上下文。在我看来,这会更干净、更容易管理。您的用例是否需要存在上下文?

以下文档展示了如何执行此操作:https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-go-awssdkclients.html

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>