Node.js 从具有相同跟踪id的代码调用lambda?

Node.js 从具有相同跟踪id的代码调用lambda?,node.js,amazon-web-services,aws-lambda,aws-sdk-nodejs,Node.js,Amazon Web Services,Aws Lambda,Aws Sdk Nodejs,我有一个简单的lambda调用lambda B,我需要将amazon跟踪id传递给lambda B。在使用lambda.invoke时可以吗?在node.js中是否有一些简单的例子可以做到这一点 λA: const AWS = require('aws-sdk'); AWS.config.region = process.env.AWS_REGION; const lambda = new AWS.Lambda(); const params = { FunctionName: 'lam

我有一个简单的lambda调用lambda B,我需要将amazon跟踪id传递给lambda B。在使用lambda.invoke时可以吗?在node.js中是否有一些简单的例子可以做到这一点


λA:

const AWS = require('aws-sdk');
AWS.config.region = process.env.AWS_REGION;
const lambda = new AWS.Lambda();
const params = {
    FunctionName: 'lambda-b',
    InvocationType: 'Event',
    LogType: 'Tail',
    Payload: '{ "name" : "janko" }'
};
const result = await lambda.invoke(params).promise();
console.log(`TraceId: ${process.env._X_AMZN_TRACE_ID}`);
在lambda的日志中,A是'TraceId:Root=1-5be30a84-31c7700e813851b25fad8b5a;父项=6BCD85668F474FB;取样=0'



在lambda B的日志中是:“TraceId:Root=1-5be30a81-c552e60321963c04d75db028;父项=30247b5d7680c581;Sampled=0'

我无法直接传递跟踪id,但传递跟踪id的目的是在x射线中看到完整的事件流。您可以通过包装lambda.invoke来实现这一点(类似地,可以包装发送到SQS/SNS)

然后你可以在AWS的X光片上看到整个呼叫链

const AWSXRay = require('aws-xray-sdk');
const AWS = require('aws-sdk');

exports.handler = async (event) => {
    const lambda = AWSXRay.captureAWSClient(new AWS.Lambda());
    let params = {
        FunctionName: `lambda-b`,
        InvocationType: 'Event',
        Payload: '{ "name" : "janko" }'
    };            
    result = await lambda.invoke(params).promise();
};