【发布时间】:2018-01-23 14:46:02
【问题描述】:
我正在尝试将 AWS X-Ray 集成到我的一个应用程序中,但我感到很沮丧。我觉得亚马逊的文档在示例方面有点缺乏,但希望你们中的一些人能帮助我。
我的主要应用程序是一个用 C# 构建的 Web API 微服务。我有一个单独的客户端调用微服务,然后微服务与 1)第三方 API 和 2)一些 AWS 服务(如 DynamoDb 和 SNS)进行通信。此外,我围绕 AWS 服务构建了一个包装库,因此我没有直接调用 AWSDynamoDBClient,而是通过我的包装器调用它。
在 AWS X-Ray 控制台上,我可以查看到/来自我的微服务的所有传入和传出调用。但是我没有看到 DynamoDb 的任何内容。如果我直接在我的微服务中创建 AWSDynamoDBClient(绕过包装器),那么我会按预期看到所有流量。但是一旦我通过包装器调用它,就什么也没有发生。
我什至尝试将 AWSXRayRecorder.Instance 从我的微服务注入到我的包装器中,但仍然没有。我不确定自己做错了什么,此时我有点不知所措。
有什么建议吗?
编辑: 在我的 AWS 包装器库中,我正在执行以下操作:
client = new AmazonDynamoDBClient();
new AWSSdkTracingHandler(recorder).AddEventHandler(client);
recorder 是从调用微服务注入的AWSXRayRecorder.Instance(我不确定是否有必要像这样传递它,或者我是否可以直接从库中调用AWSXRayRecorder.Instance)。
这不起作用。如果我在微服务中编写相同的代码,那么它可以工作,我可以在 AWS 控制台的 X-Ray 图中看到 DynamoDb 节点
【问题讨论】: