Skip to content

Commit 1730361

Browse files
authored
Merge pull request #2800 from alphagov/PP-13647-update_aws_sdk_to_v2
PP-13647 update AWS SDK to version 2
2 parents 2301904 + a427528 commit 1730361

12 files changed

Lines changed: 88 additions & 62 deletions

pom.xml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@
3737
<scope>import</scope>
3838
</dependency>
3939
<dependency>
40-
<groupId>com.amazonaws</groupId>
41-
<artifactId>aws-java-sdk-bom</artifactId>
42-
<version>1.12.782</version>
40+
<groupId>software.amazon.awssdk</groupId>
41+
<artifactId>bom</artifactId>
42+
<version>2.31.34</version>
4343
<type>pom</type>
4444
<scope>import</scope>
4545
</dependency>
@@ -133,8 +133,8 @@
133133
<artifactId>commons-lang3</artifactId>
134134
</dependency>
135135
<dependency>
136-
<groupId>com.amazonaws</groupId>
137-
<artifactId>aws-java-sdk-sqs</artifactId>
136+
<groupId>software.amazon.awssdk</groupId>
137+
<artifactId>sqs</artifactId>
138138
</dependency>
139139
<dependency>
140140
<groupId>jakarta.xml.bind</groupId>
@@ -226,7 +226,7 @@
226226
</dependency>
227227
<dependency>
228228
<groupId>uk.gov.service.payments</groupId>
229-
<artifactId>queue-dropwizard-4</artifactId>
229+
<artifactId>queue-dropwizard-4-aws-sdk-v2</artifactId>
230230
<version>${pay-java-commons.version}</version>
231231
</dependency>
232232
<dependency>

src/main/java/uk/gov/pay/adminusers/app/config/AdminUsersModule.java

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
package uk.gov.pay.adminusers.app.config;
22

3-
import com.amazonaws.auth.AWSStaticCredentialsProvider;
4-
import com.amazonaws.auth.BasicAWSCredentials;
5-
import com.amazonaws.client.builder.AwsClientBuilder;
6-
import com.amazonaws.services.sqs.AmazonSQS;
7-
import com.amazonaws.services.sqs.AmazonSQSClientBuilder;
83
import com.fasterxml.jackson.databind.ObjectMapper;
94
import com.google.inject.AbstractModule;
105
import com.google.inject.Provides;
@@ -15,6 +10,12 @@
1510
import com.warrenstrange.googleauth.GoogleAuthenticatorConfig;
1611
import io.dropwizard.core.setup.Environment;
1712
import io.dropwizard.db.DataSourceFactory;
13+
import jakarta.ws.rs.client.Client;
14+
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
15+
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
16+
import software.amazon.awssdk.regions.Region;
17+
import software.amazon.awssdk.services.sqs.SqsClient;
18+
import software.amazon.awssdk.services.sqs.SqsClientBuilder;
1819
import uk.gov.pay.adminusers.app.RestClientFactory;
1920
import uk.gov.pay.adminusers.resources.ResetPasswordValidator;
2021
import uk.gov.pay.adminusers.resources.UserRequestValidator;
@@ -34,7 +35,7 @@
3435
import uk.gov.pay.adminusers.validations.RequestValidations;
3536
import uk.gov.service.payments.commons.queue.sqs.SqsQueueService;
3637

37-
import jakarta.ws.rs.client.Client;
38+
import java.net.URI;
3839
import java.time.InstantSource;
3940
import java.util.Properties;
4041

@@ -122,33 +123,29 @@ public ObjectMapper provideObjectMapper() {
122123
}
123124

124125
@Provides
125-
public AmazonSQS sqsClient(AdminUsersConfig adminUsersConfig) {
126-
AmazonSQSClientBuilder clientBuilder = AmazonSQSClientBuilder
127-
.standard();
126+
public SqsClient sqsClient(AdminUsersConfig adminUsersConfig) {
127+
SqsClientBuilder clientBuilder = SqsClient.builder();
128128

129129
if (adminUsersConfig.getSqsConfig().isNonStandardServiceEndpoint()) {
130130

131-
BasicAWSCredentials basicAWSCredentials = new BasicAWSCredentials(
132-
adminUsersConfig.getSqsConfig().getAccessKey(),
133-
adminUsersConfig.getSqsConfig().getSecretKey());
131+
AwsBasicCredentials basicAWSCredentials = AwsBasicCredentials
132+
.create(adminUsersConfig.getSqsConfig().getAccessKey(),
133+
adminUsersConfig.getSqsConfig().getSecretKey());
134134

135135
clientBuilder
136-
.withCredentials(new AWSStaticCredentialsProvider(basicAWSCredentials))
137-
.withEndpointConfiguration(
138-
new AwsClientBuilder.EndpointConfiguration(
139-
adminUsersConfig.getSqsConfig().getEndpoint(),
140-
adminUsersConfig.getSqsConfig().getRegion())
141-
);
136+
.credentialsProvider(StaticCredentialsProvider.create(basicAWSCredentials))
137+
.endpointOverride(URI.create(adminUsersConfig.getSqsConfig().getEndpoint()))
138+
.region(Region.of(adminUsersConfig.getSqsConfig().getRegion()));
142139
} else {
143140
// uses AWS SDK's DefaultAWSCredentialsProviderChain to obtain credentials
144-
clientBuilder.withRegion(adminUsersConfig.getSqsConfig().getRegion());
141+
clientBuilder.region(Region.of(adminUsersConfig.getSqsConfig().getRegion()));
145142
}
146143

147144
return clientBuilder.build();
148145
}
149146

150147
@Provides
151-
public SqsQueueService provideSqsQueueService(AmazonSQS amazonSQS, AdminUsersConfig adminUsersConfig) {
148+
public SqsQueueService provideSqsQueueService(SqsClient amazonSQS, AdminUsersConfig adminUsersConfig) {
152149
return new SqsQueueService(
153150
amazonSQS,
154151
adminUsersConfig.getSqsConfig().getMessageMaximumWaitTimeInSeconds(),
@@ -160,5 +157,4 @@ public SqsQueueService provideSqsQueueService(AmazonSQS amazonSQS, AdminUsersCon
160157
public Client provideClient() {
161158
return RestClientFactory.buildClient(configuration.getRestClientConfig());
162159
}
163-
164160
}

src/test/java/uk/gov/pay/adminusers/fixtures/EventFixtureUtil.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
package uk.gov.pay.adminusers.fixtures;
22

33
import au.com.dius.pact.consumer.dsl.PactDslJsonBody;
4-
import com.amazonaws.services.sqs.AmazonSQS;
5-
import com.amazonaws.services.sqs.model.SendMessageResult;
64
import com.fasterxml.jackson.databind.JsonNode;
75
import com.fasterxml.jackson.databind.node.ArrayNode;
86
import org.apache.commons.lang3.NotImplementedException;
7+
import software.amazon.awssdk.services.sqs.SqsClient;
8+
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;
9+
import software.amazon.awssdk.services.sqs.model.SendMessageResponse;
910
import uk.gov.pay.adminusers.infra.SqsTestDocker;
11+
import uk.gov.service.payments.commons.queue.model.QueueMessage;
1012

1113
import static org.apache.commons.lang3.StringUtils.isBlank;
1214

1315
public class EventFixtureUtil {
1416

15-
public static String insert(AmazonSQS sqsClient, String eventType, String serviceId, Boolean live, String resourceExternalId,
17+
public static String insert(SqsClient sqsClient, String eventType, String serviceId, Boolean live, String resourceExternalId,
1618
String parentResourceExternalId, String eventData) {
1719
String messageBody = String.format("{" +
1820
"\"resource_external_id\": \"%s\"," +
@@ -30,8 +32,13 @@ public static String insert(AmazonSQS sqsClient, String eventType, String servic
3032
eventData
3133
);
3234

33-
SendMessageResult result = sqsClient.sendMessage(SqsTestDocker.getQueueUrl("event-queue"), messageBody);
34-
return result.getMessageId();
35+
SendMessageRequest messageRequest = SendMessageRequest.builder()
36+
.queueUrl(SqsTestDocker.getQueueUrl("event-queue"))
37+
.messageBody(messageBody)
38+
.build();
39+
SendMessageResponse result = sqsClient.sendMessage(messageRequest);
40+
41+
return QueueMessage.of(result, messageRequest.messageBody()).getMessageId();
3542
}
3643

3744
public static PactDslJsonBody getAsPact(String serviceId, Boolean live, String eventType, String resourceExternalId,

src/test/java/uk/gov/pay/adminusers/infra/AppWithPostgresAndSqsRule.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package uk.gov.pay.adminusers.infra;
22

3-
import com.amazonaws.services.sqs.AmazonSQS;
43
import com.google.inject.Guice;
54
import com.google.inject.Injector;
65
import com.google.inject.persist.PersistService;
@@ -20,6 +19,7 @@
2019
import org.junit.runners.model.Statement;
2120
import org.slf4j.Logger;
2221
import org.slf4j.LoggerFactory;
22+
import software.amazon.awssdk.services.sqs.SqsClient;
2323
import uk.gov.pay.adminusers.app.AdminUsersApp;
2424
import uk.gov.pay.adminusers.app.config.AdminUsersConfig;
2525
import uk.gov.pay.adminusers.app.config.AdminUsersModule;
@@ -45,7 +45,7 @@ public class AppWithPostgresAndSqsRule implements TestRule {
4545

4646
private final String configFilePath;
4747
private final PostgresDockerRule postgres;
48-
private final AmazonSQS sqsClient;
48+
private final SqsClient sqsClient;
4949
private final DropwizardAppRule<AdminUsersConfig> app;
5050
private final RuleChain rules;
5151
private final int wireMockPort = PortFactory.findFreePort();
@@ -115,7 +115,7 @@ public DatabaseTestHelper getDatabaseTestHelper() {
115115
return databaseTestHelper;
116116
}
117117

118-
public AmazonSQS getSqsClient() {
118+
public SqsClient getSqsClient() {
119119
return sqsClient;
120120
}
121121

src/test/java/uk/gov/pay/adminusers/infra/AppWithPostgresExtension.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ public AppWithPostgresExtension(String configPath, ConfigOverride... configOverr
6161
config("database.user", postgres.getUsername()),
6262
config("database.password", postgres.getPassword()),
6363
config("sqs.connectorTasksQueueUrl", SqsTestDocker.getQueueUrl("event-queue")),
64+
config("sqs.endpoint", SqsTestDocker.getEndpoint()),
6465
config("ledgerBaseURL", "http://localhost:" + wireMockPort))
6566
.toArray(new ConfigOverride[0]);
6667

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,24 @@
11
package uk.gov.pay.adminusers.infra;
22

3-
import com.amazonaws.auth.AWSStaticCredentialsProvider;
4-
import com.amazonaws.auth.BasicAWSCredentials;
5-
import com.amazonaws.client.builder.AwsClientBuilder;
6-
import com.amazonaws.services.sqs.AmazonSQS;
7-
import com.amazonaws.services.sqs.AmazonSQSClientBuilder;
83
import org.slf4j.Logger;
94
import org.slf4j.LoggerFactory;
105
import org.testcontainers.containers.GenericContainer;
116
import org.testcontainers.containers.wait.strategy.Wait;
7+
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
8+
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
9+
import software.amazon.awssdk.regions.Region;
10+
import software.amazon.awssdk.services.sqs.SqsClient;
11+
import software.amazon.awssdk.services.sqs.model.CreateQueueRequest;
1212

13+
import java.net.URI;
1314
import java.util.List;
1415

1516
public class SqsTestDocker {
1617
private static final Logger logger = LoggerFactory.getLogger(SqsTestDocker.class);
1718

1819
private static GenericContainer sqsContainer;
1920

20-
public static AmazonSQS initialise(List<String> queueNames) {
21+
public static SqsClient initialise(List<String> queueNames) {
2122
try {
2223
createContainer();
2324
return createQueues(queueNames);
@@ -38,9 +39,15 @@ private static void createContainer() {
3839
}
3940
}
4041

41-
private static AmazonSQS createQueues(List<String> queueNames) {
42-
AmazonSQS amazonSQS = getSqsClient();
43-
queueNames.forEach(amazonSQS::createQueue);
42+
private static SqsClient createQueues(List<String> queueNames) {
43+
SqsClient amazonSQS = getSqsClient();
44+
queueNames.forEach(queueName -> {
45+
CreateQueueRequest createQueueRequest = CreateQueueRequest.builder()
46+
.queueName(queueName)
47+
.build();
48+
49+
amazonSQS.createQueue(createQueueRequest);
50+
});
4451

4552
return amazonSQS;
4653
}
@@ -53,18 +60,13 @@ public static String getEndpoint() {
5360
return "http://localhost:" + sqsContainer.getMappedPort(9324);
5461
}
5562

56-
private static AmazonSQS getSqsClient() {
63+
private static SqsClient getSqsClient() {
5764
// random credentials required by AWS SDK to build SQS client
58-
BasicAWSCredentials awsCreds = new BasicAWSCredentials("x", "x");
59-
60-
return AmazonSQSClientBuilder.standard()
61-
.withCredentials(new AWSStaticCredentialsProvider(awsCreds))
62-
.withEndpointConfiguration(
63-
new AwsClientBuilder.EndpointConfiguration(
64-
getEndpoint(),
65-
"region-1"
66-
))
67-
.withRequestHandlers()
65+
AwsBasicCredentials awsCreds = AwsBasicCredentials.create("x", "x");
66+
return SqsClient.builder()
67+
.credentialsProvider(StaticCredentialsProvider.create(awsCreds))
68+
.endpointOverride(URI.create(getEndpoint()))
69+
.region(Region.of("region-1"))
6870
.build();
6971
}
7072
}

src/test/java/uk/gov/pay/adminusers/pact/queuemessage/DisputeCreatedEventQueueConsumerIT.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.junit.Before;
1414
import org.junit.Rule;
1515
import org.junit.Test;
16+
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;
1617
import uk.gov.pay.adminusers.client.ledger.model.LedgerTransaction;
1718
import uk.gov.pay.adminusers.fixtures.EventFixture;
1819
import uk.gov.pay.adminusers.fixtures.ServiceDbFixture;
@@ -137,7 +138,11 @@ public void setUp() throws Exception {
137138
public void test() throws Exception {
138139
String messageContents = new String(currentMessage);
139140
String snsMessage = new GsonBuilder().create().toJson(Map.of("Message", messageContents));
140-
adminusersApp.getSqsClient().sendMessage(SqsTestDocker.getQueueUrl("event-queue"), snsMessage);
141+
SendMessageRequest messageRequest = SendMessageRequest.builder()
142+
.queueUrl(SqsTestDocker.getQueueUrl("event-queue"))
143+
.messageBody(snsMessage)
144+
.build();
145+
adminusersApp.getSqsClient().sendMessage(messageRequest);
141146
await().atMost(2, TimeUnit.SECONDS).until(
142147
() -> !wireMockRule.findAll(RequestPatternBuilder.newRequestPattern().withUrl("/v2/notifications/email")).isEmpty());
143148

src/test/java/uk/gov/pay/adminusers/pact/queuemessage/DisputeEvidenceSubmittedEventQueueConsumerIT.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.junit.Before;
1414
import org.junit.Rule;
1515
import org.junit.Test;
16+
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;
1617
import uk.gov.pay.adminusers.client.ledger.model.LedgerTransaction;
1718
import uk.gov.pay.adminusers.fixtures.EventFixture;
1819
import uk.gov.pay.adminusers.fixtures.ServiceDbFixture;
@@ -132,7 +133,11 @@ public void setUp() throws Exception {
132133
public void test() throws Exception {
133134
String messageContents = new String(currentMessage);
134135
String snsMessage = new GsonBuilder().create().toJson(Map.of("Message", messageContents));
135-
adminusersApp.getSqsClient().sendMessage(SqsTestDocker.getQueueUrl("event-queue"), snsMessage);
136+
SendMessageRequest messageRequest = SendMessageRequest.builder()
137+
.queueUrl(SqsTestDocker.getQueueUrl("event-queue"))
138+
.messageBody(snsMessage)
139+
.build();
140+
adminusersApp.getSqsClient().sendMessage(messageRequest);
136141
await().atMost(2, TimeUnit.SECONDS).until(
137142
() -> !wireMockRule.findAll(RequestPatternBuilder.newRequestPattern().withUrl("/v2/notifications/email")).isEmpty());
138143

src/test/java/uk/gov/pay/adminusers/pact/queuemessage/DisputeLostEventQueueConsumerIT.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.junit.Before;
1414
import org.junit.Rule;
1515
import org.junit.Test;
16+
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;
1617
import uk.gov.pay.adminusers.client.ledger.model.LedgerTransaction;
1718
import uk.gov.pay.adminusers.fixtures.EventFixture;
1819
import uk.gov.pay.adminusers.fixtures.ServiceDbFixture;
@@ -132,7 +133,11 @@ public void setUp() throws Exception {
132133
public void test() throws Exception {
133134
String messageContents = new String(currentMessage);
134135
String snsMessage = new GsonBuilder().create().toJson(Map.of("Message", messageContents));
135-
adminusersApp.getSqsClient().sendMessage(SqsTestDocker.getQueueUrl("event-queue"), snsMessage);
136+
SendMessageRequest messageRequest = SendMessageRequest.builder()
137+
.queueUrl(SqsTestDocker.getQueueUrl("event-queue"))
138+
.messageBody(snsMessage)
139+
.build();
140+
adminusersApp.getSqsClient().sendMessage(messageRequest);
136141
await().atMost(2, TimeUnit.SECONDS).until(
137142
() -> !wireMockRule.findAll(RequestPatternBuilder.newRequestPattern().withUrl("/v2/notifications/email")).isEmpty());
138143

src/test/java/uk/gov/pay/adminusers/pact/queuemessage/DisputeWonEventQueueConsumerIT.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.junit.Before;
1414
import org.junit.Rule;
1515
import org.junit.Test;
16+
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;
1617
import uk.gov.pay.adminusers.client.ledger.model.LedgerTransaction;
1718
import uk.gov.pay.adminusers.fixtures.EventFixture;
1819
import uk.gov.pay.adminusers.fixtures.ServiceDbFixture;
@@ -132,7 +133,11 @@ public void setUp() throws Exception {
132133
public void test() throws Exception {
133134
String messageContents = new String(currentMessage);
134135
String snsMessage = new GsonBuilder().create().toJson(Map.of("Message", messageContents));
135-
adminusersApp.getSqsClient().sendMessage(SqsTestDocker.getQueueUrl("event-queue"), snsMessage);
136+
SendMessageRequest messageRequest = SendMessageRequest.builder()
137+
.queueUrl(SqsTestDocker.getQueueUrl("event-queue"))
138+
.messageBody(snsMessage)
139+
.build();
140+
adminusersApp.getSqsClient().sendMessage(messageRequest);
136141
await().atMost(2, TimeUnit.SECONDS).until(
137142
() -> !wireMockRule.findAll(RequestPatternBuilder.newRequestPattern().withUrl("/v2/notifications/email")).isEmpty());
138143

0 commit comments

Comments
 (0)