【问题标题】:AWS XRay fails when being used in Typescript with HapiAWS XRay 在带有 Hapi 的 Typescript 中使用时失败
【发布时间】:2019-11-16 17:57:35
【问题描述】:

我一直在尝试将 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)

其他人见过这样的事情吗? 任何帮助将不胜感激。

【问题讨论】:

    标签: amazon-web-services aws-sdk hapi aws-xray x-ray


    【解决方案1】:

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

    如果您非常喜欢手动模式,请参阅these docs。您必须在参数中使用额外的键值对向检测过的 AWS 客户端发出所有请求,其中键是 Semgent,值是对活动段或子段的引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多