Closed
Description
Hi,
I have an SQS queue subscribed to an SNS topic and in turns triggers a Lambda on new SQS messages.
I've tried following the docs here: https://docs.aws.amazon.com/xray/latest/devguide/xray-services-sqs.html to create segments related to SQS, but so far everything I tried didn't work.
I've added a segment this way:
const traceHeaderStr = record.attributes.AWSTraceHeader;
const traceData = AWSXRay.utils.processTraceData(traceHeaderStr);
const segment = new AWSXRay.Segment("SQS", traceData.Root, traceData.Parent);
delete segment.service;
segment.origin = "AWS::SQS";
segment.inferred = true;
segment.addPluginData({
operation: "SendEvent",
region: record.awsRegion,
request_id: context.awsRequestId,
queue_url: record.eventSourceARN
});
What this produces though is something like this:
As you can see, the SQS segment is created with SNS as a parent, however the Lambda invocation is disconnected.
I've also tried other approaches that didn't work:
- overriding the
_X_AMZ_TRACE_ID
env variable with the AWSTraceHeader, before initializing the XRay SDK - setting the tracing to "PassThrough" and creating segments manually
Could you advise a possible workaround, to get this working?
Thank you!