Skip to content

[question] How to instrument SQS lambdas properly? #2300

Open
@Dreamescaper

Description

@Dreamescaper

Component

OpenTelemetry.Instrumentation.AWSLambda

Question details

SQSEvent might contains multiple messages. How to handle them properly?

I can see that ExtractParentContext supports SQSEvent.SQSMessage input. So does it make sense to wrap each message processing, like this?

foreach (var message in sqsEvent.Records)
{
	await AWSLambdaWrapper.TraceAsync(tracerProvider, (message, context) => HandleAsync(...), message, lambdaContext);
}

Or maybe wrap both SQSEvent and SQSEvent.SQSMessage?

await AWSLambdaWrapper.TraceAsync(tracerProvider, async (sqsEvent, lambdaContext) =>
{
    foreach (var message in sqsEvent.Records)
    {
        await AWSLambdaWrapper.TraceAsync(tracerProvider, (message, context) => HandleAsync(...), message, lambdaContext);
    }
}, sqsEvent, lambdaContext);

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions