diff --git a/dd-java-agent/instrumentation/aws-java/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java b/dd-java-agent/instrumentation/aws-java/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java index f56c112de6c..b0c92a6c8e7 100644 --- a/dd-java-agent/instrumentation/aws-java/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java +++ b/dd-java-agent/instrumentation/aws-java/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java @@ -133,14 +133,14 @@ public Context onSdkRequest( // S3 request.getValueForField("Bucket", String.class).ifPresent(name -> setBucketName(span, name)); - if ("s3".equalsIgnoreCase(awsServiceName) && traceConfig().isDataStreamsEnabled()) { - request - .getValueForField("Key", String.class) - .ifPresent(key -> span.setTag(InstrumentationTags.AWS_OBJECT_KEY, key)); - span.setTag(Tags.HTTP_REQUEST_CONTENT_LENGTH, getRequestContentLength(httpRequest)); + if ("s3".equalsIgnoreCase(awsServiceName)) { + // gate "Key" extraction to S3 — DynamoDB's Key is Map, would CCE + request.getValueForField("Key", String.class).ifPresent(key -> setObjectKey(span, key)); + if (traceConfig().isDataStreamsEnabled()) { + span.setTag(Tags.HTTP_REQUEST_CONTENT_LENGTH, getRequestContentLength(httpRequest)); + } } - getRequestKey(request).ifPresent(key -> setObjectKey(span, key)); request .getValueForField("StorageClass", String.class) .ifPresent( @@ -279,17 +279,6 @@ private static void setBucketName(AgentSpan span, String name) { setPeerService(span, InstrumentationTags.AWS_BUCKET_NAME, name); } - private static Optional getRequestKey(SdkRequest request) { - Optional key = Optional.empty(); - try { - key = request.getValueForField("Key", String.class); - } catch (ClassCastException ignored) { - // Key is not always a string, like for dynamodb GetItemRequest - } - - return key; - } - private static void setObjectKey(AgentSpan span, String key) { span.setTag(InstrumentationTags.AWS_OBJECT_KEY, key); }