Description
The kamon-aws-sdk module has inconsistent span naming between SDK v1 and v2:
- SDK v1 (
AwsSdkRequestHandler): Names spans as serviceName.operationName → e.g. AmazonDynamoDBv2.Query
- SDK v2 (
AwsSdkClientExecutionInterceptor): Names spans as just operationName → e.g. Query
This makes it difficult to identify which AWS service a span belongs to in distributed traces, especially when an application uses multiple AWS services (DynamoDB, S3, SQS, STS, etc.) — a Query span is ambiguous without the service name.
Expected Behavior
SDK v2 spans should include the service name, matching the v1 convention: DynamoDb.Query, S3.GetObject, Sqs.SendMessage, etc.
Root Cause
In AwsSdkClientExecutionInterceptor.scala, the span is created with just the operation name. The service name is available via context.request().let(SdkHttpRequest::host) parsing or executionAttributes.getAttribute(SdkExecutionAttribute.SERVICE_NAME) but is not used.
The v1 handler was written later and includes the service name, but the v2 interceptor was never updated to match.
Fix
PR #1420 addresses this with a one-line change to prepend the service name.
Description
The
kamon-aws-sdkmodule has inconsistent span naming between SDK v1 and v2:AwsSdkRequestHandler): Names spans asserviceName.operationName→ e.g.AmazonDynamoDBv2.QueryAwsSdkClientExecutionInterceptor): Names spans as justoperationName→ e.g.QueryThis makes it difficult to identify which AWS service a span belongs to in distributed traces, especially when an application uses multiple AWS services (DynamoDB, S3, SQS, STS, etc.) — a
Queryspan is ambiguous without the service name.Expected Behavior
SDK v2 spans should include the service name, matching the v1 convention:
DynamoDb.Query,S3.GetObject,Sqs.SendMessage, etc.Root Cause
In
AwsSdkClientExecutionInterceptor.scala, the span is created with just the operation name. The service name is available viacontext.request().let(SdkHttpRequest::host)parsing orexecutionAttributes.getAttribute(SdkExecutionAttribute.SERVICE_NAME)but is not used.The v1 handler was written later and includes the service name, but the v2 interceptor was never updated to match.
Fix
PR #1420 addresses this with a one-line change to prepend the service name.