KPL 0.x から KPL 1.x に移行する
このトピックでは、コンシューマーを KPL 0.x から KPL 1.x に移行する方法について、段階的に説明します。KPL 1.x は、従来バージョンとのインターフェイス互換性を維持しつつ、AWS SDK for Java 2.x のサポートを新たに導入しています。KPL 1.x へ移行する際、データ処理の中核となるロジックを更新する必要はありません。
-
次の前提条件を満たしていることを確認する
-
Java Development Kit (JDK) 8 以降
-
AWS SDK for Java 2.x
-
依存関係管理用の Maven または Gradle
-
-
依存関係を追加する
Maven を使用している場合は、以下の依存関係を pom.xml ファイルに追加します。必ず groupId を
com.amazonawsからsoftware.amazon.kinesisに更新し、バージョンを1.x.xから最新の KPL バージョンに更新してください。<dependency> <groupId>software.amazon.kinesis</groupId> <artifactId>amazon-kinesis-producer</artifactId> <version>1.x.x</version> <!-- Use the latest version --> </dependency>Gradle を使用している場合は、以下を
build.gradleファイルに追加します。必ず1.x.xを最新の KPCL バージョンに置き換えてください。implementation 'software.amazon.kinesis:amazon-kinesis-producer:1.x.x'最新の KPL バージョンは、Maven Central Repository
で確認できます。 -
KPL の import ステートメントを更新する
KPL 1.x では AWS SDK for Java 2.x が使用され、パッケージ名も旧バージョンとは異なります。以前のバージョンではパッケージ名が
com.amazonaws.services.kinesisで始まっていましたが、KPL 1.x ではsoftware.amazon.kinesisに変更されています。com.amazonaws.services.kinesisの import ステートメントをsoftware.amazon.kinesisに置き換えます。次の表に、置き換える必要がある import ステートメントを示します。Import の置き換え 置き換え前: 次と置き換えます。 import com.amazonaws.services.kinesis.producer.Attempt;
import software.amazon.kinesis.producer.Attempt;
import com.amazonaws.services.kinesis.producer.BinaryToHexConverter;
import software.amazon.kinesis.producer.BinaryToHexConverter;
import com.amazonaws.services.kinesis.producer.CertificateExtractor;
import software.amazon.kinesis.producer.CertificateExtractor;
import com.amazonaws.services.kinesis.producer.Daemon;
import software.amazon.kinesis.producer.Daemon;
import com.amazonaws.services.kinesis.producer.DaemonException;
import software.amazon.kinesis.producer.DaemonException;
import com.amazonaws.services.kinesis.producer.FileAgeManager;
import software.amazon.kinesis.producer.FileAgeManager;
import com.amazonaws.services.kinesis.producer.FutureTimedOutException;
import software.amazon.kinesis.producer.FutureTimedOutException;
import com.amazonaws.services.kinesis.producer.GlueSchemaRegistrySerializerInstance;
import software.amazon.kinesis.producer.GlueSchemaRegistrySerializerInstance;
import com.amazonaws.services.kinesis.producer.HashedFileCopier;
import software.amazon.kinesis.producer.HashedFileCopier;
import com.amazonaws.services.kinesis.producer.IKinesisProducer;
import software.amazon.kinesis.producer.IKinesisProducer;
import com.amazonaws.services.kinesis.producer.IrrecoverableError;
import software.amazon.kinesis.producer.IrrecoverableError;
import com.amazonaws.services.kinesis.producer.KinesisProducer;
import software.amazon.kinesis.producer.KinesisProducer;
import com.amazonaws.services.kinesis.producer.KinesisProducerConfiguration;
import software.amazon.kinesis.producer.KinesisProducerConfiguration;
import com.amazonaws.services.kinesis.producer.LogInputStreamReader;
import software.amazon.kinesis.producer.LogInputStreamReader;
import com.amazonaws.services.kinesis.producer.Metric;
import software.amazon.kinesis.producer.Metric;
import com.amazonaws.services.kinesis.producer.ProcessFailureBehavior;
import software.amazon.kinesis.producer.ProcessFailureBehavior;
import com.amazonaws.services.kinesis.producer.UnexpectedMessageException;
import software.amazon.kinesis.producer.UnexpectedMessageException;
import com.amazonaws.services.kinesis.producer.UserRecord;
import software.amazon.kinesis.producer.UserRecord;
import com.amazonaws.services.kinesis.producer.UserRecordFailedException;
import software.amazon.kinesis.producer.UserRecordFailedException;
import com.amazonaws.services.kinesis.producer.UserRecordResult;
import software.amazon.kinesis.producer.UserRecordResult;
import com.amazonaws.services.kinesis.producer.protobuf.Messages;
import software.amazon.kinesis.producer.protobuf.Messages;
import com.amazonaws.services.kinesis.producer.protobuf.Config;
import software.amazon.kinesis.producer.protobuf.Config;
-
AWS 認証情報プロバイダークラスの import ステートメントを更新する
KPL 1.x に移行する際、KPL アプリケーションコード内で使用している import ステートメントのパッケージおよびクラスを AWS SDK for Java 1.x に基づくものから AWS SDK for Java 2.x に基づくものへ更新する必要があります。KPL アプリケーションでよく使用される import ステートメントは、認証情報プロバイダークラスにあります。認証情報プロバイダーの変更の一覧は、AWS SDK for Java 2.x 移行ガイドのドキュメントの認証情報プロバイダーの変更を参照してください。以下は、KPL アプリケーションで一般的に必要となる import ステートメントの変更例です。
KPL 0.x の import ステートメント
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;KPL 1.x の import ステートメント
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;AWS SDK for Java 1.x に基づくその他の認証情報プロバイダークラスをインポートしている場合は、AWS SDK for Java 2.x に相当するクラスへ更新する必要があります。AWS SDK for Java 1.x のクラスやパッケージを一切インポートしていない場合は、この手順を無視して構いません。
-
KPL 設定内の認証情報プロバイダー設定を更新する
KPL 1.x の認証情報プロバイダー設定には、AWS SDK for Java 2.x の認証情報プロバイダーが必要です。
KinesisProducerConfigurationでデフォルトの認証情報プロバイダーを上書きし、AWS SDK for Java 1.x の認証情報プロバイダーを渡している場合は、AWS SDK for Java 2.x の認証情報プロバイダーに更新する必要があります。認証情報プロバイダーの変更の一覧は、AWS SDK for Java 2.x 移行ガイドのドキュメントの認証情報プロバイダーの変更を参照してください。KPL 設定でデフォルトの認証情報プロバイダーを上書きしていない場合は、この手順は無視できます。たとえば、KPL のデフォルト認証情報プロバイダーを次のコードで上書きしている場合です。
KinesisProducerConfiguration config = new KinesisProducerConfiguration(); // SDK v1 default credentials provider config.setCredentialsProvider(new DefaultAWSCredentialsProviderChain());AWS SDK for Java 2.x の認証情報プロバイダーを使用するためには、これらを次のコードに更新する必要があります。
KinesisProducerConfiguration config = new KinesisProducerConfiguration(); // New SDK v2 default credentials provider config.setCredentialsProvider(DefaultCredentialsProvider.create());