diff --git a/docs/utilities/idempotency.md b/docs/utilities/idempotency.md index 5392b8d4c..4d59f97f4 100644 --- a/docs/utilities/idempotency.md +++ b/docs/utilities/idempotency.md @@ -879,7 +879,7 @@ When creating the `DynamoDBPersistenceStore`, you can set a custom [`DynamoDbCli ```java DynamoDbClient.builder() .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) - .httpClient(UrlConnectionHttpClient.builder().build()) + .httpClient(AwsCrtHttpClient.builder().build()) .region(Region.of(System.getenv(AWS_REGION_ENV))) .build(); ``` @@ -1073,7 +1073,7 @@ To unit test your function with DynamoDB Local, you can refer to this guide to [ // Initialize DynamoDBClient client = DynamoDbClient.builder() - .httpClient(UrlConnectionHttpClient.builder().build()) + .httpClient(AwsCrtHttpClient.builder().build()) .region(Region.EU_WEST_1) .endpointOverride(URI.create("http://localhost:" + port)) .credentialsProvider(StaticCredentialsProvider.create( @@ -1151,7 +1151,7 @@ To unit test your function with DynamoDB Local, you can refer to this guide to [ public App() { DynamoDbClientBuilder ddbBuilder = DynamoDbClient.builder() .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) - .httpClient(UrlConnectionHttpClient.builder().build()); + .httpClient(AwsCrtHttpClient.builder().build()); if (System.getenv("AWS_SAM_LOCAL") != null) { ddbBuilder.endpointOverride(URI.create("http://dynamo:8000")); diff --git a/docs/utilities/large_messages.md b/docs/utilities/large_messages.md index c0c1cd599..3df50b15e 100644 --- a/docs/utilities/large_messages.md +++ b/docs/utilities/large_messages.md @@ -370,7 +370,7 @@ To interact with S3, the utility creates a default S3 Client : === "Default S3 Client" ```java S3Client client = S3Client.builder() - .httpClient(UrlConnectionHttpClient.builder().build()) + .httpClient(AwsCrtHttpClient.builder().build()) .region(Region.of(System.getenv(AWS_REGION_ENV))) .build(); ``` diff --git a/examples/powertools-examples-batch/pom.xml b/examples/powertools-examples-batch/pom.xml index 947f146b3..4badf6915 100644 --- a/examples/powertools-examples-batch/pom.xml +++ b/examples/powertools-examples-batch/pom.xml @@ -14,7 +14,7 @@ 11 11 1.9.20.1 - 2.21.1 + 2.22.0 @@ -50,7 +50,7 @@ software.amazon.awssdk - url-connection-client + aws-crt-client ${sdk.version} diff --git a/examples/powertools-examples-batch/src/main/java/org/demo/batch/dynamo/DynamoDBWriter.java b/examples/powertools-examples-batch/src/main/java/org/demo/batch/dynamo/DynamoDBWriter.java index fc1b0747b..2daefb7e3 100644 --- a/examples/powertools-examples-batch/src/main/java/org/demo/batch/dynamo/DynamoDBWriter.java +++ b/examples/powertools-examples-batch/src/main/java/org/demo/batch/dynamo/DynamoDBWriter.java @@ -16,7 +16,7 @@ import software.amazon.awssdk.enhanced.dynamodb.model.BatchWriteItemEnhancedRequest; import software.amazon.awssdk.enhanced.dynamodb.model.BatchWriteResult; import software.amazon.awssdk.enhanced.dynamodb.model.WriteBatch; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; public class DynamoDBWriter implements RequestHandler { @@ -30,7 +30,7 @@ public class DynamoDBWriter implements RequestHandler { public DynamoDBWriter() { random = new SecureRandom(); DynamoDbClient dynamoDbClient = DynamoDbClient.builder() - .httpClientBuilder(UrlConnectionHttpClient.builder()) + .httpClientBuilder(AwsCrtHttpClient.builder()) .build(); enhancedClient = DynamoDbEnhancedClient.builder() diff --git a/examples/powertools-examples-batch/src/main/java/org/demo/batch/kinesis/KinesisBatchSender.java b/examples/powertools-examples-batch/src/main/java/org/demo/batch/kinesis/KinesisBatchSender.java index dadead1a2..38a7e14eb 100644 --- a/examples/powertools-examples-batch/src/main/java/org/demo/batch/kinesis/KinesisBatchSender.java +++ b/examples/powertools-examples-batch/src/main/java/org/demo/batch/kinesis/KinesisBatchSender.java @@ -14,7 +14,7 @@ import org.slf4j.LoggerFactory; import org.demo.batch.model.Product; import software.amazon.awssdk.core.SdkBytes; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.services.kinesis.KinesisClient; import software.amazon.awssdk.services.kinesis.model.PutRecordsRequest; import software.amazon.awssdk.services.kinesis.model.PutRecordsRequestEntry; @@ -36,7 +36,7 @@ public class KinesisBatchSender implements RequestHandler { public SqsBatchSender() { sqsClient = SqsClient.builder() - .httpClient(UrlConnectionHttpClient.create()) + .httpClient(AwsCrtHttpClient.create()) .build(); random = new SecureRandom(); objectMapper = new ObjectMapper(); diff --git a/examples/powertools-examples-parameters/src/main/java/org/demo/parameters/ParametersFunction.java b/examples/powertools-examples-parameters/src/main/java/org/demo/parameters/ParametersFunction.java index 9c3c422cf..fb9baf39b 100644 --- a/examples/powertools-examples-parameters/src/main/java/org/demo/parameters/ParametersFunction.java +++ b/examples/powertools-examples-parameters/src/main/java/org/demo/parameters/ParametersFunction.java @@ -22,19 +22,15 @@ import com.amazonaws.services.lambda.runtime.RequestHandler; import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent; import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.URL; import java.util.HashMap; import java.util.Map; -import java.util.stream.Collectors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.lambda.powertools.parameters.secrets.SecretsParam; import software.amazon.lambda.powertools.parameters.secrets.SecretsProvider; import software.amazon.lambda.powertools.parameters.ssm.SSMParam; import software.amazon.lambda.powertools.parameters.ssm.SSMProvider; +import software.amazon.lambda.powertools.parameters.transform.TransformationManager; public class ParametersFunction implements RequestHandler { private static final Logger log = LoggerFactory.getLogger(ParametersFunction.class); @@ -49,9 +45,11 @@ public class ParametersFunction implements RequestHandler log.info("- {}={}\n", key, value)); - - log.info("\n=============== Secrets Manager ==============="); - log.info("secretjson:"); - secretJson.forEach((key, value) -> log.info("- {}={}\n", key, value)); - log.info("secretjsonobj={}\n", secretJsonObj); - Map headers = new HashMap<>(); headers.put("Content-Type", "application/json"); headers.put("X-Custom-Header", "application/json"); APIGatewayProxyResponseEvent response = new APIGatewayProxyResponseEvent() .withHeaders(headers); - try { - final String pageContents = this.getPageContents("https://checkip.amazonaws.com"); - String output = String.format("{ \"message\": \"hello world\", \"location\": \"%s\" }", pageContents); + String output = "{ \"message\": \"hello world\"}"; - return response - .withStatusCode(200) - .withBody(output); - } catch (IOException e) { - return response - .withBody("{}") - .withStatusCode(500); - } + return response + .withStatusCode(200) + .withBody(output); } - private String getPageContents(String address) throws IOException { - URL url = new URL(address); - try (BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"))) { - return br.lines().collect(Collectors.joining(System.lineSeparator())); - } - } } diff --git a/examples/powertools-examples-parameters/src/main/resources/log4j2.xml b/examples/powertools-examples-parameters/src/main/resources/log4j2.xml index 033da8a11..454d7faf1 100644 --- a/examples/powertools-examples-parameters/src/main/resources/log4j2.xml +++ b/examples/powertools-examples-parameters/src/main/resources/log4j2.xml @@ -2,11 +2,11 @@ - + - + diff --git a/examples/powertools-examples-parameters/template.yaml b/examples/powertools-examples-parameters/template.yaml index 9d3bf8b0e..8e51b5461 100644 --- a/examples/powertools-examples-parameters/template.yaml +++ b/examples/powertools-examples-parameters/template.yaml @@ -1,7 +1,7 @@ AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: > - validation demo + parameters demo Globals: Function: @@ -19,9 +19,11 @@ Resources: Handler: org.demo.parameters.ParametersFunction::handleRequest MemorySize: 512 Tracing: Active + Timeout: 60 Environment: Variables: LOG_LEVEL: INFO + JAVA_TOOL_OPTIONS: -XX:+TieredCompilation -XX:TieredStopAtLevel=1 Policies: - AWSSecretsManagerGetSecretValuePolicy: SecretArn: !Ref UserPwd diff --git a/pom.xml b/pom.xml index a4df4116a..a56731165 100644 --- a/pom.xml +++ b/pom.xml @@ -90,7 +90,7 @@ 2.22.0 2.0.7 2.15.3 - 2.21.0 + 2.23.9 2.14.0 2.1.3 UTF-8 @@ -185,6 +185,11 @@ url-connection-client ${aws.sdk.version} + + software.amazon.awssdk + aws-crt-client + ${aws.sdk.version} + io.burt jmespath-jackson diff --git a/powertools-cloudformation/pom.xml b/powertools-cloudformation/pom.xml index e3e4748d6..d5cfa61fe 100644 --- a/powertools-cloudformation/pom.xml +++ b/powertools-cloudformation/pom.xml @@ -40,7 +40,7 @@ software.amazon.awssdk - url-connection-client + aws-crt-client com.amazonaws diff --git a/powertools-cloudformation/src/main/java/software/amazon/lambda/powertools/cloudformation/AbstractCustomResourceHandler.java b/powertools-cloudformation/src/main/java/software/amazon/lambda/powertools/cloudformation/AbstractCustomResourceHandler.java index 7f5b6bb24..95404fd33 100644 --- a/powertools-cloudformation/src/main/java/software/amazon/lambda/powertools/cloudformation/AbstractCustomResourceHandler.java +++ b/powertools-cloudformation/src/main/java/software/amazon/lambda/powertools/cloudformation/AbstractCustomResourceHandler.java @@ -22,7 +22,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.awssdk.http.SdkHttpClient; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; /** * Handler base class providing core functionality for sending responses to custom CloudFormation resources after @@ -40,7 +40,7 @@ public abstract class AbstractCustomResourceHandler * Creates a new Handler that uses the default HTTP client for communicating with custom CloudFormation resources. */ protected AbstractCustomResourceHandler() { - this.client = UrlConnectionHttpClient.create(); + this.client = AwsCrtHttpClient.create(); } /** diff --git a/powertools-e2e-tests/handlers/idempotency/src/main/java/software/amazon/lambda/powertools/e2e/Function.java b/powertools-e2e-tests/handlers/idempotency/src/main/java/software/amazon/lambda/powertools/e2e/Function.java index e4c2f2b9a..d098e657a 100644 --- a/powertools-e2e-tests/handlers/idempotency/src/main/java/software/amazon/lambda/powertools/e2e/Function.java +++ b/powertools-e2e-tests/handlers/idempotency/src/main/java/software/amazon/lambda/powertools/e2e/Function.java @@ -21,7 +21,7 @@ import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.TimeZone; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.lambda.powertools.idempotency.Idempotency; @@ -36,7 +36,7 @@ public class Function implements RequestHandler { public Function() { this(DynamoDbClient .builder() - .httpClient(UrlConnectionHttpClient.builder().build()) + .httpClient(AwsCrtHttpClient.builder().build()) .region(Region.of(System.getenv("AWS_REGION"))) .build()); } diff --git a/powertools-e2e-tests/handlers/largemessage/src/main/java/software/amazon/lambda/powertools/e2e/Function.java b/powertools-e2e-tests/handlers/largemessage/src/main/java/software/amazon/lambda/powertools/e2e/Function.java index 36cb9fcd2..34166fe1c 100644 --- a/powertools-e2e-tests/handlers/largemessage/src/main/java/software/amazon/lambda/powertools/e2e/Function.java +++ b/powertools-e2e-tests/handlers/largemessage/src/main/java/software/amazon/lambda/powertools/e2e/Function.java @@ -22,7 +22,7 @@ import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; @@ -40,7 +40,7 @@ public class Function implements RequestHandler { public Function() { if (client == null) { client = DynamoDbClient.builder() - .httpClient(UrlConnectionHttpClient.builder().build()) + .httpClient(AwsCrtHttpClient.builder().build()) .region(Region.of(System.getenv("AWS_REGION"))) .build(); } diff --git a/powertools-e2e-tests/handlers/largemessage_idempotent/src/main/java/software/amazon/lambda/powertools/e2e/Function.java b/powertools-e2e-tests/handlers/largemessage_idempotent/src/main/java/software/amazon/lambda/powertools/e2e/Function.java index 5269b37c9..89ef7f2d1 100644 --- a/powertools-e2e-tests/handlers/largemessage_idempotent/src/main/java/software/amazon/lambda/powertools/e2e/Function.java +++ b/powertools-e2e-tests/handlers/largemessage_idempotent/src/main/java/software/amazon/lambda/powertools/e2e/Function.java @@ -26,7 +26,7 @@ import java.util.HashMap; import java.util.Map; import java.util.TimeZone; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; @@ -49,7 +49,7 @@ public class Function implements RequestHandler { public Function() { this(DynamoDbClient .builder() - .httpClient(UrlConnectionHttpClient.builder().build()) + .httpClient(AwsCrtHttpClient.builder().build()) .region(Region.of(System.getenv("AWS_REGION"))) .build()); } diff --git a/powertools-e2e-tests/pom.xml b/powertools-e2e-tests/pom.xml index 9d84ce9f2..09b16a269 100644 --- a/powertools-e2e-tests/pom.xml +++ b/powertools-e2e-tests/pom.xml @@ -90,7 +90,7 @@ software.amazon.awssdk - url-connection-client + aws-crt-client test diff --git a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/BatchE2ET.java b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/BatchE2ET.java index c5f74594d..a4cf0045f 100644 --- a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/BatchE2ET.java +++ b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/BatchE2ET.java @@ -33,7 +33,7 @@ import org.junit.jupiter.api.Timeout; import software.amazon.awssdk.core.SdkBytes; import software.amazon.awssdk.http.SdkHttpClient; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; @@ -52,7 +52,7 @@ import software.amazon.lambda.powertools.utilities.JsonConfig; public class BatchE2ET { - private static final SdkHttpClient httpClient = UrlConnectionHttpClient.builder().build(); + private static final SdkHttpClient httpClient = AwsCrtHttpClient.builder().build(); private static final Region region = Region.of(System.getProperty("AWS_DEFAULT_REGION", "eu-west-1")); private static Infrastructure infrastructure; private static String functionName; diff --git a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LargeMessageE2ET.java b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LargeMessageE2ET.java index 548a710b8..664a2aad0 100644 --- a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LargeMessageE2ET.java +++ b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LargeMessageE2ET.java @@ -23,7 +23,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.awssdk.http.SdkHttpClient; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; @@ -38,7 +38,7 @@ public class LargeMessageE2ET { private static final Logger LOG = LoggerFactory.getLogger(LargeMessageE2ET.class); - private static final SdkHttpClient httpClient = UrlConnectionHttpClient.builder().build(); + private static final SdkHttpClient httpClient = AwsCrtHttpClient.builder().build(); private static final Region region = Region.of(System.getProperty("AWS_DEFAULT_REGION", "eu-west-1")); private static final S3Client s3Client = S3Client.builder() diff --git a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LargeMessageIdempotentE2ET.java b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LargeMessageIdempotentE2ET.java index ef342ea13..d56d570da 100644 --- a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LargeMessageIdempotentE2ET.java +++ b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LargeMessageIdempotentE2ET.java @@ -33,7 +33,7 @@ import org.slf4j.LoggerFactory; import software.amazon.awssdk.core.sync.RequestBody; import software.amazon.awssdk.http.SdkHttpClient; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; @@ -49,7 +49,7 @@ public class LargeMessageIdempotentE2ET { private static final Logger LOG = LoggerFactory.getLogger(LargeMessageIdempotentE2ET.class); - private static final SdkHttpClient httpClient = UrlConnectionHttpClient.builder().build(); + private static final SdkHttpClient httpClient = AwsCrtHttpClient.builder().build(); private static final Region region = Region.of(System.getProperty("AWS_DEFAULT_REGION", "eu-west-1")); private static final S3Client s3Client = S3Client.builder() diff --git a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/Infrastructure.java b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/Infrastructure.java index 28a0f2bb4..5c53f1dbb 100644 --- a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/Infrastructure.java +++ b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/Infrastructure.java @@ -65,7 +65,7 @@ import software.amazon.awscdk.services.sqs.Queue; import software.amazon.awssdk.core.waiters.WaiterResponse; import software.amazon.awssdk.http.SdkHttpClient; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.cloudformation.CloudFormationClient; import software.amazon.awssdk.services.cloudformation.model.Capability; @@ -138,7 +138,7 @@ private Infrastructure(Builder builder) { this.synthesize(); - this.httpClient = UrlConnectionHttpClient.builder().build(); + this.httpClient = AwsCrtHttpClient.builder().build(); this.region = Region.of(System.getProperty("AWS_DEFAULT_REGION", "eu-west-1")); this.account = StsClient.builder() .httpClient(httpClient) diff --git a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/lambda/LambdaInvoker.java b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/lambda/LambdaInvoker.java index cf45076bf..30585275a 100644 --- a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/lambda/LambdaInvoker.java +++ b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/lambda/LambdaInvoker.java @@ -20,7 +20,7 @@ import java.time.Instant; import software.amazon.awssdk.core.SdkBytes; import software.amazon.awssdk.http.SdkHttpClient; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.lambda.LambdaClient; import software.amazon.awssdk.services.lambda.model.InvokeRequest; @@ -28,7 +28,7 @@ import software.amazon.awssdk.services.lambda.model.LogType; public class LambdaInvoker { - private static final SdkHttpClient httpClient = UrlConnectionHttpClient.builder().build(); + private static final SdkHttpClient httpClient = AwsCrtHttpClient.builder().build(); private static final Region region = Region.of(System.getProperty("AWS_DEFAULT_REGION", "eu-west-1")); private static final LambdaClient lambda = LambdaClient.builder() .httpClient(httpClient) diff --git a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/metrics/MetricsFetcher.java b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/metrics/MetricsFetcher.java index 00728f451..e7384c969 100644 --- a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/metrics/MetricsFetcher.java +++ b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/metrics/MetricsFetcher.java @@ -29,7 +29,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.awssdk.http.SdkHttpClient; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.cloudwatch.CloudWatchClient; import software.amazon.awssdk.services.cloudwatch.model.Dimension; @@ -46,7 +46,7 @@ public class MetricsFetcher { private static final Logger LOG = LoggerFactory.getLogger(MetricsFetcher.class); - private static final SdkHttpClient httpClient = UrlConnectionHttpClient.builder().build(); + private static final SdkHttpClient httpClient = AwsCrtHttpClient.builder().build(); private static final Region region = Region.of(System.getProperty("AWS_DEFAULT_REGION", "eu-west-1")); private static final CloudWatchClient cloudwatch = CloudWatchClient.builder() .httpClient(httpClient) diff --git a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/tracing/TraceFetcher.java b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/tracing/TraceFetcher.java index 2b5b6e15b..dc4c21d2a 100644 --- a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/tracing/TraceFetcher.java +++ b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/tracing/TraceFetcher.java @@ -34,7 +34,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.awssdk.http.SdkHttpClient; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.xray.XRayClient; import software.amazon.awssdk.services.xray.model.BatchGetTracesRequest; @@ -53,7 +53,7 @@ public class TraceFetcher { private static final ObjectMapper MAPPER = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); private static final Logger LOG = LoggerFactory.getLogger(TraceFetcher.class); - private static final SdkHttpClient httpClient = UrlConnectionHttpClient.builder().build(); + private static final SdkHttpClient httpClient = AwsCrtHttpClient.builder().build(); private static final Region region = Region.of(System.getProperty("AWS_DEFAULT_REGION", "eu-west-1")); private static final XRayClient xray = XRayClient.builder() .httpClient(httpClient) diff --git a/powertools-idempotency/pom.xml b/powertools-idempotency/pom.xml index fd53cd9e2..592c5cf0a 100644 --- a/powertools-idempotency/pom.xml +++ b/powertools-idempotency/pom.xml @@ -64,10 +64,10 @@ + software.amazon.awssdk - url-connection-client - ${aws.sdk.version} + aws-crt-client @@ -112,6 +112,12 @@ [1.12,2.0) test + + + software.amazon.awssdk + url-connection-client + test + io.github.ganadist.sqlite4java diff --git a/powertools-idempotency/src/main/java/software/amazon/lambda/powertools/idempotency/persistence/DynamoDBPersistenceStore.java b/powertools-idempotency/src/main/java/software/amazon/lambda/powertools/idempotency/persistence/DynamoDBPersistenceStore.java index 054f61ef3..cf0d41c1c 100644 --- a/powertools-idempotency/src/main/java/software/amazon/lambda/powertools/idempotency/persistence/DynamoDBPersistenceStore.java +++ b/powertools-idempotency/src/main/java/software/amazon/lambda/powertools/idempotency/persistence/DynamoDBPersistenceStore.java @@ -29,7 +29,7 @@ import org.slf4j.LoggerFactory; import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; import software.amazon.awssdk.core.client.config.SdkAdvancedClientOption; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; @@ -94,7 +94,7 @@ private DynamoDBPersistenceStore(String tableName, String idempotencyDisabledEnv = System.getenv().get(Constants.IDEMPOTENCY_DISABLED_ENV); if (idempotencyDisabledEnv == null || "false".equalsIgnoreCase(idempotencyDisabledEnv)) { this.dynamoDbClient = DynamoDbClient.builder() - .httpClient(UrlConnectionHttpClient.builder().build()) + .httpClient(AwsCrtHttpClient.builder().build()) .overrideConfiguration(ClientOverrideConfiguration.builder() .putAdvancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX, UserAgentConfigurator.getUserAgent(IDEMPOTENCY)).build()) @@ -419,7 +419,7 @@ public Builder withValidationAttr(String validationAttr) { /** * Custom {@link DynamoDbClient} used to query DynamoDB (optional).
- * The default one uses {@link UrlConnectionHttpClient} as a http client and + * The default one uses {@link AwsCrtHttpClient} as a http client and * add com.amazonaws.xray.interceptors.TracingInterceptor (X-Ray) if available in the classpath. * * @param dynamoDbClient the {@link DynamoDbClient} instance to use diff --git a/powertools-idempotency/src/test/java/software/amazon/lambda/powertools/idempotency/DynamoDBConfig.java b/powertools-idempotency/src/test/java/software/amazon/lambda/powertools/idempotency/DynamoDBConfig.java index 66ddb53ac..8775a3c20 100644 --- a/powertools-idempotency/src/test/java/software/amazon/lambda/powertools/idempotency/DynamoDBConfig.java +++ b/powertools-idempotency/src/test/java/software/amazon/lambda/powertools/idempotency/DynamoDBConfig.java @@ -23,7 +23,7 @@ import org.junit.jupiter.api.BeforeAll; import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.AttributeDefinition; @@ -55,7 +55,7 @@ public static void setupDynamo() { } client = DynamoDbClient.builder() - .httpClient(UrlConnectionHttpClient.builder().build()) + .httpClient(AwsCrtHttpClient.builder().build()) .region(Region.EU_WEST_1) .endpointOverride(URI.create("http://localhost:" + port)) .credentialsProvider(StaticCredentialsProvider.create( diff --git a/powertools-large-messages/pom.xml b/powertools-large-messages/pom.xml index 4206183de..5c9c07d25 100644 --- a/powertools-large-messages/pom.xml +++ b/powertools-large-messages/pom.xml @@ -77,10 +77,8 @@
software.amazon.awssdk - url-connection-client - ${aws.sdk.version} + aws-crt-client - org.junit.jupiter diff --git a/powertools-large-messages/src/main/java/software/amazon/lambda/powertools/largemessages/LargeMessageConfig.java b/powertools-large-messages/src/main/java/software/amazon/lambda/powertools/largemessages/LargeMessageConfig.java index 6ad529496..8688fa52a 100644 --- a/powertools-large-messages/src/main/java/software/amazon/lambda/powertools/largemessages/LargeMessageConfig.java +++ b/powertools-large-messages/src/main/java/software/amazon/lambda/powertools/largemessages/LargeMessageConfig.java @@ -16,7 +16,7 @@ import static software.amazon.lambda.powertools.common.internal.LambdaConstants.AWS_REGION_ENV; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.S3ClientBuilder; @@ -74,7 +74,7 @@ void resetS3Client() { public S3Client getS3Client() { if (this.s3Client == null) { S3ClientBuilder s3ClientBuilder = S3Client.builder() - .httpClient(UrlConnectionHttpClient.builder().build()) + .httpClient(AwsCrtHttpClient.builder().build()) .region(Region.of(System.getenv(AWS_REGION_ENV))); this.s3Client = s3ClientBuilder.build(); } diff --git a/powertools-parameters/pom.xml b/powertools-parameters/pom.xml index 6c90e30a8..bcc912138 100644 --- a/powertools-parameters/pom.xml +++ b/powertools-parameters/pom.xml @@ -41,7 +41,7 @@ software.amazon.awssdk - url-connection-client + aws-crt-client diff --git a/powertools-parameters/powertools-parameters-appconfig/src/main/java/software/amazon/lambda/powertools/parameters/appconfig/AppConfigProviderBuilder.java b/powertools-parameters/powertools-parameters-appconfig/src/main/java/software/amazon/lambda/powertools/parameters/appconfig/AppConfigProviderBuilder.java index dadacb843..8732d422c 100644 --- a/powertools-parameters/powertools-parameters-appconfig/src/main/java/software/amazon/lambda/powertools/parameters/appconfig/AppConfigProviderBuilder.java +++ b/powertools-parameters/powertools-parameters-appconfig/src/main/java/software/amazon/lambda/powertools/parameters/appconfig/AppConfigProviderBuilder.java @@ -17,7 +17,7 @@ import software.amazon.awssdk.core.SdkSystemSetting; import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; import software.amazon.awssdk.core.client.config.SdkAdvancedClientOption; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.appconfigdata.AppConfigDataClient; import software.amazon.lambda.powertools.common.internal.UserAgentConfigurator; @@ -55,7 +55,7 @@ public AppConfigProvider build() { // Create a AppConfigDataClient if we haven't been given one if (client == null) { client = AppConfigDataClient.builder() - .httpClientBuilder(UrlConnectionHttpClient.builder()) + .httpClientBuilder(AwsCrtHttpClient.builder()) .region(Region.of(System.getenv(SdkSystemSetting.AWS_REGION.environmentVariable()))) .overrideConfiguration(ClientOverrideConfiguration.builder() .putAdvancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX, diff --git a/powertools-parameters/powertools-parameters-dynamodb/src/main/java/software/amazon/lambda/powertools/parameters/dynamodb/DynamoDbProviderBuilder.java b/powertools-parameters/powertools-parameters-dynamodb/src/main/java/software/amazon/lambda/powertools/parameters/dynamodb/DynamoDbProviderBuilder.java index 6b6610ba1..e77f24535 100644 --- a/powertools-parameters/powertools-parameters-dynamodb/src/main/java/software/amazon/lambda/powertools/parameters/dynamodb/DynamoDbProviderBuilder.java +++ b/powertools-parameters/powertools-parameters-dynamodb/src/main/java/software/amazon/lambda/powertools/parameters/dynamodb/DynamoDbProviderBuilder.java @@ -17,7 +17,7 @@ import software.amazon.awssdk.core.SdkSystemSetting; import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; import software.amazon.awssdk.core.client.config.SdkAdvancedClientOption; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.lambda.powertools.common.internal.UserAgentConfigurator; @@ -37,7 +37,7 @@ public class DynamoDbProviderBuilder { static DynamoDbClient createClient() { return DynamoDbClient.builder() - .httpClientBuilder(UrlConnectionHttpClient.builder()) + .httpClientBuilder(AwsCrtHttpClient.builder()) .region(Region.of(System.getenv(SdkSystemSetting.AWS_REGION.environmentVariable()))) .overrideConfiguration(ClientOverrideConfiguration.builder() .putAdvancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX, diff --git a/powertools-parameters/powertools-parameters-dynamodb/src/test/java/software/amazon/lambda/powertools/parameters/dynamodb/DynamoDbProviderE2ETest.java b/powertools-parameters/powertools-parameters-dynamodb/src/test/java/software/amazon/lambda/powertools/parameters/dynamodb/DynamoDbProviderE2ETest.java index 2695938d8..bcc318228 100644 --- a/powertools-parameters/powertools-parameters-dynamodb/src/test/java/software/amazon/lambda/powertools/parameters/dynamodb/DynamoDbProviderE2ETest.java +++ b/powertools-parameters/powertools-parameters-dynamodb/src/test/java/software/amazon/lambda/powertools/parameters/dynamodb/DynamoDbProviderE2ETest.java @@ -20,7 +20,7 @@ import java.util.Map; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.services.dynamodb.model.PutItemRequest; @@ -45,7 +45,7 @@ public class DynamoDbProviderE2ETest { public DynamoDbProviderE2ETest() { // Create a DDB client to inject test data into our test tables ddbClient = DynamoDbClient.builder() - .httpClientBuilder(UrlConnectionHttpClient.builder()) + .httpClientBuilder(AwsCrtHttpClient.builder()) .build(); @@ -105,7 +105,7 @@ public void TestGetValues() { private DynamoDbProvider makeProvider(String tableName) { return new DynamoDbProvider(new CacheManager(), null, DynamoDbClient.builder() - .httpClientBuilder(UrlConnectionHttpClient.builder()).build(), + .httpClientBuilder(AwsCrtHttpClient.builder()).build(), tableName); } diff --git a/powertools-parameters/powertools-parameters-secrets/src/main/java/software/amazon/lambda/powertools/parameters/secrets/SecretsProviderBuilder.java b/powertools-parameters/powertools-parameters-secrets/src/main/java/software/amazon/lambda/powertools/parameters/secrets/SecretsProviderBuilder.java index 125425200..32220dab9 100644 --- a/powertools-parameters/powertools-parameters-secrets/src/main/java/software/amazon/lambda/powertools/parameters/secrets/SecretsProviderBuilder.java +++ b/powertools-parameters/powertools-parameters-secrets/src/main/java/software/amazon/lambda/powertools/parameters/secrets/SecretsProviderBuilder.java @@ -17,7 +17,7 @@ import software.amazon.awssdk.core.SdkSystemSetting; import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; import software.amazon.awssdk.core.client.config.SdkAdvancedClientOption; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient; import software.amazon.lambda.powertools.common.internal.UserAgentConfigurator; @@ -37,7 +37,7 @@ public class SecretsProviderBuilder { private static SecretsManagerClient createClient() { return SecretsManagerClient.builder() - .httpClientBuilder(UrlConnectionHttpClient.builder()) + .httpClientBuilder(AwsCrtHttpClient.builder()) .region(Region.of(System.getenv(SdkSystemSetting.AWS_REGION.environmentVariable()))) .overrideConfiguration(ClientOverrideConfiguration.builder() .putAdvancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX, diff --git a/powertools-parameters/powertools-parameters-ssm/src/main/java/software/amazon/lambda/powertools/parameters/ssm/SSMProviderBuilder.java b/powertools-parameters/powertools-parameters-ssm/src/main/java/software/amazon/lambda/powertools/parameters/ssm/SSMProviderBuilder.java index 3b4fff1b3..5e3244a3b 100644 --- a/powertools-parameters/powertools-parameters-ssm/src/main/java/software/amazon/lambda/powertools/parameters/ssm/SSMProviderBuilder.java +++ b/powertools-parameters/powertools-parameters-ssm/src/main/java/software/amazon/lambda/powertools/parameters/ssm/SSMProviderBuilder.java @@ -17,7 +17,7 @@ import software.amazon.awssdk.core.SdkSystemSetting; import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; import software.amazon.awssdk.core.client.config.SdkAdvancedClientOption; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.ssm.SsmClient; import software.amazon.lambda.powertools.common.internal.UserAgentConfigurator; @@ -35,7 +35,7 @@ public class SSMProviderBuilder { private static SsmClient createClient() { return SsmClient.builder() - .httpClientBuilder(UrlConnectionHttpClient.builder()) + .httpClientBuilder(AwsCrtHttpClient.builder()) .region(Region.of(System.getenv(SdkSystemSetting.AWS_REGION.environmentVariable()))) .overrideConfiguration(ClientOverrideConfiguration.builder() .putAdvancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX,