From 23e689c72aedd2707acd56470f8d844286142e54 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Wed, 22 Oct 2025 15:51:12 +0300 Subject: [PATCH 1/3] Update aws sdk1 semconv --- .../awssdk/v1_11/AwsExperimentalAttributes.java | 4 ---- .../awssdk/v1_11/AwsSdkAttributesExtractor.java | 8 ++++++++ .../AwsSdkExperimentalAttributesExtractor.java | 8 -------- .../awssdk/v1_11/AbstractDynamoDbClientTest.java | 2 -- .../awssdk/v1_11/AbstractKinesisClientTest.java | 4 ++-- .../awssdk/v1_11/AbstractS3ClientTest.java | 9 +++++---- .../AbstractSqsSuppressReceiveSpansTest.java | 11 ++++++----- .../awssdk/v1_11/AbstractSqsTracingTest.java | 15 ++++++++------- 8 files changed, 29 insertions(+), 32 deletions(-) diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsExperimentalAttributes.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsExperimentalAttributes.java index 41255a2fe3e8..81fb7afbab2a 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsExperimentalAttributes.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsExperimentalAttributes.java @@ -11,11 +11,7 @@ final class AwsExperimentalAttributes { static final AttributeKey AWS_AGENT = stringKey("aws.agent"); - static final AttributeKey AWS_BUCKET_NAME = stringKey("aws.bucket.name"); - static final AttributeKey AWS_QUEUE_URL = stringKey("aws.queue.url"); static final AttributeKey AWS_QUEUE_NAME = stringKey("aws.queue.name"); - static final AttributeKey AWS_STREAM_NAME = stringKey("aws.stream.name"); - static final AttributeKey AWS_TABLE_NAME = stringKey("aws.table.name"); // Work is underway to add these two keys to the SemConv AWS registry, in line with other AWS // resources. diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkAttributesExtractor.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkAttributesExtractor.java index 00fef4ab4bbb..538c02d2515a 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkAttributesExtractor.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkAttributesExtractor.java @@ -33,6 +33,10 @@ class AwsSdkAttributesExtractor implements AttributesExtractor, Respo stringKey("aws.step_functions.activity.arn"); private static final AttributeKey AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN = stringKey("aws.step_functions.state_machine.arn"); + private static final AttributeKey AWS_S3_BUCKET = stringKey("aws.s3.bucket"); + private static final AttributeKey AWS_SQS_QUEUE_URL = stringKey("aws.sqs.queue.url"); + private static final AttributeKey AWS_KINESIS_STREAM_NAME = + stringKey("aws.kinesis.stream_name"); // AmazonWebServiceResult is only available in v1.11.33 and later private static boolean canGetResponseMetadata() { @@ -64,6 +68,10 @@ public void onStart(AttributesBuilder attributes, Context parentContext, Request AWS_STEP_FUNCTIONS_ACTIVITY_ARN, originalRequest, RequestAccess::getStepFunctionsActivityArn); + setAttribute(attributes, AWS_S3_BUCKET, originalRequest, RequestAccess::getBucketName); + setAttribute(attributes, AWS_SQS_QUEUE_URL, originalRequest, RequestAccess::getQueueUrl); + setAttribute( + attributes, AWS_KINESIS_STREAM_NAME, originalRequest, RequestAccess::getStreamName); } @Override diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkExperimentalAttributesExtractor.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkExperimentalAttributesExtractor.java index a30010fc58b7..bb8773ec3b44 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkExperimentalAttributesExtractor.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkExperimentalAttributesExtractor.java @@ -6,13 +6,9 @@ package io.opentelemetry.instrumentation.awssdk.v1_11; import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_AGENT; -import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_BUCKET_NAME; import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_LAMBDA_ARN; import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_LAMBDA_NAME; import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_QUEUE_NAME; -import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_QUEUE_URL; -import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_STREAM_NAME; -import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_TABLE_NAME; import com.amazonaws.Request; import com.amazonaws.Response; @@ -32,11 +28,7 @@ public void onStart(AttributesBuilder attributes, Context parentContext, Request attributes.put(AWS_AGENT, COMPONENT_NAME); Object originalRequest = request.getOriginalRequest(); - setRequestAttribute(attributes, AWS_BUCKET_NAME, originalRequest, RequestAccess::getBucketName); - setRequestAttribute(attributes, AWS_QUEUE_URL, originalRequest, RequestAccess::getQueueUrl); setRequestAttribute(attributes, AWS_QUEUE_NAME, originalRequest, RequestAccess::getQueueName); - setRequestAttribute(attributes, AWS_STREAM_NAME, originalRequest, RequestAccess::getStreamName); - setRequestAttribute(attributes, AWS_TABLE_NAME, originalRequest, RequestAccess::getTableName); setRequestAttribute(attributes, AWS_LAMBDA_NAME, originalRequest, RequestAccess::getLambdaName); } diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractDynamoDbClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractDynamoDbClientTest.java index 4296100e2eb9..c50e5ecaf0f1 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractDynamoDbClientTest.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractDynamoDbClientTest.java @@ -5,7 +5,6 @@ package io.opentelemetry.instrumentation.awssdk.v1_11; -import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.instrumentation.testing.junit.db.DbClientMetricsTestUtil.assertDurationMetric; import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; @@ -55,7 +54,6 @@ public void sendRequestWithMockedResponse() throws Exception { List additionalAttributes = Arrays.asList( - equalTo(stringKey("aws.table.name"), "sometable"), equalTo( maybeStable(DB_SYSTEM), SemconvStability.emitStableDatabaseSemconv() diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractKinesisClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractKinesisClientTest.java index ee6d1b750187..045bafb282b7 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractKinesisClientTest.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractKinesisClientTest.java @@ -5,8 +5,8 @@ package io.opentelemetry.instrumentation.awssdk.v1_11; -import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_KINESIS_STREAM_NAME; import static java.util.Collections.singletonList; import com.amazonaws.services.kinesis.AmazonKinesis; @@ -47,7 +47,7 @@ public void testSendRequestWithMockedResponse( server.enqueue(HttpResponse.of(HttpStatus.OK, MediaType.PLAIN_TEXT_UTF_8, "")); List additionalAttributes = - singletonList(equalTo(stringKey("aws.stream.name"), "somestream")); + singletonList(equalTo(AWS_KINESIS_STREAM_NAME, "somestream")); Object response = call.apply(client); assertRequestWithMockedResponse( diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractS3ClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractS3ClientTest.java index 0b37cc96422a..1f378a4a5176 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractS3ClientTest.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractS3ClientTest.java @@ -14,6 +14,7 @@ import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_S3_BUCKET; import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD; import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE; import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM; @@ -83,12 +84,12 @@ private static Stream provideArguments() { "CreateBucket", "PUT", (Function) c -> c.createBucket("testbucket"), - singletonList(equalTo(stringKey("aws.bucket.name"), "testbucket"))), + singletonList(equalTo(AWS_S3_BUCKET, "testbucket"))), Arguments.of( "GetObject", "GET", (Function) c -> c.getObject("someBucket", "someKey"), - singletonList(equalTo(stringKey("aws.bucket.name"), "someBucket")))); + singletonList(equalTo(AWS_S3_BUCKET, "someBucket")))); } @Test @@ -129,7 +130,7 @@ public void testSendRequestToClosedPort() { equalTo(RPC_SERVICE, "Amazon S3"), equalTo(RPC_METHOD, "GetObject"), equalTo(stringKey("aws.agent"), "java-aws-sdk"), - equalTo(stringKey("aws.bucket.name"), "someBucket"), + equalTo(AWS_S3_BUCKET, "someBucket"), equalTo(ERROR_TYPE, SdkClientException.class.getName())))); } @@ -174,7 +175,7 @@ void testTimeoutAndRetryErrorsNotCaptured() { equalTo(RPC_SERVICE, "Amazon S3"), equalTo(RPC_METHOD, "GetObject"), equalTo(stringKey("aws.agent"), "java-aws-sdk"), - equalTo(stringKey("aws.bucket.name"), "someBucket"), + equalTo(AWS_S3_BUCKET, "someBucket"), equalTo(ERROR_TYPE, SdkClientException.class.getName())))); } } diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsSuppressReceiveSpansTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsSuppressReceiveSpansTest.java index b246b67dddc1..962a5d3bd5c6 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsSuppressReceiveSpansTest.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsSuppressReceiveSpansTest.java @@ -15,6 +15,7 @@ import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_REQUEST_ID; +import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_SQS_QUEUE_URL; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; @@ -125,7 +126,7 @@ void testSimpleSqsProducerConsumerServices() { .hasAttributesSatisfyingExactly( equalTo(stringKey("aws.agent"), "java-aws-sdk"), equalTo( - stringKey("aws.queue.url"), + AWS_SQS_QUEUE_URL, "http://localhost:" + sqsPort + "/000000000000/testSdkSqs"), satisfies(AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), equalTo(RPC_SYSTEM, "aws-api"), @@ -152,7 +153,7 @@ void testSimpleSqsProducerConsumerServices() { .hasAttributesSatisfyingExactly( equalTo(stringKey("aws.agent"), "java-aws-sdk"), equalTo( - stringKey("aws.queue.url"), + AWS_SQS_QUEUE_URL, "http://localhost:" + sqsPort + "/000000000000/testSdkSqs"), satisfies(AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), equalTo(RPC_SYSTEM, "aws-api"), @@ -228,7 +229,7 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { .hasAttributesSatisfyingExactly( equalTo(stringKey("aws.agent"), "java-aws-sdk"), equalTo( - stringKey("aws.queue.url"), + AWS_SQS_QUEUE_URL, "http://localhost:" + sqsPort + "/000000000000/testSdkSqs"), satisfies(AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), equalTo(RPC_SYSTEM, "aws-api"), @@ -255,7 +256,7 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { .hasAttributesSatisfyingExactly( equalTo(stringKey("aws.agent"), "java-aws-sdk"), equalTo( - stringKey("aws.queue.url"), + AWS_SQS_QUEUE_URL, "http://localhost:" + sqsPort + "/000000000000/testSdkSqs"), satisfies(AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), equalTo(RPC_SYSTEM, "aws-api"), @@ -293,7 +294,7 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { .hasAttributesSatisfyingExactly( equalTo(stringKey("aws.agent"), "java-aws-sdk"), equalTo( - stringKey("aws.queue.url"), + AWS_SQS_QUEUE_URL, "http://localhost:" + sqsPort + "/000000000000/testSdkSqs"), satisfies(AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), equalTo(RPC_SYSTEM, "aws-api"), diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.java index 284559753f2c..42a44f380937 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.java @@ -16,6 +16,7 @@ import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_REQUEST_ID; +import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_SQS_QUEUE_URL; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; @@ -158,7 +159,7 @@ void testSimpleSqsProducerConsumerServicesCaptureHeaders(boolean testCaptureHead Arrays.asList( equalTo(stringKey("aws.agent"), "java-aws-sdk"), equalTo( - stringKey("aws.queue.url"), + AWS_SQS_QUEUE_URL, "http://localhost:" + sqsPort + "/000000000000/testSdkSqs"), satisfies(AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), equalTo(RPC_SYSTEM, "aws-api"), @@ -199,7 +200,7 @@ void testSimpleSqsProducerConsumerServicesCaptureHeaders(boolean testCaptureHead Arrays.asList( equalTo(stringKey("aws.agent"), "java-aws-sdk"), equalTo( - stringKey("aws.queue.url"), + AWS_SQS_QUEUE_URL, "http://localhost:" + sqsPort + "/000000000000/testSdkSqs"), satisfies(AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), equalTo(RPC_SYSTEM, "aws-api"), @@ -237,7 +238,7 @@ void testSimpleSqsProducerConsumerServicesCaptureHeaders(boolean testCaptureHead Arrays.asList( equalTo(stringKey("aws.agent"), "java-aws-sdk"), equalTo( - stringKey("aws.queue.url"), + AWS_SQS_QUEUE_URL, "http://localhost:" + sqsPort + "/000000000000/testSdkSqs"), satisfies(AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), equalTo(RPC_SYSTEM, "aws-api"), @@ -325,7 +326,7 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { .hasAttributesSatisfyingExactly( equalTo(stringKey("aws.agent"), "java-aws-sdk"), equalTo( - stringKey("aws.queue.url"), + AWS_SQS_QUEUE_URL, "http://localhost:" + sqsPort + "/000000000000/testSdkSqs"), satisfies(AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), equalTo(RPC_SYSTEM, "aws-api"), @@ -363,7 +364,7 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { .hasAttributesSatisfyingExactly( equalTo(stringKey("aws.agent"), "java-aws-sdk"), equalTo( - stringKey("aws.queue.url"), + AWS_SQS_QUEUE_URL, "http://localhost:" + sqsPort + "/000000000000/testSdkSqs"), @@ -385,7 +386,7 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { .hasAttributesSatisfyingExactly( equalTo(stringKey("aws.agent"), "java-aws-sdk"), equalTo( - stringKey("aws.queue.url"), + AWS_SQS_QUEUE_URL, "http://localhost:" + sqsPort + "/000000000000/testSdkSqs"), @@ -417,7 +418,7 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { .hasAttributesSatisfyingExactly( equalTo(stringKey("aws.agent"), "java-aws-sdk"), equalTo( - stringKey("aws.queue.url"), + AWS_SQS_QUEUE_URL, "http://localhost:" + sqsPort + "/000000000000/testSdkSqs"), From f90ef776aa1e1cf3adf6199d7ec7a13f3d5982b9 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Wed, 22 Oct 2025 16:36:41 +0300 Subject: [PATCH 2/3] Fix tests --- .../awssdk/v1_11/AwsSpanAssertions.java | 6 ++++-- .../instrumentation/awssdk/v1_11/S3ClientTest.java | 3 ++- .../instrumentation/awssdk/v1_11/S3TracingTest.java | 5 +++-- .../instrumentation/awssdk/v1_11/SnsTracingTest.java | 3 ++- .../instrumentation/awssdk/v1_11/Aws0ClientTest.java | 11 ++++++----- instrumentation/aws-sdk/aws-sdk-1.11/metadata.yaml | 3 +-- 6 files changed, 18 insertions(+), 13 deletions(-) diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/AwsSpanAssertions.java b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/AwsSpanAssertions.java index 954d72231b58..34b813c0256d 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/AwsSpanAssertions.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/AwsSpanAssertions.java @@ -15,7 +15,9 @@ import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_REQUEST_ID; +import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_S3_BUCKET; import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_SNS_TOPIC_ARN; +import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_SQS_QUEUE_URL; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD; import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE; @@ -36,7 +38,7 @@ static SpanDataAssert sqs( .hasAttributesSatisfyingExactly( equalTo(stringKey("aws.agent"), "java-aws-sdk"), equalTo(stringKey("aws.queue.name"), queueName), - equalTo(stringKey("aws.queue.url"), queueUrl), + equalTo(AWS_SQS_QUEUE_URL, queueUrl), satisfies(AWS_REQUEST_ID, v -> v.isInstanceOf(String.class)), equalTo(RPC_METHOD, rpcMethod), equalTo(RPC_SYSTEM, "aws-api"), @@ -66,7 +68,7 @@ static SpanDataAssert s3( .hasNoParent() .hasAttributesSatisfyingExactly( equalTo(stringKey("aws.agent"), "java-aws-sdk"), - equalTo(stringKey("aws.bucket.name"), bucketName), + equalTo(AWS_S3_BUCKET, bucketName), equalTo(RPC_METHOD, rpcMethod), equalTo(RPC_SYSTEM, "aws-api"), equalTo(RPC_SERVICE, "Amazon S3"), diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/S3ClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/S3ClientTest.java index b4b0ed8c604a..06704ead7548 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/S3ClientTest.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/S3ClientTest.java @@ -12,6 +12,7 @@ import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_S3_BUCKET; import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD; import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE; import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM; @@ -132,7 +133,7 @@ public void beforeRequest(Request request) { equalTo(RPC_SERVICE, "Amazon S3"), equalTo(RPC_METHOD, "HeadBucket"), equalTo(stringKey("aws.agent"), "java-aws-sdk"), - equalTo(stringKey("aws.bucket.name"), "someBucket"), + equalTo(AWS_S3_BUCKET, "someBucket"), equalTo(ERROR_TYPE, IllegalStateException.class.getName())))); } diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/S3TracingTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/S3TracingTest.java index 2abda3c7ce3d..ea2d8b19e3a8 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/S3TracingTest.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/S3TracingTest.java @@ -18,6 +18,7 @@ import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_REQUEST_ID; +import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_SQS_QUEUE_URL; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; @@ -99,7 +100,7 @@ void testS3UploadTriggersSqsMessage() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(stringKey("aws.agent"), "java-aws-sdk"), - equalTo(stringKey("aws.queue.url"), queueUrl), + equalTo(AWS_SQS_QUEUE_URL, queueUrl), satisfies(AWS_REQUEST_ID, v -> v.isInstanceOf(String.class)), equalTo(RPC_METHOD, "ReceiveMessage"), equalTo(RPC_SYSTEM, "aws-api"), @@ -191,7 +192,7 @@ void testS3UploadTriggersSnsTopicNotificationThenCreatesSqsMessage() { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo(stringKey("aws.agent"), "java-aws-sdk"), - equalTo(stringKey("aws.queue.url"), queueUrl), + equalTo(AWS_SQS_QUEUE_URL, queueUrl), satisfies(AWS_REQUEST_ID, v -> v.isInstanceOf(String.class)), equalTo(RPC_METHOD, "ReceiveMessage"), equalTo(RPC_SYSTEM, "aws-api"), diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/SnsTracingTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/SnsTracingTest.java index 734d651fffb2..08102b76a546 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/SnsTracingTest.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/SnsTracingTest.java @@ -17,6 +17,7 @@ import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_REQUEST_ID; +import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_SQS_QUEUE_URL; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; @@ -83,7 +84,7 @@ void testSnsNotificationTriggersSqsMessageConsumedWithAwsSdk() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(stringKey("aws.agent"), "java-aws-sdk"), - equalTo(stringKey("aws.queue.url"), queueUrl), + equalTo(AWS_SQS_QUEUE_URL, queueUrl), satisfies(AWS_REQUEST_ID, v -> v.isInstanceOf(String.class)), equalTo(RPC_METHOD, "ReceiveMessage"), equalTo(RPC_SYSTEM, "aws-api"), diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test_before_1_11_106/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Aws0ClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test_before_1_11_106/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Aws0ClientTest.java index 1272ae80c004..554886f6df70 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test_before_1_11_106/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Aws0ClientTest.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test_before_1_11_106/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Aws0ClientTest.java @@ -18,6 +18,7 @@ import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_S3_BUCKET; import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD; import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE; import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM; @@ -137,7 +138,7 @@ private static Stream provideSendRequestArguments() { "PUT", 1, (Function) c -> c.createBucket("testbucket"), - singletonMap("aws.bucket.name", "testbucket"), + singletonMap(AWS_S3_BUCKET.getKey(), "testbucket"), ""), Arguments.of( new AmazonS3Client().withEndpoint(server.httpUri().toString()), @@ -146,7 +147,7 @@ private static Stream provideSendRequestArguments() { "GET", 1, (Function) c -> c.getObject("someBucket", "someKey"), - singletonMap("aws.bucket.name", "someBucket"), + singletonMap(AWS_S3_BUCKET.getKey(), "someBucket"), ""), Arguments.of( new AmazonEC2Client().withEndpoint(server.httpUri().toString()), @@ -266,7 +267,7 @@ void testSendS3RequestToClosedPort() { equalTo(RPC_SERVICE, "Amazon S3"), equalTo(RPC_METHOD, "GetObject"), equalTo(stringKey("aws.agent"), "java-aws-sdk"), - equalTo(stringKey("aws.bucket.name"), "someBucket"), + equalTo(AWS_S3_BUCKET, "someBucket"), equalTo(ERROR_TYPE, AmazonClientException.class.getName())))); } @@ -303,7 +304,7 @@ public void beforeRequest(Request request) { equalTo(RPC_SERVICE, "Amazon S3"), equalTo(RPC_METHOD, "GetObject"), equalTo(stringKey("aws.agent"), "java-aws-sdk"), - equalTo(stringKey("aws.bucket.name"), "someBucket"), + equalTo(AWS_S3_BUCKET, "someBucket"), equalTo(ERROR_TYPE, IllegalStateException.class.getName())))); } @@ -342,7 +343,7 @@ void testTimeoutAndRetryErrorsAreNotCaptured() { equalTo(RPC_SERVICE, "Amazon S3"), equalTo(RPC_METHOD, "GetObject"), equalTo(stringKey("aws.agent"), "java-aws-sdk"), - equalTo(stringKey("aws.bucket.name"), "someBucket"), + equalTo(AWS_S3_BUCKET, "someBucket"), equalTo(ERROR_TYPE, AmazonClientException.class.getName())))); } diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/metadata.yaml b/instrumentation/aws-sdk/aws-sdk-1.11/metadata.yaml index 8d094c2503e8..6b57131ef15b 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/metadata.yaml +++ b/instrumentation/aws-sdk/aws-sdk-1.11/metadata.yaml @@ -13,8 +13,7 @@ semantic_conventions: configurations: - name: otel.instrumentation.aws-sdk.experimental-span-attributes description: > - Enables the experimental span attributes `aws.agent`, `aws.bucket.name`, `aws.queue.url`, - `aws.queue.name`, `aws.stream.name`, `aws.table.name`, `aws.lambda.function.arn` and + Enables the experimental span attributes `aws.agent`, `aws.queue.name`, `aws.lambda.function.arn` and `aws.lambda.function.name` for AWS SDK instrumentation. type: boolean default: false From 2849e4093a27de10e5af1bea1981aaa428ae838c Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Wed, 22 Oct 2025 18:22:09 +0300 Subject: [PATCH 3/3] fix camel test --- .../instrumentation/apachecamel/aws/AwsSpanAssertions.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/aws/AwsSpanAssertions.java b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/aws/AwsSpanAssertions.java index 14b7fc6ce9b5..00b924a719f3 100644 --- a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/aws/AwsSpanAssertions.java +++ b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/aws/AwsSpanAssertions.java @@ -17,6 +17,7 @@ import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_REQUEST_ID; import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_SNS_TOPIC_ARN; +import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_SQS_QUEUE_URL; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; @@ -76,7 +77,7 @@ static SpanDataAssert sqs( val.satisfiesAnyOf( v -> assertThat(v).isEqualTo(queueName), v -> assertThat(v).isNull())), satisfies( - stringKey("aws.queue.url"), + AWS_SQS_QUEUE_URL, val -> val.satisfiesAnyOf( v -> assertThat(v).isEqualTo(queueUrl), v -> assertThat(v).isNull())),