This is an automated email from the ASF dual-hosted git repository.

lhotari pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/pulsar.git

commit e52b4e0fa62b8afd2b6b9525f636d0b72f7986c0
Author: Lari Hotari <[email protected]>
AuthorDate: Tue Aug 26 07:44:05 2025 +0300

    [improve][io] Upgrade AWS SDK v1 & v2, Kinesis KPL and KPC versions (#24661)
    
    (cherry picked from commit dc2ab26675bdbe11eabdbf86ff01f928bb820ebe)
---
 docker/kinesis-producer-alpine/Dockerfile          |   2 +-
 docker/kinesis-producer-alpine/README.md           |   2 +-
 docker/kinesis-producer-alpine/build-alpine.sh     | 112 +++++++++-------
 .../kinesis_producer_alpine.patch                  |  23 ++--
 docker/pulsar-all/pom.xml                          |   2 +-
 pom.xml                                            |  11 +-
 pulsar-io/aws/pom.xml                              |   1 -
 pulsar-io/kinesis-kpl-shaded/pom.xml               | 149 +++++++++++++++++++++
 pulsar-io/kinesis/pom.xml                          |  24 ++--
 .../org/apache/pulsar/io/kinesis/KinesisSink.java  |  15 ++-
 .../pulsar/io/kinesis/KinesisSinkConfig.java       |   4 +-
 .../pulsar/io/kinesis/KinesisSinkConfigTest.java   |   2 +-
 pulsar-io/pom.xml                                  |   2 +
 tests/integration/pom.xml                          |   2 +-
 14 files changed, 271 insertions(+), 80 deletions(-)

diff --git a/docker/kinesis-producer-alpine/Dockerfile 
b/docker/kinesis-producer-alpine/Dockerfile
index ac04e69aea0..a33dc82f158 100644
--- a/docker/kinesis-producer-alpine/Dockerfile
+++ b/docker/kinesis-producer-alpine/Dockerfile
@@ -23,7 +23,7 @@ ARG ALPINE_VERSION=3.21
 
 # Build stage
 FROM alpine:$ALPINE_VERSION AS kinesis-producer-build
-ENV KINESIS_PRODUCER_LIB_VERSION=0.15.12
+ENV KINESIS_PRODUCER_LIB_VERSION=1.0.4
 
 # Install build dependencies
 RUN apk update && apk add --no-cache \
diff --git a/docker/kinesis-producer-alpine/README.md 
b/docker/kinesis-producer-alpine/README.md
index dc21b05dec3..e3fa0f88602 100644
--- a/docker/kinesis-producer-alpine/README.md
+++ b/docker/kinesis-producer-alpine/README.md
@@ -32,7 +32,7 @@ This image only needs to be re-created when we want to 
upgrade to a newer versio
 2. Rebuild the image and push it to Docker Hub:
 ```
 IMAGE=apachepulsar/pulsar-io-kinesis-sink-kinesis_producer
-KINESIS_PRODUCER_VERSION=0.15.12
+KINESIS_PRODUCER_VERSION=1.0.4
 docker buildx build --platform=linux/amd64,linux/arm64 \
  -t "$IMAGE:$KINESIS_PRODUCER_VERSION" -t 
"$IMAGE:${KINESIS_PRODUCER_VERSION}-$(date -I)" \
  . --push
diff --git a/docker/kinesis-producer-alpine/build-alpine.sh 
b/docker/kinesis-producer-alpine/build-alpine.sh
index 6ea41c55582..52ae9c1a32e 100644
--- a/docker/kinesis-producer-alpine/build-alpine.sh
+++ b/docker/kinesis-producer-alpine/build-alpine.sh
@@ -20,13 +20,25 @@
 
 set -e
 set -x
+SILENT="n"
 
-INSTALL_DIR=/build/third_party
-AWS_SDK_CPP_VERSION="1.11.420"
-PROTOBUF_VERSION="3.11.4"
-BOOST_VERSION="1.76.0"
-BOOST_VERSION_UNDERSCORED="${BOOST_VERSION//\./_}"
+silence() {
+  if [ -n "$SILENT" ]; then
+    "$@" >/dev/null
+  else
+    "$@"
+  fi
+}
+
+BOOST_VERSION="1.88.0"
+BOOST_VERSION_UNDERSCORED="${BOOST_VERSION//\./_}" # convert from 1.76.0 to 
1_76_0
+PROTOBUF_VERSION="21.12"
+AWS_SDK_CPP_VERSION="1.11.615"
+
+LIB_BOOST="https://archives.boost.io/release/${BOOST_VERSION}/source/boost_${BOOST_VERSION_UNDERSCORED}.tar.gz";
+LIB_PROTOBUF="https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOBUF_VERSION}/protobuf-all-${PROTOBUF_VERSION}.tar.gz";
 
+INSTALL_DIR=/build/third_party
 # Create install directory
 mkdir -p $INSTALL_DIR
 
@@ -39,61 +51,67 @@ export LD_LIBRARY_PATH="$INSTALL_DIR/lib:$LD_LIBRARY_PATH"
 
 cd $INSTALL_DIR
 
-# Build protobuf
-if [ ! -d "protobuf-${PROTOBUF_VERSION}" ]; then
-  curl -LO 
https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOBUF_VERSION}/protobuf-all-${PROTOBUF_VERSION}.tar.gz
-  tar xf protobuf-all-${PROTOBUF_VERSION}.tar.gz
-  rm protobuf-all-${PROTOBUF_VERSION}.tar.gz
-
-  cd protobuf-${PROTOBUF_VERSION}
-  ./configure --prefix=${INSTALL_DIR} \
-    --disable-shared \
-    CFLAGS="-fPIC" \
-    CXXFLAGS="-fPIC ${CXXFLAGS}" \
-    --with-pic
-  make -j4
-  make install
-  cd ..
-fi
-
-# Build Boost
+SED="sed -i"
+CMAKE=$(which cmake3 &>/dev/null && echo "cmake3 " || echo "cmake")
+function _curl {
+  curl -L "$@"
+}
+
+function conf {
+  silence ./configure \
+    --prefix="$INSTALL_DIR" \
+    LD_LIBRARY_PATH="$LD_LIBRARY_PATH" \
+    LDFLAGS="$LDFLAGS" \
+    CXXFLAGS="$CXXFLAGS" \
+    C_INCLUDE_PATH="$C_INCLUDE_PATH" \
+    "$@"
+}
+
+# Boost C++ Libraries
 if [ ! -d "boost_${BOOST_VERSION_UNDERSCORED}" ]; then
-  curl -LO 
https://archives.boost.io/release/${BOOST_VERSION}/source/boost_${BOOST_VERSION_UNDERSCORED}.tar.gz
-  tar xf boost_${BOOST_VERSION_UNDERSCORED}.tar.gz
-  rm boost_${BOOST_VERSION_UNDERSCORED}.tar.gz
+  _curl "$LIB_BOOST" >boost.tgz
+  tar xf boost.tgz
+  rm boost.tgz
 
   cd boost_${BOOST_VERSION_UNDERSCORED}
 
-  
BOOST_LIBS="regex,thread,log,system,random,filesystem,chrono,atomic,date_time,program_options,test"
+  LIBS="atomic,chrono,log,system,test,random,regex,thread,filesystem"
+  OPTS="--build-type=minimal --layout=system --prefix=$INSTALL_DIR link=static 
threading=multi release install"
 
-  ./bootstrap.sh --with-libraries=$BOOST_LIBS --with-toolset=gcc
+  silence ./bootstrap.sh --with-libraries="$LIBS" --with-toolset=gcc
+  silence ./b2 toolset=gcc $OPTS
 
-  ./b2 \
-    -j4 \
-    variant=release \
-    link=static \
-    threading=multi \
-    runtime-link=static \
-    --prefix=${INSTALL_DIR} \
-    cxxflags="-fPIC ${CXXFLAGS}" \
-    install
+  cd ..
+fi
+
+# Google Protocol Buffers
+if [ ! -d "protobuf-${PROTOBUF_VERSION}" ]; then
+  _curl "$LIB_PROTOBUF" >protobuf.tgz
+  tar xf protobuf.tgz
+  rm protobuf.tgz
+
+  cd protobuf-${PROTOBUF_VERSION}
+  silence conf --enable-shared=no
+  silence make -j 4
+  silence make install
 
   cd ..
 fi
 
-# Download and build AWS SDK
+# AWS C++ SDK
 if [ ! -d "aws-sdk-cpp" ]; then
-  git clone --depth 1 --branch ${AWS_SDK_CPP_VERSION} 
https://github.com/awslabs/aws-sdk-cpp.git aws-sdk-cpp
+  git clone https://github.com/awslabs/aws-sdk-cpp.git aws-sdk-cpp
   pushd aws-sdk-cpp
-  git config submodule.fetchJobs 8
-  git submodule update --init --depth 1 --recursive
+  git checkout ${AWS_SDK_CPP_VERSION}
+  git submodule update --init --recursive
   popd
 
   rm -rf aws-sdk-cpp-build
   mkdir aws-sdk-cpp-build
+
   cd aws-sdk-cpp-build
 
-  cmake \
+  silence $CMAKE \
     -DBUILD_ONLY="kinesis;monitoring;sts" \
     -DCMAKE_BUILD_TYPE=RelWithDebInfo \
     -DSTATIC_LINKING=1 \
@@ -105,15 +123,19 @@ if [ ! -d "aws-sdk-cpp" ]; then
     -DCMAKE_FIND_FRAMEWORK=LAST \
     -DENABLE_TESTING="OFF" \
     ../aws-sdk-cpp
-  make -j4
-  make install
+  silence make -j4
+  silence make install
+
   cd ..
+
 fi
 
+cd ..
+
 # Build the native kinesis producer
 cd /build/amazon-kinesis-producer
 ln -fs ../third_party
-cmake -DCMAKE_PREFIX_PATH="$INSTALL_DIR" -DCMAKE_BUILD_TYPE=RelWithDebInfo .
+$CMAKE -DCMAKE_PREFIX_PATH="$INSTALL_DIR" -DCMAKE_BUILD_TYPE=RelWithDebInfo .
 make -j4
 
 FINAL_DIR=/opt/amazon-kinesis-producer
diff --git a/docker/kinesis-producer-alpine/kinesis_producer_alpine.patch 
b/docker/kinesis-producer-alpine/kinesis_producer_alpine.patch
index d1ddd6a8550..d31e61a3f8e 100644
--- a/docker/kinesis-producer-alpine/kinesis_producer_alpine.patch
+++ b/docker/kinesis-producer-alpine/kinesis_producer_alpine.patch
@@ -1,10 +1,9 @@
-From 96ba2eb7145363586529e6c770dcc0920bf04ac2 Mon Sep 17 00:00:00 2001
+From 76518befa2b3b79931044267722feecfe1465d19 Mon Sep 17 00:00:00 2001
 From: Lari Hotari <[email protected]>
-Date: Wed, 18 Dec 2024 17:16:02 +0200
-Subject: [PATCH] Adapt build for Alpine, fix issue with NULL_BACKTRACE support
+Date: Fri, 22 Aug 2025 21:25:49 +0300
+Subject: [PATCH] [PATCH] Adapt build for Alpine, fix issue with NULL_BACKTRACE
+ support
 
-- also use dynamic linking to some libraries (zlib, openssl, libz, libcurl, 
libcrypto)
-  to reduce binary size
 ---
  CMakeLists.txt                        | 20 +++++++++++---------
  aws/utils/backtrace/bsd_backtrace.cc  |  2 +-
@@ -14,12 +13,12 @@ Subject: [PATCH] Adapt build for Alpine, fix issue with 
NULL_BACKTRACE support
  5 files changed, 15 insertions(+), 16 deletions(-)
 
 diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 2dd7084..2ba47e6 100644
+index 8803f5c..6152b3d 100644
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
-@@ -213,22 +213,24 @@ set(STATIC_LIBS
-         boost_chrono)
+@@ -213,8 +213,10 @@ set(STATIC_LIBS
  
+ find_package(Protobuf REQUIRED)
  find_package(Threads)
 -find_package(ZLIB)
 +find_package(ZLIB REQUIRED)
@@ -27,6 +26,12 @@ index 2dd7084..2ba47e6 100644
 +find_package(OpenSSL REQUIRED)
 +find_package(CURL REQUIRED)
  
+ # Specify the output directory for generated protobuf files
+ set(PROTO_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/aws/kinesis/protobuf/)
+@@ -239,19 +241,19 @@ foreach(proto ${PROTO_FILES})
+     )
+ endforeach()
+ 
 -add_library(LibCrypto STATIC IMPORTED)
 -set_property(TARGET LibCrypto PROPERTY IMPORTED_LOCATION 
${THIRD_PARTY_LIB_DIR}/libcrypto.a)
 +add_library(LibCrypto SHARED IMPORTED)
@@ -123,5 +128,5 @@ index b58ab0e..f483c77 100644
  #include <cstring>
  #include <cstdint>
 -- 
-2.47.1
+2.51.0
 
diff --git a/docker/pulsar-all/pom.xml b/docker/pulsar-all/pom.xml
index 4f6907881e0..bb8d4363352 100644
--- a/docker/pulsar-all/pom.xml
+++ b/docker/pulsar-all/pom.xml
@@ -82,7 +82,7 @@
       <!-- include the docker image only when docker profile is active -->
       <properties>
         <!-- reference to the image built from 
docker/kinesis-producer-alpine/Dockerfile -->
-        
<PULSAR_IO_KINESIS_KPL_IMAGE>apachepulsar/pulsar-io-kinesis-sink-kinesis_producer:0.15.12</PULSAR_IO_KINESIS_KPL_IMAGE>
+        
<PULSAR_IO_KINESIS_KPL_IMAGE>apachepulsar/pulsar-io-kinesis-sink-kinesis_producer:1.0.4</PULSAR_IO_KINESIS_KPL_IMAGE>
       </properties>
       <dependencies>
         <dependency>
diff --git a/pom.xml b/pom.xml
index f8b31c61451..aa099c9ef09 100644
--- a/pom.xml
+++ b/pom.xml
@@ -227,7 +227,8 @@ flexible messaging model and an intuitive client 
API.</description>
     <aerospike-client.version>4.5.0</aerospike-client.version>
     <kafka-client.version>3.9.0</kafka-client.version>
     <rabbitmq-client.version>5.18.0</rabbitmq-client.version>
-    <aws-sdk.version>1.12.638</aws-sdk.version>
+    <aws-sdk.version>1.12.788</aws-sdk.version>
+    <aws-sdk2.version>2.32.28</aws-sdk2.version>
     <avro.version>1.11.4</avro.version>
     <joda.version>2.10.10</joda.version>
     <jclouds.version>2.6.0</jclouds.version>
@@ -1362,6 +1363,14 @@ flexible messaging model and an intuitive client 
API.</description>
         <scope>import</scope>
       </dependency>
 
+      <dependency>
+        <groupId>software.amazon.awssdk</groupId>
+        <artifactId>bom</artifactId>
+        <version>${aws-sdk2.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+
       <dependency>
         <groupId>org.apache.distributedlog</groupId>
         <artifactId>distributedlog-core</artifactId>
diff --git a/pulsar-io/aws/pom.xml b/pulsar-io/aws/pom.xml
index bca87245832..5ac6c61bc27 100644
--- a/pulsar-io/aws/pom.xml
+++ b/pulsar-io/aws/pom.xml
@@ -51,7 +51,6 @@
     <dependency>
       <groupId>software.amazon.awssdk</groupId>
       <artifactId>sts</artifactId>
-      <version>2.10.56</version>
     </dependency>
        <!-- /aws dependencies -->
 
diff --git a/pulsar-io/kinesis-kpl-shaded/pom.xml 
b/pulsar-io/kinesis-kpl-shaded/pom.xml
new file mode 100644
index 00000000000..2574d6df23d
--- /dev/null
+++ b/pulsar-io/kinesis-kpl-shaded/pom.xml
@@ -0,0 +1,149 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.pulsar</groupId>
+    <artifactId>pulsar</artifactId>
+    <version>4.0.7-SNAPSHOT</version>
+    <relativePath>../../pom.xml</relativePath>
+  </parent>
+
+  <artifactId>pulsar-io-kinesis-kpl-shaded</artifactId>
+  <name>Pulsar IO :: Kinesis KPL Shaded</name>
+
+  <!--
+  There's a need to shade the protobuf-java dependency in the AWS Kinesis 
Producer Library (KPL)
+  since it conflicts at runtime with Pulsar Functions GRPC protobuf-java 
version.
+  -->
+
+  <properties>
+    <amazon-kinesis-producer.version>1.0.4</amazon-kinesis-producer.version>
+    <protobuf-java.version>4.29.0</protobuf-java.version>
+  </properties>
+
+  <dependencyManagement>
+    <dependencies>
+      <!-- enforce protobuf-java version that is compatible with KPL 1.0.x -->
+      <!-- see 
https://github.com/awslabs/amazon-kinesis-producer/blob/v1.0.4/java/amazon-kinesis-producer/pom.xml#L20
 -->
+      <dependency>
+        <groupId>com.google.protobuf</groupId>
+        <artifactId>protobuf-bom</artifactId>
+        <version>${protobuf-java.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+  <dependencies>
+    <dependency>
+      <groupId>software.amazon.kinesis</groupId>
+      <artifactId>amazon-kinesis-producer</artifactId>
+      <version>${amazon-kinesis-producer.version}</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <finalName>${project.artifactId}-${project.version}</finalName>
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>attach-shade-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>attach-artifact</goal>
+            </goals>
+            <configuration>
+              <artifacts>
+                <artifact>
+                  
<file>${project.build.directory}/${project.build.finalName}.jar</file>
+                  <type>jar</type>
+                  <classifier>shaded</classifier>
+                </artifact>
+              </artifacts>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-shade-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>package</phase>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <configuration>
+              <createDependencyReducedPom>true</createDependencyReducedPom>
+              
<promoteTransitiveDependencies>true</promoteTransitiveDependencies>
+              <minimizeJar>false</minimizeJar>
+              <artifactSet>
+                <includes>
+                  
<include>software.amazon.kinesis:amazon-kinesis-producer</include>
+                  <include>com.google.protobuf:protobuf-java</include>
+                </includes>
+                <excludes>
+                  <!-- This is required for execute shade multiple times 
without clean -->
+                  
<exclude>org.apache.pulsar:pulsar-io-kinesis-kpl-shaded</exclude>
+                </excludes>
+              </artifactSet>
+              <relocations>
+                <relocation>
+                  <pattern>com.google.protobuf</pattern>
+                  
<shadedPattern>org.apache.pulsar.io.kinesis.shaded.com.google.protobuf</shadedPattern>
+                </relocation>
+              </relocations>
+              <filters>
+                <filter>
+                  <artifact>*:*</artifact>
+                  <excludes>
+                    <exclude>META-INF/*.SF</exclude>
+                    <exclude>META-INF/*.DSA</exclude>
+                    <exclude>META-INF/*.RSA</exclude>
+                    
<exclude>META-INF/maven/${project.groupId}/${project.artifactId}/pom.xml</exclude>
+                  </excludes>
+                </filter>
+              </filters>
+              <transformers>
+                <transformer 
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                  <manifestEntries>
+                    <Multi-Release>true</Multi-Release>
+                  </manifestEntries>
+                </transformer>
+                <transformer 
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
+                <transformer 
implementation="org.apache.maven.plugins.shade.resource.PluginXmlResourceTransformer"/>
+                <transformer 
implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
+                  
<resource>META-INF/maven/${project.groupId}/${project.artifactId}/pom.xml</resource>
+                  <file>${project.basedir}/dependency-reduced-pom.xml</file>
+                </transformer>
+              </transformers>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
\ No newline at end of file
diff --git a/pulsar-io/kinesis/pom.xml b/pulsar-io/kinesis/pom.xml
index 35f09540091..3bef295a06f 100644
--- a/pulsar-io/kinesis/pom.xml
+++ b/pulsar-io/kinesis/pom.xml
@@ -19,7 +19,7 @@
 
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.pulsar</groupId>
@@ -31,8 +31,7 @@
   <name>Pulsar IO :: Kinesis</name>
 
   <properties>
-    <amazon-kinesis-client.version>2.2.8</amazon-kinesis-client.version>
-    <amazon-kinesis-producer.version>0.15.12</amazon-kinesis-producer.version>
+    <amazon-kinesis-client.version>3.1.2</amazon-kinesis-client.version>
     <json-flattener.version>0.13.0</json-flattener.version>
     <flatbuffers-java.version>1.9.0</flatbuffers-java.version>
     <jaxb-api.version>2.3.0</jaxb-api.version>
@@ -50,6 +49,12 @@
   </dependencyManagement>
 
   <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-io-kinesis-kpl-shaded</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-common</artifactId>
@@ -123,7 +128,6 @@
     <dependency>
       <groupId>software.amazon.awssdk</groupId>
       <artifactId>utils</artifactId>
-      <version>2.22.12</version>
     </dependency>
 
     <dependency>
@@ -132,12 +136,7 @@
       <version>${amazon-kinesis-client.version}</version>
     </dependency>
 
-    <dependency>
-      <groupId>com.amazonaws</groupId>
-      <artifactId>amazon-kinesis-producer</artifactId>
-      <version>${amazon-kinesis-producer.version}</version>
-    </dependency>
-       <!-- /kinesis dependencies -->
+    <!-- /kinesis dependencies -->
 
     <dependency>
       <groupId>com.google.flatbuffers</groupId>
@@ -177,6 +176,11 @@
       <plugin>
         <groupId>org.apache.nifi</groupId>
         <artifactId>nifi-nar-maven-plugin</artifactId>
+        <configuration>
+          <excludes>
+            <exclude>**/amazon-kinesis-producer-*.jar</exclude>
+          </excludes>
+        </configuration>
       </plugin>
     </plugins>
   </build>
diff --git 
a/pulsar-io/kinesis/src/main/java/org/apache/pulsar/io/kinesis/KinesisSink.java 
b/pulsar-io/kinesis/src/main/java/org/apache/pulsar/io/kinesis/KinesisSink.java
index 76686fbd899..db23972905a 100644
--- 
a/pulsar-io/kinesis/src/main/java/org/apache/pulsar/io/kinesis/KinesisSink.java
+++ 
b/pulsar-io/kinesis/src/main/java/org/apache/pulsar/io/kinesis/KinesisSink.java
@@ -22,11 +22,6 @@ import static 
com.google.common.util.concurrent.Futures.addCallback;
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 import static org.apache.commons.lang3.StringUtils.isNotBlank;
 import com.amazonaws.auth.AWSCredentialsProvider;
-import com.amazonaws.services.kinesis.producer.KinesisProducer;
-import com.amazonaws.services.kinesis.producer.KinesisProducerConfiguration;
-import 
com.amazonaws.services.kinesis.producer.KinesisProducerConfiguration.ThreadingModel;
-import com.amazonaws.services.kinesis.producer.UserRecordFailedException;
-import com.amazonaws.services.kinesis.producer.UserRecordResult;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -56,6 +51,12 @@ import org.apache.pulsar.io.core.annotations.IOType;
 import org.apache.pulsar.io.kinesis.KinesisSinkConfig.MessageFormat;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
+import software.amazon.kinesis.producer.KinesisProducer;
+import software.amazon.kinesis.producer.KinesisProducerConfiguration;
+import 
software.amazon.kinesis.producer.KinesisProducerConfiguration.ThreadingModel;
+import software.amazon.kinesis.producer.UserRecordFailedException;
+import software.amazon.kinesis.producer.UserRecordResult;
 
 /**
  * A Kinesis sink which can be configured by {@link KinesisSinkConfig}.
@@ -191,10 +192,10 @@ public class KinesisSink extends AbstractAwsConnector 
implements Sink<GenericObj
                 && kinesisSinkConfig.getSkipCertificateValidation()) {
             kinesisConfig.setVerifyCertificate(false);
         }
-        AWSCredentialsProvider credentialsProvider = createCredentialProvider(
+        AwsCredentialsProvider credentialsProvider = createCredentialProvider(
                 kinesisSinkConfig.getAwsCredentialPluginName(),
                 kinesisSinkConfig.getAwsCredentialPluginParam())
-            .getCredentialProvider();
+            .getV2CredentialsProvider();
         kinesisConfig.setCredentialsProvider(credentialsProvider);
         
kinesisConfig.setNativeExecutable(StringUtils.trimToEmpty(kinesisSinkConfig.getNativeExecutable()));
         
kinesisConfig.setAggregationEnabled(kinesisSinkConfig.isAggregationEnabled());
diff --git 
a/pulsar-io/kinesis/src/main/java/org/apache/pulsar/io/kinesis/KinesisSinkConfig.java
 
b/pulsar-io/kinesis/src/main/java/org/apache/pulsar/io/kinesis/KinesisSinkConfig.java
index 9d316e54419..d4f34a05596 100644
--- 
a/pulsar-io/kinesis/src/main/java/org/apache/pulsar/io/kinesis/KinesisSinkConfig.java
+++ 
b/pulsar-io/kinesis/src/main/java/org/apache/pulsar/io/kinesis/KinesisSinkConfig.java
@@ -20,7 +20,6 @@ package org.apache.pulsar.io.kinesis;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static org.apache.commons.lang3.StringUtils.isNotBlank;
-import com.amazonaws.services.kinesis.producer.KinesisProducerConfiguration;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import java.io.IOException;
 import java.io.Serializable;
@@ -31,6 +30,7 @@ import lombok.EqualsAndHashCode;
 import org.apache.pulsar.io.common.IOConfigUtils;
 import org.apache.pulsar.io.core.SinkContext;
 import org.apache.pulsar.io.core.annotations.FieldDoc;
+import software.amazon.kinesis.producer.KinesisProducerConfiguration;
 
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -245,7 +245,7 @@ public class KinesisSinkConfig extends BaseKinesisConfig 
implements Serializable
 
     @FieldDoc(
             defaultValue = "",
-            help = "Extra KinesisProducerConfiguration parameters. See 
https://javadoc.io/static/com.amazonaws/amazon-kinesis-producer/0.15.2/index.html?com/amazonaws/services/kinesis/producer/KinesisProducerConfiguration.html
 for all the available parameters."
+            help = "Extra KinesisProducerConfiguration parameters. See 
https://javadoc.io/static/software.amazon.kinesis/amazon-kinesis-producer/1.0.4/software/amazon/kinesis/producer/KinesisProducerConfiguration.html
 for all the available parameters."
                     + "Parameters that are explicitly set take preference over 
extra config.")
     private Map<String, String> extraKinesisProducerConfig = new HashMap<>();
 
diff --git 
a/pulsar-io/kinesis/src/test/java/org/apache/pulsar/io/kinesis/KinesisSinkConfigTest.java
 
b/pulsar-io/kinesis/src/test/java/org/apache/pulsar/io/kinesis/KinesisSinkConfigTest.java
index 1c6beee96b8..1a81965d38e 100644
--- 
a/pulsar-io/kinesis/src/test/java/org/apache/pulsar/io/kinesis/KinesisSinkConfigTest.java
+++ 
b/pulsar-io/kinesis/src/test/java/org/apache/pulsar/io/kinesis/KinesisSinkConfigTest.java
@@ -20,13 +20,13 @@ package org.apache.pulsar.io.kinesis;
 
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
-import com.amazonaws.services.kinesis.producer.KinesisProducerConfiguration;
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 import org.apache.pulsar.io.core.SinkContext;
 import org.mockito.Mockito;
 import org.testng.annotations.Test;
+import software.amazon.kinesis.producer.KinesisProducerConfiguration;
 
 public class KinesisSinkConfigTest {
 
diff --git a/pulsar-io/pom.xml b/pulsar-io/pom.xml
index e4341d6a707..123d257596a 100644
--- a/pulsar-io/pom.xml
+++ b/pulsar-io/pom.xml
@@ -56,6 +56,7 @@
         <module>kafka</module>
         <module>rabbitmq</module>
         <module>kinesis</module>
+        <module>kinesis-kpl-shaded</module>
         <module>hdfs3</module>
         <module>jdbc</module>
         <module>data-generator</module>
@@ -93,6 +94,7 @@
         <module>http</module>
         <module>rabbitmq</module>
         <module>kinesis</module>
+        <module>kinesis-kpl-shaded</module>
         <module>hdfs3</module>
         <module>jdbc</module>
         <module>data-generator</module>
diff --git a/tests/integration/pom.xml b/tests/integration/pom.xml
index ed822f1f072..0a5f26f9c7a 100644
--- a/tests/integration/pom.xml
+++ b/tests/integration/pom.xml
@@ -222,7 +222,7 @@
     <dependency>
       <groupId>software.amazon.kinesis</groupId>
       <artifactId>amazon-kinesis-client</artifactId>
-      <version>2.2.8</version>
+      <version>3.1.2</version>
       <scope>test</scope>
     </dependency>
     <dependency>

Reply via email to