1

我一直在尝试将 AWS Xray 合并到一个用 Typescript 和 HAPI 框架编写的 API 中。我一直在使用 Hapi Xray 插件来附加要附加到请求对象上的段属性。这样做时,我可以看到正确记录的 X 射线轨迹,如下所示

] UDP message sent: {"trace_id":"1-5dd03512-d121706a724d3ef4d680d613","id":"3ce8baf950c74044","start_time":1573926161.723,"name":"myAPI Name","service":{"runtime":"node","runtime_version":"v10.16.0","version":"1.10.1","name":"my-api"},"aws":{"ecs":{"container":"cf95a5a8b538"},"xray":{"sdk":"X-Ray for Node.js","sdk_version":"2.4.0","package":"aws-xray-sdk"}},"origin":"AWS::ECS::Container","http":{"request":{"method":"GET","user_agent":"PostmanRuntime/7.19.0","client_ip":"172.29.0.1","url":"http://localhost:8080/myapi/urlParam"}},"annotations":{"SegmentName":"otherData"},"end_time":1573926161.816}

但在这个过程中,我看到了这个错误。

2019-11-16 12:42:41.957 -05:00 [ERROR] Error: No sub/segment specified. A sub/segment must be provided for manual mode.
    at Object.contextMissingLogError [as contextMissing] (/app/node_modules/aws-xray-sdk-core/lib/context_utils.js:26:19)
    at Object.resolveSegment (/app/node_modules/aws-xray-sdk-core/lib/context_utils.js:77:43)
    at features.constructor.captureAWSRequest [as customRequestHandler] (/app/node_modules/aws-xray-sdk-core/lib/patchers/aws_p.js:66:29)
    at features.constructor.addAllRequestListeners (/app/node_modules/aws-sdk/lib/service.js:279:34)
    at features.constructor.makeRequest (/app/node_modules/aws-sdk/lib/service.js:203:10)
    at features.constructor.svc.(anonymous function) [as getItem] (/app/node_modules/aws-sdk/lib/service.js:673:23)
    at DocumentClient.makeServiceRequest (/app/node_modules/aws-sdk/lib/dynamodb/document_client.js:97:42)
    at DocumentClient.get (/app/node_modules/aws-sdk/lib/dynamodb/document_client.js:263:17)
    at DatabaseClient.get (/app/rocket-db/build/DatabaseClient.js:31:36)

有没有其他人看到过这样的事情?任何帮助,将不胜感激。

4

1 回答 1

0

在向已检测的 AWS 客户端发出请求时,您似乎正在使用手动模式并且未传递对活动分段或子分段的引用。我建议使用自动模式,这样您就不必担心手动传递段引用,这在进行 AWS 调用时会变得乏味。

如果您对手动模式有强烈的偏好,请参阅这些文档。您必须在参数中使用额外的键值对向已检测 AWS 客户端发出所有请求,其中键是Semgent,值是对活动段或子段的引用。

于 2019-11-22T21:38:50.077 回答