This is an automated email from the ASF dual-hosted git repository.
amoghj pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg.git
The following commit(s) were added to refs/heads/main by this push:
new b9a6645a53 AWS: Include http-auth-aws-crt module into
iceberg-aws-bundle (#10972)
b9a6645a53 is described below
commit b9a6645a53a1a7a5143a58b23adaae1ea0af99d4
Author: Akira Ajisaka <[email protected]>
AuthorDate: Sun Aug 25 11:47:35 2024 +0900
AWS: Include http-auth-aws-crt module into iceberg-aws-bundle (#10972)
---
aws-bundle/LICENSE | 140 +++++++++++++++------
aws-bundle/NOTICE | 67 +++++-----
aws-bundle/build.gradle | 1 +
.../org/apache/iceberg/aws/AwsIntegTestUtil.java | 11 ++
.../iceberg/aws/s3/TestS3FileIOIntegration.java | 90 +++++++++----
build.gradle | 1 +
kafka-connect/build.gradle | 1 +
7 files changed, 221 insertions(+), 90 deletions(-)
diff --git a/aws-bundle/LICENSE b/aws-bundle/LICENSE
index a4ca14bf8f..0a9656c2c7 100644
--- a/aws-bundle/LICENSE
+++ b/aws-bundle/LICENSE
@@ -207,7 +207,7 @@ This binary artifact contains code from the following
projects:
--------------------------------------------------------------------------------
-Group: commons-codec Name: commons-codec Version: 1.15
+Group: commons-codec Name: commons-codec Version: 1.17.1
Project URL: https://commons.apache.org/proper/commons-codec/
License: Apache License, Version 2.0 -
https://www.apache.org/licenses/LICENSE-2.0.txt
@@ -219,61 +219,61 @@ License: The Apache Software License, Version 2.0 -
http://www.apache.org/licens
--------------------------------------------------------------------------------
-Group: io.netty Name: netty-buffer Version: 4.1.86.Final
+Group: io.netty Name: netty-buffer Version: 4.1.112.Final
Project URL: https://netty.io/
License: Apache License, Version 2.0 -
https://www.apache.org/licenses/LICENSE-2.0
--------------------------------------------------------------------------------
-Group: io.netty Name: netty-codec Version: 4.1.86.Final
+Group: io.netty Name: netty-codec Version: 4.1.112.Final
Project URL: https://netty.io/
License: Apache License, Version 2.0 -
https://www.apache.org/licenses/LICENSE-2.0
--------------------------------------------------------------------------------
-Group: io.netty Name: netty-codec-http Version: 4.1.86.Final
+Group: io.netty Name: netty-codec-http Version: 4.1.112.Final
Project URL: https://netty.io/
License: Apache License, Version 2.0 -
https://www.apache.org/licenses/LICENSE-2.0
--------------------------------------------------------------------------------
-Group: io.netty Name: netty-codec-http2 Version: 4.1.86.Final
+Group: io.netty Name: netty-codec-http2 Version: 4.1.112.Final
Project URL: https://netty.io/
License: Apache License, Version 2.0 -
https://www.apache.org/licenses/LICENSE-2.0
--------------------------------------------------------------------------------
-Group: io.netty Name: netty-common Version: 4.1.86.Final
+Group: io.netty Name: netty-common Version: 4.1.112.Final
Project URL: https://netty.io/
License: Apache License, Version 2.0 -
https://www.apache.org/licenses/LICENSE-2.0
--------------------------------------------------------------------------------
-Group: io.netty Name: netty-handler Version: 4.1.86.Final
+Group: io.netty Name: netty-handler Version: 4.1.112.Final
Project URL: https://netty.io/
License: Apache License, Version 2.0 -
https://www.apache.org/licenses/LICENSE-2.0
--------------------------------------------------------------------------------
-Group: io.netty Name: netty-resolver Version: 4.1.86.Final
+Group: io.netty Name: netty-resolver Version: 4.1.112.Final
Project URL: https://netty.io/
License: Apache License, Version 2.0 -
https://www.apache.org/licenses/LICENSE-2.0
--------------------------------------------------------------------------------
-Group: io.netty Name: netty-transport Version: 4.1.86.Final
+Group: io.netty Name: netty-transport Version: 4.1.112.Final
Project URL: https://netty.io/
License: Apache License, Version 2.0 -
https://www.apache.org/licenses/LICENSE-2.0
--------------------------------------------------------------------------------
-Group: io.netty Name: netty-transport-classes-epoll Version: 4.1.86.Final
+Group: io.netty Name: netty-transport-classes-epoll Version: 4.1.112.Final
Project URL: https://netty.io/
License: Apache License, Version 2.0 -
https://www.apache.org/licenses/LICENSE-2.0
--------------------------------------------------------------------------------
-Group: io.netty Name: netty-transport-native-unix-common Version:
4.1.86.Final
+Group: io.netty Name: netty-transport-native-unix-common Version:
4.1.112.Final
Project URL: https://netty.io/
License: Apache License, Version 2.0 -
https://www.apache.org/licenses/LICENSE-2.0
@@ -285,13 +285,13 @@ License: Apache License, Version 2.0 -
http://www.apache.org/licenses/LICENSE-2.
--------------------------------------------------------------------------------
-Group: org.apache.httpcomponents Name: httpcore Version: 4.4.13
+Group: org.apache.httpcomponents Name: httpcore Version: 4.4.16
Project URL: http://hc.apache.org/httpcomponents-core-ga
License: Apache License, Version 2.0 -
http://www.apache.org/licenses/LICENSE-2.0.txt
--------------------------------------------------------------------------------
-Group: org.reactivestreams Name: reactive-streams Version: 1.0.3
+Group: org.reactivestreams Name: reactive-streams Version: 1.0.4
Project URL: http://reactive-streams.org
License: CC0 - http://creativecommons.org/publicdomain/zero/1.0/
@@ -303,160 +303,220 @@ License: MIT License -
http://www.opensource.org/licenses/mit-license.php
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: annotations Version: 2.20.131
+Group: software.amazon.awssdk Name: annotations Version: 2.27.7
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: apache-client Version: 2.20.131
+Group: software.amazon.awssdk Name: apache-client Version: 2.27.7
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: arns Version: 2.20.131
+Group: software.amazon.awssdk Name: arns Version: 2.27.7
Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: auth Version: 2.20.131
+Group: software.amazon.awssdk Name: auth Version: 2.27.7
Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: aws-core Version: 2.20.131
+Group: software.amazon.awssdk Name: aws-core Version: 2.27.7
Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: aws-json-protocol Version: 2.20.131
+Group: software.amazon.awssdk Name: aws-json-protocol Version: 2.27.7
Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: aws-query-protocol Version: 2.20.131
+Group: software.amazon.awssdk Name: aws-query-protocol Version: 2.27.7
Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: aws-xml-protocol Version: 2.20.131
+Group: software.amazon.awssdk Name: aws-xml-protocol Version: 2.27.7
Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: dynamodb Version: 2.20.131
+Group: software.amazon.awssdk Name: checksums Version: 2.27.7
Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: endpoints-spi Version: 2.20.131
+Group: software.amazon.awssdk Name: checksums-spi Version: 2.27.7
+Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: glue Version: 2.20.131
+Group: software.amazon.awssdk Name: crt-core Version: 2.27.7
Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: http-client-spi Version: 2.20.131
+Group: software.amazon.awssdk Name: dynamodb Version: 2.27.7
+Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: iam Version: 2.20.131
+Group: software.amazon.awssdk Name: endpoints-spi Version: 2.27.7
+License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
+
+--------------------------------------------------------------------------------
+
+Group: software.amazon.awssdk Name: glue Version: 2.27.7
Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: json-utils Version: 2.20.131
+Group: software.amazon.awssdk Name: http-auth Version: 2.27.7
Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: kms Version: 2.20.131
+Group: software.amazon.awssdk Name: http-auth-aws Version: 2.27.7
Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: lakeformation Version: 2.20.131
+Group: software.amazon.awssdk Name: http-auth-aws-crt Version: 2.27.7
Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: metrics-spi Version: 2.20.131
+Group: software.amazon.awssdk Name: http-auth-aws-eventstream Version: 2.27.7
+Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: netty-nio-client Version: 2.20.131
+Group: software.amazon.awssdk Name: http-auth-spi Version: 2.27.7
+Project URL: https://aws.amazon.com/sdkforjava
+License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
+
+--------------------------------------------------------------------------------
+
+Group: software.amazon.awssdk Name: http-client-spi Version: 2.27.7
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: profiles Version: 2.20.131
+Group: software.amazon.awssdk Name: iam Version: 2.27.7
Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: protocol-core Version: 2.20.131
+Group: software.amazon.awssdk Name: identity-spi Version: 2.27.7
Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: regions Version: 2.20.131
+Group: software.amazon.awssdk Name: json-utils Version: 2.27.7
+Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: s3 Version: 2.20.131
+Group: software.amazon.awssdk Name: kms Version: 2.27.7
Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: sdk-core Version: 2.20.131
+Group: software.amazon.awssdk Name: lakeformation Version: 2.27.7
Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: sso Version: 2.20.131
+Group: software.amazon.awssdk Name: metrics-spi Version: 2.27.7
+License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
+
+--------------------------------------------------------------------------------
+
+Group: software.amazon.awssdk Name: netty-nio-client Version: 2.27.7
+License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
+
+--------------------------------------------------------------------------------
+
+Group: software.amazon.awssdk Name: profiles Version: 2.27.7
Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: sts Version: 2.20.131
+Group: software.amazon.awssdk Name: protocol-core Version: 2.27.7
Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: third-party-jackson-core Version:
2.20.131
+Group: software.amazon.awssdk Name: regions Version: 2.27.7
+License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
+
+--------------------------------------------------------------------------------
+
+Group: software.amazon.awssdk Name: s3 Version: 2.27.7
Project URL: https://aws.amazon.com/sdkforjava
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
-Group: software.amazon.awssdk Name: utils Version: 2.20.131
+Group: software.amazon.awssdk Name: sdk-core Version: 2.27.7
+Project URL: https://aws.amazon.com/sdkforjava
+License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
+
+--------------------------------------------------------------------------------
+
+Group: software.amazon.awssdk Name: sso Version: 2.27.7
+Project URL: https://aws.amazon.com/sdkforjava
+License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
+
+--------------------------------------------------------------------------------
+
+Group: software.amazon.awssdk Name: sts Version: 2.27.7
+Project URL: https://aws.amazon.com/sdkforjava
+License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
+
+--------------------------------------------------------------------------------
+
+Group: software.amazon.awssdk Name: third-party-jackson-core Version: 2.27.7
+Project URL: https://aws.amazon.com/sdkforjava
+License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
+
+--------------------------------------------------------------------------------
+
+Group: software.amazon.awssdk Name: utils Version: 2.27.7
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
--------------------------------------------------------------------------------
+Group: software.amazon.awssdk.crt Name: aws-crt Version: 0.30.6
+Project URL: https://github.com/awslabs/aws-crt-java
+License: The Apache Software License, Version 2.0 -
http://www.apache.org/licenses/LICENSE-2.0.txt
+
+--------------------------------------------------------------------------------
+
Group: software.amazon.eventstream Name: eventstream Version: 1.0.1
Project URL: https://github.com/awslabs/aws-eventstream-java
License: Apache License, Version 2.0 - https://aws.amazon.com/apache2.0
diff --git a/aws-bundle/NOTICE b/aws-bundle/NOTICE
index ed353940ba..070d109c8e 100644
--- a/aws-bundle/NOTICE
+++ b/aws-bundle/NOTICE
@@ -7,7 +7,7 @@ The Apache Software Foundation (http://www.apache.org/).
--------------------------------------------------------------------------------
-NOTICE for Group: commons-codec Name: commons-codec Version: 1.15
+NOTICE for Group: commons-codec Name: commons-codec Version: 1.17.1
src/test/org/apache/commons/codec/language/DoubleMetaphoneTest.java
contains test data from http://aspell.net/test/orig/batch0.tab.
@@ -23,32 +23,43 @@ Copyright (c) 2008 Alexander Beider & Stephen P. Morse.
--------------------------------------------------------------------------------
-NOTICE for Group: software.amazon.awssdk Name: annotations Version: 2.20.131
-NOTICE for Group: software.amazon.awssdk Name: apache-client Version:
2.20.131
-NOTICE for Group: software.amazon.awssdk Name: arns Version: 2.20.131
-NOTICE for Group: software.amazon.awssdk Name: auth Version: 2.20.131
-NOTICE for Group: software.amazon.awssdk Name: aws-core Version: 2.20.131
-NOTICE for Group: software.amazon.awssdk Name: aws-json-protocol Version:
2.20.131
-NOTICE for Group: software.amazon.awssdk Name: aws-query-protocol Version:
2.20.131
-NOTICE for Group: software.amazon.awssdk Name: aws-xml-protocol Version:
2.20.131
-NOTICE for Group: software.amazon.awssdk Name: dynamodb Version: 2.20.131
-NOTICE for Group: software.amazon.awssdk Name: endpoints-spi Version:
2.20.131
-NOTICE for Group: software.amazon.awssdk Name: glue Version: 2.20.131
-NOTICE for Group: software.amazon.awssdk Name: http-client-spi Version:
2.20.131
-NOTICE for Group: software.amazon.awssdk Name: iam Version: 2.20.131
-NOTICE for Group: software.amazon.awssdk Name: json-utils Version: 2.20.131
-NOTICE for Group: software.amazon.awssdk Name: kms Version: 2.20.131
-NOTICE for Group: software.amazon.awssdk Name: lakeformation Version:
2.20.131
-NOTICE for Group: software.amazon.awssdk Name: metrics-spi Version: 2.20.131
-NOTICE for Group: software.amazon.awssdk Name: netty-nio-client Version:
2.20.131
-NOTICE for Group: software.amazon.awssdk Name: profiles Version: 2.20.131
-NOTICE for Group: software.amazon.awssdk Name: protocol-core Version:
2.20.131
-NOTICE for Group: software.amazon.awssdk Name: regions Version: 2.20.131
-NOTICE for Group: software.amazon.awssdk Name: s3 Version: 2.20.131
-NOTICE for Group: software.amazon.awssdk Name: sdk-core Version: 2.20.131
-NOTICE for Group: software.amazon.awssdk Name: sso Version: 2.20.131
-NOTICE for Group: software.amazon.awssdk Name: sts Version: 2.20.131
-NOTICE for Group: software.amazon.awssdk Name: utils Version: 2.20.131
+NOTICE for Group: software.amazon.awssdk Name: annotations Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: apache-client Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: arns Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: auth Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: aws-core Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: aws-json-protocol Version:
2.27.7
+NOTICE for Group: software.amazon.awssdk Name: aws-query-protocol Version:
2.27.7
+NOTICE for Group: software.amazon.awssdk Name: aws-xml-protocol Version:
2.27.7
+NOTICE for Group: software.amazon.awssdk Name: checksums Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: checksums-spi Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: crt-core Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: dynamodb Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: endpoints-spi Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: glue Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: http-auth Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: http-auth-aws Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: http-auth-aws-crt Version:
2.27.7
+NOTICE for Group: software.amazon.awssdk Name: http-auth-aws-eventstream
Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: http-auth-spi Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: http-client-spi Version:
2.27.7
+NOTICE for Group: software.amazon.awssdk Name: iam Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: identity-spi Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: json-utils Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: kms Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: lakeformation Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: metrics-spi Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: netty-nio-client Version:
2.27.7
+NOTICE for Group: software.amazon.awssdk Name: profiles Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: protocol-core Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: regions Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: retries Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: retries-spi Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: s3 Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: sdk-core Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: sso Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: sts Version: 2.27.7
+NOTICE for Group: software.amazon.awssdk Name: utils Version: 2.27.7
AWS SDK for Java 2.0
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
@@ -71,7 +82,7 @@ The licenses for these third party components are included in
LICENSE.txt
--------------------------------------------------------------------------------
-NOTICE for Group: software.amazon.awssdk Name: third-party-jackson-core
Version: 2.20.18
+NOTICE for Group: software.amazon.awssdk Name: third-party-jackson-core
Version: 2.27.7
# Jackson JSON processor
diff --git a/aws-bundle/build.gradle b/aws-bundle/build.gradle
index eea591a7b7..16952d78d8 100644
--- a/aws-bundle/build.gradle
+++ b/aws-bundle/build.gradle
@@ -27,6 +27,7 @@ project(":iceberg-aws-bundle") {
implementation platform(libs.awssdk.bom)
implementation "software.amazon.awssdk:apache-client"
implementation "software.amazon.awssdk:auth"
+ implementation "software.amazon.awssdk:http-auth-aws-crt"
implementation "software.amazon.awssdk:iam"
implementation "software.amazon.awssdk:sso"
implementation "software.amazon.awssdk:s3"
diff --git
a/aws/src/integration/java/org/apache/iceberg/aws/AwsIntegTestUtil.java
b/aws/src/integration/java/org/apache/iceberg/aws/AwsIntegTestUtil.java
index 7e0ca6ed10..e9cf474add 100644
--- a/aws/src/integration/java/org/apache/iceberg/aws/AwsIntegTestUtil.java
+++ b/aws/src/integration/java/org/apache/iceberg/aws/AwsIntegTestUtil.java
@@ -95,6 +95,17 @@ public class AwsIntegTestUtil {
return System.getenv("AWS_TEST_ACCOUNT_ID");
}
+ /**
+ * Set the environment variable AWS_TEST_MULTI_REGION_ACCESS_POINT_ALIAS for
a default account to
+ * use for testing. Developers need to create a S3 multi region access point
before running
+ * integration tests because creating it takes a few minutes
+ *
+ * @return The alias of S3 multi region access point route to the default S3
bucket
+ */
+ public static String testMultiRegionAccessPointAlias() {
+ return System.getenv("AWS_TEST_MULTI_REGION_ACCESS_POINT_ALIAS");
+ }
+
public static void cleanS3Bucket(S3Client s3, String bucketName, String
prefix) {
ListObjectVersionsIterable response =
s3.listObjectVersionsPaginator(
diff --git
a/aws/src/integration/java/org/apache/iceberg/aws/s3/TestS3FileIOIntegration.java
b/aws/src/integration/java/org/apache/iceberg/aws/s3/TestS3FileIOIntegration.java
index cacf048918..fc2b9f97f1 100644
---
a/aws/src/integration/java/org/apache/iceberg/aws/s3/TestS3FileIOIntegration.java
+++
b/aws/src/integration/java/org/apache/iceberg/aws/s3/TestS3FileIOIntegration.java
@@ -41,6 +41,7 @@ import org.apache.iceberg.io.InputFile;
import org.apache.iceberg.io.OutputFile;
import org.apache.iceberg.relocated.com.google.common.collect.Lists;
import org.apache.iceberg.relocated.com.google.common.collect.Maps;
+import org.assertj.core.api.Assumptions;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
@@ -75,11 +76,13 @@ public class TestS3FileIOIntegration {
private static S3Client s3;
private static S3ControlClient s3Control;
private static S3ControlClient crossRegionS3Control;
+ private static S3ControlClient multiRegionS3Control;
private static KmsClient kms;
private static String bucketName;
private static String crossRegionBucketName;
private static String accessPointName;
private static String crossRegionAccessPointName;
+ private static String multiRegionAccessPointAlias;
private static String prefix;
private static byte[] contentBytes;
private static String content;
@@ -109,6 +112,7 @@ public class TestS3FileIOIntegration {
AwsIntegTestUtil.createAccessPoint(s3Control, accessPointName, bucketName);
AwsIntegTestUtil.createAccessPoint(
crossRegionS3Control, crossRegionAccessPointName,
crossRegionBucketName);
+ multiRegionAccessPointAlias =
AwsIntegTestUtil.testMultiRegionAccessPointAlias();
s3.putBucketVersioning(
PutBucketVersioningRequest.builder()
.bucket(bucketName)
@@ -202,15 +206,32 @@ public class TestS3FileIOIntegration {
validateRead(s3FileIO);
}
+ @Test
+ public void testNewInputStreamWithMultiRegionAccessPoint() throws Exception {
+ Assumptions.assumeThat(multiRegionAccessPointAlias).isNotEmpty();
+
clientFactory.initialize(ImmutableMap.of(S3FileIOProperties.USE_ARN_REGION_ENABLED,
"true"));
+ S3Client s3Client = clientFactory.s3();
+ s3Client.putObject(
+ PutObjectRequest.builder().bucket(bucketName).key(objectKey).build(),
+ RequestBody.fromBytes(contentBytes));
+ S3FileIO s3FileIO = new S3FileIO(clientFactory::s3);
+ s3FileIO.initialize(
+ ImmutableMap.of(
+ S3FileIOProperties.ACCESS_POINTS_PREFIX + bucketName,
+ testMultiRegionAccessPointARN(
+ AwsIntegTestUtil.testRegion(), multiRegionAccessPointAlias)));
+ validateRead(s3FileIO);
+ }
+
@Test
public void testNewOutputStream() throws Exception {
S3FileIO s3FileIO = new S3FileIO(clientFactory::s3);
write(s3FileIO);
- InputStream stream =
-
s3.getObject(GetObjectRequest.builder().bucket(bucketName).key(objectKey).build());
- String result = IoUtils.toUtf8String(stream);
- stream.close();
- assertThat(result).isEqualTo(content);
+ try (InputStream stream =
+
s3.getObject(GetObjectRequest.builder().bucket(bucketName).key(objectKey).build()))
{
+ String result = IoUtils.toUtf8String(stream);
+ assertThat(result).isEqualTo(content);
+ }
}
@Test
@@ -221,11 +242,11 @@ public class TestS3FileIOIntegration {
S3FileIOProperties.ACCESS_POINTS_PREFIX + bucketName,
testAccessPointARN(AwsIntegTestUtil.testRegion(),
accessPointName)));
write(s3FileIO);
- InputStream stream =
-
s3.getObject(GetObjectRequest.builder().bucket(bucketName).key(objectKey).build());
- String result = IoUtils.toUtf8String(stream);
- stream.close();
- assertThat(result).isEqualTo(content);
+ try (InputStream stream =
+
s3.getObject(GetObjectRequest.builder().bucket(bucketName).key(objectKey).build()))
{
+ String result = IoUtils.toUtf8String(stream);
+ assertThat(result).isEqualTo(content);
+ }
}
@Test
@@ -238,17 +259,35 @@ public class TestS3FileIOIntegration {
S3FileIOProperties.ACCESS_POINTS_PREFIX + bucketName,
testAccessPointARN(AwsIntegTestUtil.testCrossRegion(),
crossRegionAccessPointName)));
write(s3FileIO);
- InputStream stream =
+ try (InputStream stream =
s3Client.getObject(
GetObjectRequest.builder()
.bucket(
testAccessPointARN(
AwsIntegTestUtil.testCrossRegion(),
crossRegionAccessPointName))
.key(objectKey)
- .build());
- String result = IoUtils.toUtf8String(stream);
- stream.close();
- assertThat(result).isEqualTo(content);
+ .build())) {
+ String result = IoUtils.toUtf8String(stream);
+ assertThat(result).isEqualTo(content);
+ }
+ }
+
+ @Test
+ public void testNewOutputStreamWithMultiRegionAccessPoint() throws Exception
{
+ Assumptions.assumeThat(multiRegionAccessPointAlias).isNotEmpty();
+
clientFactory.initialize(ImmutableMap.of(S3FileIOProperties.USE_ARN_REGION_ENABLED,
"true"));
+ S3FileIO s3FileIO = new S3FileIO(clientFactory::s3);
+ s3FileIO.initialize(
+ ImmutableMap.of(
+ S3FileIOProperties.ACCESS_POINTS_PREFIX + bucketName,
+ testMultiRegionAccessPointARN(
+ AwsIntegTestUtil.testRegion(), multiRegionAccessPointAlias)));
+ write(s3FileIO);
+ try (InputStream stream =
+
s3.getObject(GetObjectRequest.builder().bucket(bucketName).key(objectKey).build()))
{
+ String result = IoUtils.toUtf8String(stream);
+ assertThat(result).isEqualTo(content);
+ }
}
@Test
@@ -508,18 +547,18 @@ public class TestS3FileIOIntegration {
private void write(S3FileIO s3FileIO, String uri) throws Exception {
OutputFile outputFile = s3FileIO.newOutputFile(uri);
- OutputStream outputStream = outputFile.create();
- IoUtils.copy(new ByteArrayInputStream(contentBytes), outputStream);
- outputStream.close();
+ try (OutputStream outputStream = outputFile.create()) {
+ IoUtils.copy(new ByteArrayInputStream(contentBytes), outputStream);
+ }
}
private void validateRead(S3FileIO s3FileIO) throws Exception {
InputFile file = s3FileIO.newInputFile(objectUri);
assertThat(file.getLength()).isEqualTo(contentBytes.length);
- InputStream stream = file.newStream();
- String result = IoUtils.toUtf8String(stream);
- stream.close();
- assertThat(result).isEqualTo(content);
+ try (InputStream stream = file.newStream()) {
+ String result = IoUtils.toUtf8String(stream);
+ assertThat(result).isEqualTo(content);
+ }
}
private String testAccessPointARN(String region, String accessPoint) {
@@ -532,6 +571,13 @@ public class TestS3FileIOIntegration {
accessPoint);
}
+ private String testMultiRegionAccessPointARN(String region, String alias) {
+ // format: arn:aws:s3::account-id:accesspoint/MultiRegionAccessPoint_alias
+ return String.format(
+ "arn:%s:s3::%s:accesspoint/%s",
+ PartitionMetadata.of(Region.of(region)).id(),
AwsIntegTestUtil.testAccountId(), alias);
+ }
+
private void createRandomObjects(String objectPrefix, int count) {
S3URI s3URI = new S3URI(objectPrefix);
random
diff --git a/build.gradle b/build.gradle
index 7a11943cf8..3b89dc4e05 100644
--- a/build.gradle
+++ b/build.gradle
@@ -471,6 +471,7 @@ project(':iceberg-aws') {
compileOnly("software.amazon.awssdk:url-connection-client")
compileOnly("software.amazon.awssdk:apache-client")
compileOnly("software.amazon.awssdk:auth")
+ compileOnly("software.amazon.awssdk:http-auth-aws-crt")
compileOnly("software.amazon.awssdk:s3")
compileOnly("software.amazon.awssdk:kms")
compileOnly("software.amazon.awssdk:glue")
diff --git a/kafka-connect/build.gradle b/kafka-connect/build.gradle
index 60aaeee8c6..c687bb4aea 100644
--- a/kafka-connect/build.gradle
+++ b/kafka-connect/build.gradle
@@ -115,6 +115,7 @@
project(':iceberg-kafka-connect:iceberg-kafka-connect-runtime') {
implementation platform(libs.awssdk.bom)
implementation 'software.amazon.awssdk:apache-client'
implementation 'software.amazon.awssdk:auth'
+ implementation "software.amazon.awssdk:http-auth-aws-crt"
implementation 'software.amazon.awssdk:iam'
implementation 'software.amazon.awssdk:sso'
implementation 'software.amazon.awssdk:s3'