KPL 0.x から KPL 1.x に移行する - Amazon Kinesis Data Streams

KPL 0.x から KPL 1.x に移行する

このトピックでは、コンシューマーを KPL 0.x から KPL 1.x に移行する方法について、段階的に説明します。KPL 1.x は、従来バージョンとのインターフェイス互換性を維持しつつ、AWS SDK for Java 2.x のサポートを新たに導入しています。KPL 1.x へ移行する際、データ処理の中核となるロジックを更新する必要はありません。

  1. 次の前提条件を満たしていることを確認する

    • Java Development Kit (JDK) 8 以降

    • AWS SDK for Java 2.x

    • 依存関係管理用の Maven または Gradle

  2. 依存関係を追加する

    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 で確認できます。

  3. 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;

  4. 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 のクラスやパッケージを一切インポートしていない場合は、この手順を無視して構いません。

  5. 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());