Skip to content

Commit 2093fd8

Browse files
authored
Merge pull request #3829 from alphagov/PP-13646-update_aws_sdk_to_v2
PP-13646 update AWS SDK to version 2
2 parents 67d1467 + cf1904f commit 2093fd8

43 files changed

Lines changed: 267 additions & 125 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

pom.xml

Lines changed: 10 additions & 11 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.33</version>
4343
<type>pom</type>
4444
<scope>import</scope>
4545
</dependency>
@@ -109,8 +109,12 @@
109109
<artifactId>jackson-dataformat-csv</artifactId>
110110
</dependency>
111111
<dependency>
112-
<groupId>com.amazonaws</groupId>
113-
<artifactId>aws-java-sdk-sqs</artifactId>
112+
<groupId>software.amazon.awssdk</groupId>
113+
<artifactId>sqs</artifactId>
114+
</dependency>
115+
<dependency>
116+
<groupId>software.amazon.awssdk</groupId>
117+
<artifactId>sns</artifactId>
114118
</dependency>
115119
<dependency>
116120
<groupId>com.google.guava</groupId>
@@ -169,14 +173,9 @@
169173
</dependency>
170174
<dependency>
171175
<groupId>uk.gov.service.payments</groupId>
172-
<artifactId>queue-dropwizard-4</artifactId>
176+
<artifactId>queue-dropwizard-4-aws-sdk-v2</artifactId>
173177
<version>${pay-java-commons.version}</version>
174178
</dependency>
175-
<dependency>
176-
<groupId>software.amazon.awssdk</groupId>
177-
<artifactId>sns</artifactId>
178-
<version>2.31.30</version>
179-
</dependency>
180179
<dependency>
181180
<groupId>com.google.code.gson</groupId>
182181
<artifactId>gson</artifactId>

src/main/java/uk/gov/pay/ledger/app/LedgerModule.java

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
package uk.gov.pay.ledger.app;
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;
@@ -16,6 +11,8 @@
1611
import software.amazon.awssdk.regions.Region;
1712
import software.amazon.awssdk.services.sns.SnsClient;
1813
import software.amazon.awssdk.services.sns.SnsClientBuilder;
14+
import software.amazon.awssdk.services.sqs.SqsClient;
15+
import software.amazon.awssdk.services.sqs.SqsClientBuilder;
1916
import uk.gov.pay.ledger.agreement.dao.AgreementDao;
2017
import uk.gov.pay.ledger.agreement.dao.PaymentInstrumentDao;
2118
import uk.gov.pay.ledger.event.dao.EventDao;
@@ -31,6 +28,7 @@
3128
import uk.gov.pay.ledger.transactionsummary.dao.TransactionSummaryDao;
3229
import uk.gov.service.payments.commons.queue.sqs.SqsQueueService;
3330

31+
import java.net.URI;
3432
import java.time.InstantSource;
3533

3634
public class LedgerModule extends AbstractModule {
@@ -144,26 +142,22 @@ public PaymentInstrumentDao providePaymentInstrumentDao() {
144142
}
145143

146144
@Provides
147-
public AmazonSQS sqsClient(LedgerConfig ledgerConfig) {
148-
AmazonSQSClientBuilder clientBuilder = AmazonSQSClientBuilder
149-
.standard();
145+
public SqsClient sqsClient(LedgerConfig ledgerConfig) {
146+
SqsClientBuilder clientBuilder = SqsClient.builder();
150147

151148
if (ledgerConfig.getSqsConfig().isNonStandardServiceEndpoint()) {
152149

153-
BasicAWSCredentials basicAWSCredentials = new BasicAWSCredentials(
154-
ledgerConfig.getSqsConfig().getAccessKey(),
155-
ledgerConfig.getSqsConfig().getSecretKey());
150+
AwsBasicCredentials basicAWSCredentials = AwsBasicCredentials
151+
.create(ledgerConfig.getSqsConfig().getAccessKey(),
152+
ledgerConfig.getSqsConfig().getSecretKey());
156153

157154
clientBuilder
158-
.withCredentials(new AWSStaticCredentialsProvider(basicAWSCredentials))
159-
.withEndpointConfiguration(
160-
new AwsClientBuilder.EndpointConfiguration(
161-
ledgerConfig.getSqsConfig().getEndpoint(),
162-
ledgerConfig.getSqsConfig().getRegion())
163-
);
155+
.credentialsProvider(StaticCredentialsProvider.create(basicAWSCredentials))
156+
.endpointOverride(URI.create(ledgerConfig.getSqsConfig().getEndpoint()))
157+
.region(Region.of(ledgerConfig.getSqsConfig().getRegion()));
164158
} else {
165159
// uses AWS SDK's DefaultAWSCredentialsProviderChain to obtain credentials
166-
clientBuilder.withRegion(ledgerConfig.getSqsConfig().getRegion());
160+
clientBuilder.region(Region.of(ledgerConfig.getSqsConfig().getRegion()));
167161
}
168162

169163
return clientBuilder.build();
@@ -192,7 +186,7 @@ public SnsClient snsClient(LedgerConfig ledgerConfig) {
192186
}
193187

194188
@Provides
195-
public SqsQueueService provideSqsQueueService(AmazonSQS amazonSQS, LedgerConfig ledgerConfig) {
189+
public SqsQueueService provideSqsQueueService(SqsClient amazonSQS, LedgerConfig ledgerConfig) {
196190
return new SqsQueueService(
197191
amazonSQS,
198192
ledgerConfig.getSqsConfig().getMessageMaximumWaitTimeInSeconds(),

src/main/java/uk/gov/pay/ledger/healthcheck/SQSHealthCheck.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,28 @@
11
package uk.gov.pay.ledger.healthcheck;
22

3-
import com.amazonaws.SdkClientException;
4-
import com.amazonaws.services.sqs.AmazonSQS;
5-
import com.amazonaws.services.sqs.model.GetQueueAttributesRequest;
63
import com.codahale.metrics.health.HealthCheck;
74
import com.google.inject.Inject;
85
import org.apache.http.NameValuePair;
96
import org.apache.http.message.BasicNameValuePair;
107
import org.slf4j.Logger;
118
import org.slf4j.LoggerFactory;
9+
import software.amazon.awssdk.core.exception.SdkClientException;
10+
import software.amazon.awssdk.services.sqs.SqsClient;
11+
import software.amazon.awssdk.services.sqs.model.GetQueueAttributesRequest;
1212
import uk.gov.pay.ledger.app.LedgerConfig;
1313

14-
1514
import java.util.Optional;
1615

1716
import static java.lang.String.format;
1817

1918
public class SQSHealthCheck extends HealthCheck {
2019

21-
private final AmazonSQS sqsClient;
20+
private final SqsClient sqsClient;
2221
private final Logger logger = LoggerFactory.getLogger(SQSHealthCheck.class);
2322
private NameValuePair sqsHealthCheckHolder;
2423

2524
@Inject
26-
public SQSHealthCheck(AmazonSQS sqsClient, LedgerConfig ledgerConfig) {
25+
public SQSHealthCheck(SqsClient sqsClient, LedgerConfig ledgerConfig) {
2726
this.sqsClient = sqsClient;
2827
setUpSQSHealthCheckHolder(ledgerConfig);
2928
}
@@ -43,8 +42,10 @@ protected Result check() {
4342

4443
private Optional<String> checkQueue(NameValuePair nameValuePair) {
4544
GetQueueAttributesRequest queueAttributesRequest =
46-
new GetQueueAttributesRequest(nameValuePair.getValue())
47-
.withAttributeNames("All");
45+
GetQueueAttributesRequest.builder()
46+
.queueUrl(nameValuePair.getValue())
47+
.attributeNamesWithStrings("All")
48+
.build();
4849
try {
4950
sqsClient.getQueueAttributes(queueAttributesRequest);
5051
} catch (UnsupportedOperationException | SdkClientException e) {

src/test/java/uk/gov/pay/ledger/extension/AppWithPostgresAndSqsExtension.java

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

3-
import com.amazonaws.services.sqs.AmazonSQS;
43
import io.dropwizard.testing.ConfigOverride;
54
import io.dropwizard.testing.junit5.DropwizardAppExtension;
65
import org.jdbi.v3.core.Jdbi;
@@ -10,6 +9,7 @@
109
import org.junit.jupiter.api.extension.ExtensionContext;
1110
import org.slf4j.Logger;
1211
import org.slf4j.LoggerFactory;
12+
import software.amazon.awssdk.services.sqs.SqsClient;
1313
import uk.gov.pay.ledger.app.LedgerApp;
1414
import uk.gov.pay.ledger.app.LedgerConfig;
1515
import uk.gov.pay.ledger.rule.SqsTestDocker;
@@ -30,7 +30,7 @@ public class AppWithPostgresAndSqsExtension implements BeforeAllCallback, AfterA
3030

3131
private static String CONFIG_PATH = resourceFilePath("config/test-config.yaml");
3232
private final Jdbi jdbi;
33-
private AmazonSQS sqsClient;
33+
private SqsClient sqsClient;
3434
private DropwizardAppExtension<LedgerConfig> dropwizardAppExtension;
3535

3636
public AppWithPostgresAndSqsExtension() {
@@ -40,7 +40,7 @@ public AppWithPostgresAndSqsExtension() {
4040
public AppWithPostgresAndSqsExtension(ConfigOverride... configOverrides) {
4141
getOrCreate();
4242

43-
sqsClient = SqsTestDocker.initialise("event-queue");
43+
sqsClient = SqsTestDocker.initialise(List.of("event-queue"));
4444

4545
ConfigOverride[] newConfigOverrides = overrideDatabaseConfig(configOverrides);
4646
newConfigOverrides = overrideSqsConfig(newConfigOverrides);
@@ -94,7 +94,7 @@ public Jdbi getJdbi() {
9494
return jdbi;
9595
}
9696

97-
public AmazonSQS getSqsClient() {
97+
public SqsClient getSqsClient() {
9898
return sqsClient;
9999
}
100100
}

src/test/java/uk/gov/pay/ledger/pact/event/CancelledByUserEventQueueConsumerIT.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.google.gson.Gson;
99
import org.junit.Rule;
1010
import org.junit.Test;
11+
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;
1112
import uk.gov.pay.ledger.app.LedgerConfig;
1213
import uk.gov.pay.ledger.event.model.SalientEventType;
1314
import uk.gov.pay.ledger.rule.AppWithPostgresAndSqsRule;
@@ -67,7 +68,11 @@ public MessagePact createCancelledByUserEventPact(MessagePactBuilder builder) {
6768
@Test
6869
@PactVerification({"connector"})
6970
public void test() {
70-
appRule.getSqsClient().sendMessage(SqsTestDocker.getQueueUrl("event-queue"), new String(currentMessage));
71+
SendMessageRequest messageRequest = SendMessageRequest.builder()
72+
.queueUrl(SqsTestDocker.getQueueUrl("event-queue"))
73+
.messageBody(new String(currentMessage))
74+
.build();
75+
appRule.getSqsClient().sendMessage(messageRequest);
7176

7277
TransactionDao transactionDao = new TransactionDao(appRule.getJdbi(), mock(LedgerConfig.class));
7378

src/test/java/uk/gov/pay/ledger/pact/event/CaptureConfirmedEventQueueConsumerIT.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.google.gson.Gson;
1010
import org.junit.Rule;
1111
import org.junit.Test;
12+
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;
1213
import uk.gov.pay.ledger.app.LedgerConfig;
1314
import uk.gov.pay.ledger.event.dao.EventDao;
1415
import uk.gov.pay.ledger.event.entity.EventEntity;
@@ -71,7 +72,11 @@ public MessagePact createCaptureConfirmedEventPact(MessagePactBuilder builder) {
7172
@Test
7273
@PactVerification({"connector"})
7374
public void test() {
74-
appRule.getSqsClient().sendMessage(SqsTestDocker.getQueueUrl("event-queue"), new String(currentMessage));
75+
SendMessageRequest messageRequest = SendMessageRequest.builder()
76+
.queueUrl(SqsTestDocker.getQueueUrl("event-queue"))
77+
.messageBody(new String(currentMessage))
78+
.build();
79+
appRule.getSqsClient().sendMessage(messageRequest);
7580

7681
TransactionDao transactionDao = new TransactionDao(appRule.getJdbi(), mock(LedgerConfig.class));
7782
EventDao eventDao = appRule.getJdbi().onDemand(EventDao.class);

src/test/java/uk/gov/pay/ledger/pact/event/CaptureSubmittedEventQueueConsumerIT.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.google.gson.Gson;
99
import org.junit.Rule;
1010
import org.junit.Test;
11+
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;
1112
import uk.gov.pay.ledger.app.LedgerConfig;
1213
import uk.gov.pay.ledger.event.model.SalientEventType;
1314
import uk.gov.pay.ledger.rule.AppWithPostgresAndSqsRule;
@@ -67,7 +68,11 @@ public MessagePact createPaymentCreatedEventPact(MessagePactBuilder builder) {
6768
@Test
6869
@PactVerification({"connector"})
6970
public void test() {
70-
appRule.getSqsClient().sendMessage(SqsTestDocker.getQueueUrl("event-queue"), new String(currentMessage));
71+
SendMessageRequest messageRequest = SendMessageRequest.builder()
72+
.queueUrl(SqsTestDocker.getQueueUrl("event-queue"))
73+
.messageBody(new String(currentMessage))
74+
.build();
75+
appRule.getSqsClient().sendMessage(messageRequest);
7176

7277
TransactionDao transactionDao = new TransactionDao(appRule.getJdbi(), mock(LedgerConfig.class));
7378

src/test/java/uk/gov/pay/ledger/pact/event/DisputeCreatedEventQueueConsumerIT.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.junit.Before;
1313
import org.junit.Rule;
1414
import org.junit.Test;
15+
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;
1516
import uk.gov.pay.ledger.app.LedgerConfig;
1617
import uk.gov.pay.ledger.event.dao.EventDao;
1718
import uk.gov.pay.ledger.event.entity.EventEntity;
@@ -96,7 +97,11 @@ public void setUp() {
9697
@Test
9798
@PactVerification({"connector"})
9899
public void test() throws JsonProcessingException {
99-
appRule.getSqsClient().sendMessage(SqsTestDocker.getQueueUrl("event-queue"), new String(currentMessage));
100+
SendMessageRequest messageRequest = SendMessageRequest.builder()
101+
.queueUrl(SqsTestDocker.getQueueUrl("event-queue"))
102+
.messageBody(new String(currentMessage))
103+
.build();
104+
appRule.getSqsClient().sendMessage(messageRequest);
100105
EventDao eventDao = appRule.getJdbi().onDemand(EventDao.class);
101106
await().atMost(1, TimeUnit.SECONDS).until(
102107
() -> !eventDao.findEventsForExternalIds(Set.of(resourceExternalId)).isEmpty()

src/test/java/uk/gov/pay/ledger/pact/event/DisputeEvidenceSubmittedEventQueueConsumerIT.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.junit.Before;
1313
import org.junit.Rule;
1414
import org.junit.Test;
15+
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;
1516
import uk.gov.pay.ledger.app.LedgerConfig;
1617
import uk.gov.pay.ledger.event.dao.EventDao;
1718
import uk.gov.pay.ledger.event.entity.EventEntity;
@@ -96,7 +97,11 @@ public void setUp() {
9697
@Test
9798
@PactVerification({"connector"})
9899
public void test() throws JsonProcessingException {
99-
appRule.getSqsClient().sendMessage(SqsTestDocker.getQueueUrl("event-queue"), new String(currentMessage));
100+
SendMessageRequest messageRequest = SendMessageRequest.builder()
101+
.queueUrl(SqsTestDocker.getQueueUrl("event-queue"))
102+
.messageBody(new String(currentMessage))
103+
.build();
104+
appRule.getSqsClient().sendMessage(messageRequest);
100105
EventDao eventDao = appRule.getJdbi().onDemand(EventDao.class);
101106
await().atMost(1, TimeUnit.SECONDS).until(
102107
() -> !eventDao.findEventsForExternalIds(Set.of(resourceExternalId)).isEmpty()

src/test/java/uk/gov/pay/ledger/pact/event/DisputeLostEventQueueConsumerIT.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.junit.Before;
1212
import org.junit.Rule;
1313
import org.junit.Test;
14+
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;
1415
import uk.gov.pay.ledger.app.LedgerConfig;
1516
import uk.gov.pay.ledger.event.dao.EventDao;
1617
import uk.gov.pay.ledger.event.entity.EventEntity;
@@ -96,7 +97,11 @@ public void setUp() {
9697
@Test
9798
@PactVerification({"connector"})
9899
public void test() throws JsonProcessingException {
99-
appRule.getSqsClient().sendMessage(SqsTestDocker.getQueueUrl("event-queue"), new String(currentMessage));
100+
SendMessageRequest messageRequest = SendMessageRequest.builder()
101+
.queueUrl(SqsTestDocker.getQueueUrl("event-queue"))
102+
.messageBody(new String(currentMessage))
103+
.build();
104+
appRule.getSqsClient().sendMessage(messageRequest);
100105
EventDao eventDao = appRule.getJdbi().onDemand(EventDao.class);
101106
await().atMost(1, TimeUnit.SECONDS).until(
102107
() -> !eventDao.findEventsForExternalIds(Set.of(resourceExternalId)).isEmpty()

0 commit comments

Comments
 (0)