Skip to content

Commit e8019c3

Browse files
Upgrade AWS SDK version to 2.21.12 (#940)
1 parent 3c793be commit e8019c3

File tree

5 files changed

+37
-27
lines changed

5 files changed

+37
-27
lines changed

spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/ConfiguredAwsClient.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.time.Duration;
2020
import java.util.Objects;
2121
import org.springframework.test.util.ReflectionTestUtils;
22+
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
2223
import software.amazon.awssdk.awscore.client.config.AwsClientOption;
2324
import software.amazon.awssdk.awscore.defaultsmode.DefaultsMode;
2425
import software.amazon.awssdk.core.SdkClient;
@@ -85,4 +86,8 @@ public SdkAsyncHttpClient getAsyncHttpClient() {
8586
return clientConfigurationAttributes.get(SdkClientOption.ASYNC_HTTP_CLIENT);
8687
}
8788

89+
public AwsCredentialsProvider getAwsCredentialsProvider() {
90+
return clientConfigurationAttributes.get(AwsClientOption.CREDENTIALS_PROVIDER);
91+
}
92+
8893
}

spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/config/parameterstore/ParameterStoreConfigDataLoaderIntegrationTests.java

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import static org.junit.jupiter.api.Assertions.fail;
2020
import static org.mockito.ArgumentMatchers.any;
2121
import static org.mockito.Mockito.mock;
22-
import static org.mockito.Mockito.verify;
2322
import static org.mockito.Mockito.when;
2423
import static org.testcontainers.containers.localstack.LocalStackContainer.Service.SSM;
2524
import static org.testcontainers.shaded.org.awaitility.Awaitility.await;
@@ -47,6 +46,7 @@
4746
import org.testcontainers.utility.DockerImageName;
4847
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
4948
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
49+
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
5050
import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration;
5151
import software.amazon.awssdk.http.SdkHttpClient;
5252
import software.amazon.awssdk.http.apache.ApacheHttpClient;
@@ -163,20 +163,18 @@ void ssmClientCanBeOverwrittenInBootstrapConfig() {
163163

164164
@Test
165165
void credentialsProviderCanBeOverwrittenInBootstrapConfig() {
166-
AwsCredentialsProvider mockCredentialsProvider = mock(AwsCredentialsProvider.class);
167-
when(mockCredentialsProvider.resolveCredentials())
168-
.thenReturn(AwsBasicCredentials.create("mock-key", "mock-secret"));
166+
AwsCredentialsProvider bootstrapCredentialsProvider = StaticCredentialsProvider
167+
.create(AwsBasicCredentials.create("mock-key", "mock-secret"));
169168
SpringApplication application = new SpringApplication(App.class);
170169
application.setWebApplicationType(WebApplicationType.NONE);
171170
application.addBootstrapRegistryInitializer(registry -> {
172-
registry.register(AwsCredentialsProvider.class, ctx -> mockCredentialsProvider);
171+
registry.register(AwsCredentialsProvider.class, ctx -> bootstrapCredentialsProvider);
173172
});
174173

175174
try (ConfigurableApplicationContext context = runApplication(application,
176175
"aws-parameterstore:/config/spring")) {
177-
// perhaps there is a better way to verify that correct credentials provider
178-
// is used by SSM client without using reflection?
179-
verify(mockCredentialsProvider).resolveCredentials();
176+
ConfiguredAwsClient ssmClient = new ConfiguredAwsClient(context.getBean(SsmClient.class));
177+
assertThat(ssmClient.getAwsCredentialsProvider()).isEqualTo(bootstrapCredentialsProvider);
180178
}
181179
}
182180

@@ -248,17 +246,17 @@ void arrayParameterNames() {
248246
putParameter(localstack, "/config/myservice/key_1_.nested_1_.nestedValue", "key_nestedValue4", REGION);
249247

250248
try (ConfigurableApplicationContext context = runApplication(application,
251-
"aws-parameterstore:/config/myservice/")) {
249+
"aws-parameterstore:/config/myservice/")) {
252250
assertThat(context.getEnvironment().getProperty("key[0].value")).isEqualTo("value1");
253251
assertThat(context.getEnvironment().getProperty("key[0].nested[0].nestedValue"))
254-
.isEqualTo("key_nestedValue1");
252+
.isEqualTo("key_nestedValue1");
255253
assertThat(context.getEnvironment().getProperty("key[0].nested[1].nestedValue"))
256-
.isEqualTo("key_nestedValue2");
254+
.isEqualTo("key_nestedValue2");
257255
assertThat(context.getEnvironment().getProperty("key[1].value")).isEqualTo("value2");
258256
assertThat(context.getEnvironment().getProperty("key[1].nested[0].nestedValue"))
259-
.isEqualTo("key_nestedValue3");
257+
.isEqualTo("key_nestedValue3");
260258
assertThat(context.getEnvironment().getProperty("key[1].nested[1].nestedValue"))
261-
.isEqualTo("key_nestedValue4");
259+
.isEqualTo("key_nestedValue4");
262260
}
263261
}
264262

spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/config/secretsmanager/SecretsManagerConfigDataLoaderIntegrationTests.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import static org.junit.jupiter.api.Assertions.fail;
2020
import static org.mockito.ArgumentMatchers.any;
2121
import static org.mockito.Mockito.mock;
22-
import static org.mockito.Mockito.verify;
2322
import static org.mockito.Mockito.when;
2423
import static org.testcontainers.containers.localstack.LocalStackContainer.Service.SECRETSMANAGER;
2524
import static org.testcontainers.shaded.org.awaitility.Awaitility.await;
@@ -225,20 +224,19 @@ void secretsManagerClientCanBeOverwrittenInBootstrapConfig() {
225224

226225
@Test
227226
void credentialsProviderCanBeOverwrittenInBootstrapConfig() {
228-
AwsCredentialsProvider mockCredentialsProvider = mock(AwsCredentialsProvider.class);
229-
when(mockCredentialsProvider.resolveCredentials())
230-
.thenReturn(AwsBasicCredentials.create("mock-key", "mock-secret"));
227+
AwsCredentialsProvider bootstrapCredentialsProvider = StaticCredentialsProvider
228+
.create(AwsBasicCredentials.create("mock-key", "mock-secret"));
231229
SpringApplication application = new SpringApplication(App.class);
232230
application.setWebApplicationType(WebApplicationType.NONE);
233231
application.addBootstrapRegistryInitializer(registry -> {
234-
registry.register(AwsCredentialsProvider.class, ctx -> mockCredentialsProvider);
232+
registry.register(AwsCredentialsProvider.class, ctx -> bootstrapCredentialsProvider);
235233
});
236234

237235
try (ConfigurableApplicationContext context = runApplication(application,
238236
"aws-secretsmanager:/config/spring")) {
239-
// perhaps there is a better way to verify that correct credentials provider
240-
// is used by SSM client without using reflection?
241-
verify(mockCredentialsProvider).resolveCredentials();
237+
ConfiguredAwsClient secretsManagerClient = new ConfiguredAwsClient(
238+
context.getBean(SecretsManagerClient.class));
239+
assertThat(secretsManagerClient.getAwsCredentialsProvider()).isEqualTo(bootstrapCredentialsProvider);
242240
}
243241
}
244242

spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/s3/ConfiguredTransferManager.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,18 @@ public class ConfiguredTransferManager {
3131
private final S3AsyncClient client;
3232

3333
ConfiguredTransferManager(S3TransferManager s3TransferManager) {
34-
this.transferConfiguration = (TransferManagerConfiguration) ReflectionTestUtils.getField(s3TransferManager,
35-
"transferConfiguration");
36-
this.client = (S3AsyncClient) ReflectionTestUtils.getField(s3TransferManager, "s3AsyncClient");
34+
// todo: this is getting too hacky
35+
if (s3TransferManager.getClass().getName().equals("software.amazon.awssdk.transfer.s3.internal.CrtS3TransferManager")) {
36+
S3TransferManager delegate = (S3TransferManager) ReflectionTestUtils.getField(s3TransferManager, "delegate");
37+
this.transferConfiguration = (TransferManagerConfiguration) ReflectionTestUtils.getField(delegate,
38+
"transferConfiguration");
39+
this.client = (S3AsyncClient) ReflectionTestUtils.getField(s3TransferManager, "s3AsyncClient");
40+
} else {
41+
this.transferConfiguration = (TransferManagerConfiguration) ReflectionTestUtils.getField(s3TransferManager,
42+
"transferConfiguration");
43+
this.client = (S3AsyncClient) ReflectionTestUtils.getField(s3TransferManager, "s3AsyncClient");
44+
}
45+
3746
}
3847

3948
boolean getUploadDirectoryFileVisitOption() {

spring-cloud-aws-dependencies/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@
2525
<properties>
2626
<javaparser.version>3.24.10</javaparser.version>
2727
<spotless.version>2.31.0</spotless.version>
28-
<awssdk-v2.version>2.20.63</awssdk-v2.version>
29-
<amazon.dax.version>2.0.3</amazon.dax.version>
28+
<awssdk-v2.version>2.21.12</awssdk-v2.version>
29+
<amazon.dax.version>2.0.4</amazon.dax.version>
3030
<maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
3131
<spring-cloud-commons.version>4.0.4</spring-cloud-commons.version>
3232
<jakarta.mail.version>2.1.0</jakarta.mail.version>
3333
<eclipse.jakarta.mail.version>1.0.0</eclipse.jakarta.mail.version>
34-
<aws-crt.version>0.21.14</aws-crt.version>
34+
<aws-crt.version>0.28.3</aws-crt.version>
3535
<mockito.version>5.3.1</mockito.version>
3636
<bytebuddy.version>1.14.9</bytebuddy.version>
3737
</properties>

0 commit comments

Comments
 (0)