【发布时间】:2021-06-11 07:05:50
【问题描述】:
我有一个由 API Gateway 事件触发的 AWS Lambda 函数。 API 网关配置为使用 X-Ray。
由于 Lambda 跟踪配置默认为 PassTrough,它也显示在 X-Ray 中(服务地图等)。
调用的 Lambda 使用 node.js aws-sdk 调用另一个 lambda。如果我理解正确,则必须将跟踪 ID 传递给下一次调用,以便在 X-Ray 中也显示此 Lambda。在API of the SDK 中我没有找到这个选项。
const result = await lambda
.invoke(lambdaParamsCreateUser)
.promise()
我怎样才能做到这一点?如何跟踪原始请求的调用?
根据@Balu Vyamajala 的提示,我将 AWS-SDK 导入更改为以下内容:
import AWS from "aws-sdk";
import AwsXRay from "aws-xray-sdk-core";
const aws = AwsXRay.captureAWS(AWS);
export default aws;
我在为我的第二个功能开票时使用它:
import AWS from "aws";
const Lambda = AWS.Lambda;
// ...
const lambda = new Lambda({ region: "eu-central-1" });
const lambdaPromise = lambda
.invoke({
FunctionName: AUTH_CREATE_USER_FUNC,
InvocationType: "RequestResponse",
Qualifier: AUTH_CREATE_USER_FUNC_VERSION,
Payload: JSON.stringify({
eMail: eMail,
device: device,
customerId: customerId,
}),
LogType: "Tail",
})
.promise()
但是在 X-Ray 中没有调用链 :-(
我犯错了吗?
【问题讨论】:
标签: node.js amazon-web-services aws-lambda aws-xray