如何将 Xray 跟踪 ID 发送到 AWS 上的 API 网关?

How can I send xray trace id to API gateway on AWS?

我有一个启用了 xray 的 lambda,它将 http 请求发送到 API 网关,link 发送到另一个 lambda。我还在 API 网关中启用了 xray。但它不会跟踪整个流程,因为第一个 lambda 中的跟踪 ID 未被 API 网关使用。

我的问题是如何通过 http rest 请求发送跟踪 ID?我想link从一端到另一端流动。

我在 nodejs 中使用 axios,我不知道 awsXRay.captureHTTPsGlobal 如何与这个库一起工作。

AWS Lambda 启用了自动检测,这意味着对 aws 服务的调用被跟踪。但是当涉及到 http(s) 客户端时,显式检测是必要的。

var AWSXRay = require('aws-xray-sdk');
AWSXRay.captureHTTPsGlobal(require('http'));
var http = require('http');

Tracing calls to downstream HTTP web services using the X-Ray SDK for Node.js

您可以追溯整个流程,但您需要手动捕获所有 HTTP/S 外部请求:

const awsXRay = require("aws-xray-sdk")
awsXRay.captureAWS(require("aws-sdk"))
awsXRay.captureHTTPsGlobal(require("http"))
awsXRay.captureHTTPsGlobal(require("https"))

并在您的处理程序中(在发出 HTTP 请求之前)允许跟踪基于承诺的请求(例如 Axios):

awsXRay.capturePromise()