Skip to content

Commit 3b0868d

Browse files
authored
Fixing S3 bucket name extraction for AWS SDK V2 (#393)
* Fixing S3 bucket name extraction for AWS SDK V2
1 parent d1c7d7b commit 3b0868d

File tree

4 files changed

+222
-76
lines changed

4 files changed

+222
-76
lines changed

aws-xray-recorder-sdk-aws-sdk-v2/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ dependencies {
1515
testImplementation("software.amazon.awssdk:lambda:2.15.20")
1616
testImplementation("software.amazon.awssdk:sqs:2.15.20")
1717
testImplementation("software.amazon.awssdk:sns:2.15.20")
18+
testImplementation("software.amazon.awssdk:s3:2.15.20")
1819
}
1920

2021
tasks.jar {

aws-xray-recorder-sdk-aws-sdk-v2/src/main/java/com/amazonaws/xray/interceptors/TracingInterceptor.java

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,8 @@ private HashMap<String, Object> extractRequestParameters(
149149
SdkRequest request = context.request();
150150
Optional<Object> parameterValue = request.getValueForField(parameterName, Object.class);
151151
if (parameterValue.isPresent()) {
152-
parameters.put(SNAKE_CASE_NAMING_STRATEGY.translate(parameterName), parameterValue.get());
152+
parameters.put(normalizeParameterName(
153+
SNAKE_CASE_NAMING_STRATEGY.translate(parameterName)), parameterValue.get());
153154
}
154155
});
155156
}
@@ -161,14 +162,16 @@ private HashMap<String, Object> extractRequestParameters(
161162
Optional<Map> parameterValue = request.getValueForField(key, Map.class);
162163
if (parameterValue.isPresent()) {
163164
String renameTo = descriptor.getRenameTo() != null ? descriptor.getRenameTo() : key;
164-
parameters.put(SNAKE_CASE_NAMING_STRATEGY.translate(renameTo), parameterValue.get().keySet());
165+
parameters.put(normalizeParameterName(
166+
SNAKE_CASE_NAMING_STRATEGY.translate(renameTo)), parameterValue.get().keySet());
165167
}
166168
} else if (descriptor.isList() && descriptor.shouldGetCount()) {
167169
SdkRequest request = context.request();
168170
Optional<List> parameterValue = request.getValueForField(key, List.class);
169171
if (parameterValue.isPresent()) {
170172
String renameTo = descriptor.getRenameTo() != null ? descriptor.getRenameTo() : key;
171-
parameters.put(SNAKE_CASE_NAMING_STRATEGY.translate(renameTo), parameterValue.get().size());
173+
parameters.put(normalizeParameterName(
174+
SNAKE_CASE_NAMING_STRATEGY.translate(renameTo)), parameterValue.get().size());
172175
}
173176
}
174177
});
@@ -177,6 +180,20 @@ private HashMap<String, Object> extractRequestParameters(
177180
return parameters;
178181
}
179182

183+
/**
184+
* @param parameterName
185+
* The name of the parameter to normalize.
186+
* @return
187+
* The field key for a parameter that the X-Ray backend expects.
188+
*/
189+
private String normalizeParameterName(String parameterName) {
190+
// AWS SDK V2 changed the field name from BucketName to Bucket.
191+
if (parameterName.equals("bucket")) {
192+
return "bucket_name";
193+
}
194+
return parameterName;
195+
}
196+
180197
private HashMap<String, Object> extractResponseParameters(
181198
Context.AfterExecution context, ExecutionAttributes executionAttributes) {
182199
HashMap<String, Object> parameters = new HashMap<>();
@@ -191,7 +208,8 @@ private HashMap<String, Object> extractResponseParameters(
191208
SdkResponse response = context.response();
192209
Optional<Object> parameterValue = response.getValueForField(parameterName, Object.class);
193210
if (parameterValue.isPresent()) {
194-
parameters.put(SNAKE_CASE_NAMING_STRATEGY.translate(parameterName), parameterValue.get());
211+
parameters.put(normalizeParameterName(
212+
SNAKE_CASE_NAMING_STRATEGY.translate(parameterName)), parameterValue.get());
195213
}
196214
});
197215
}
@@ -203,14 +221,16 @@ private HashMap<String, Object> extractResponseParameters(
203221
Optional<Map> parameterValue = response.getValueForField(key, Map.class);
204222
if (parameterValue.isPresent()) {
205223
String renameTo = descriptor.getRenameTo() != null ? descriptor.getRenameTo() : key;
206-
parameters.put(SNAKE_CASE_NAMING_STRATEGY.translate(renameTo), parameterValue.get().keySet());
224+
parameters.put(normalizeParameterName(
225+
SNAKE_CASE_NAMING_STRATEGY.translate(renameTo)), parameterValue.get().keySet());
207226
}
208227
} else if (descriptor.isList() && descriptor.shouldGetCount()) {
209228
SdkResponse response = context.response();
210229
Optional<List> parameterValue = response.getValueForField(key, List.class);
211230
if (parameterValue.isPresent()) {
212231
String renameTo = descriptor.getRenameTo() != null ? descriptor.getRenameTo() : key;
213-
parameters.put(SNAKE_CASE_NAMING_STRATEGY.translate(renameTo), parameterValue.get().size());
232+
parameters.put(normalizeParameterName(
233+
SNAKE_CASE_NAMING_STRATEGY.translate(renameTo)), parameterValue.get().size());
214234
}
215235
}
216236
});

0 commit comments

Comments
 (0)