Вызывать лямбду из кода с таким же идентификатором трассировки? - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть простая лямбда A, вызывающая лямбда B, мне нужно передать идентификатор амазонки в lambda B. Возможно ли это при использовании lambda.invoke? У вас есть простой пример сделать это в node.js?


Лямбда А:

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}`);

В журнале лямбда A есть 'TraceId: Root = 1-5be30a84-31c7700e813851b25fad8b5a; Родитель = 6bcdc85668f474fb; Выборка = 0'


В журнале лямбда-B есть: 'TraceId: Root = 1-5be30a81-c552e60321963c04d75db028; родитель = 30247b5d7680c581; выборка = 0'

1 Ответ

0 голосов
/ 12 декабря 2018

Мне не удалось напрямую передать идентификатор трассировки, однако цель передачи идентификатора трассировки состояла в том, чтобы увидеть полный поток событий на рентгеновском снимке. Вы можете достичь этого, упаковав файл lambda.invoke (аналогично можно отправить в SQS / SNS).

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();
};

Тогда вы сможете увидеть всю цепочку звонков в AWS X-Ray.

...