Amazon Kinesis Producer Library (KPL) を使って、データレコードの書き込みと Amazon Kinesis データストリームへの配置を行いたいと考えています。
解決策
前提条件:
- 実行中の Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスがある
- インスタンスに AWS Identity and Access Management (IAM) ロールがアタッチされている
- KinesisFullAccess ポリシーが、インスタンスの IAM ロールにアタッチされている
KPL を使用して Kinesis データストリームにレコードを配置する手順は次のとおりです。
-
Linux インスタンスに接続します。
-
OpenJDK 8 デベロッパーパッケージの最新バージョンをインストールします。
sudo yum install java-1.8.0-openjdk-devel
-
Java がインストールされていることを確認します。
java -version
次のような出力が表示されます。
java version "1.7.0_181"OpenJDK Runtime Environment (amzn-2.6.14.8.80.amzn1-x86_64 u181-b00)
OpenJDK 64-Bit Server VM (build 24.181-b00, mixed mode)
-
次のコマンドを実行して、Java 1.8 をデフォルトの Java および javac プロバイダーとして設定します。
sudo /usr/sbin/alternatives --config java sudo /usr/sbin/alternatives --config javac
-
Apache Maven パッケージが入ったリポジトリを追加します。
sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
-
Maven パッケージのバージョン番号を設定します。
sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo
-
yum を使用して Maven をインストールします。
sudo yum install -y apache-maven
Maven が正しくインストールされていることを確認するには、以下のコマンドを実行します。
mvn -version
次のような出力が表示されます。
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T07:58:13Z)Maven home: /usr/share/apache-maven
Java version: 1.7.0_181, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.181.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.14.33-51.37.amzn1.x86_64", arch: "amd64", family: "unix"
-
git をインストールし、GitHub のウェブサイトから KPL をダウンロードします。
sudo yum install gitgit clone https://github.com/awslabs/amazon-kinesis-producer
-
amazon-kinesis-producer/java/amazon-kinesis-producer-sample/ ディレクトリを開き、ファイルを一覧表示します。
`cd amazon-kinesis-producer/java/amazon-kinesis-producer-sample/ls`
`default_config.properties pom.xml README.md src target`
-
次のようなコマンドを実行して、Kinesis データストリームを作成します。
aws kinesis create-stream --stream-name kinesis-kpl-demo --shard-count 2
- list-stream を実行して、ストリームが作成されていることを確認します。
aws kinesis list-streams
- GitHub リポジトリの SampleProducer.java ファイルを開き、次のフィールドを変更します。
public static final String STREAM_NAME_DEFAULT には、事前に作成した Kinesis データストリームの名前を入力します。
public static final String REGION_DEFAULT には、使用している AWS リージョンを入力します。
例:
cd src/com/amazonaws/services/kinesis/producer/samplevi SampleProducerConfig.java
public static final String STREAM_NAME_DEFAULT = "kinesis-kpl-demo";
public static final String REGION_DEFAULT = "us-east-1";
- amazon-kinesis-producer-sample ディレクトリで次のコマンドを実行し、ディレクトリの依存関係全体のダウンロードを、Maven に許可します。
mvn clean package
- amazon-kinesis-producer-sample ディレクトリで次のコマンドを実行し、プロデューサーを起動し、Kinesis データストリームにデータを送信します。
mvn exec:java -Dexec.mainClass="com.amazonaws.services.kinesis.producer.sample.SampleProducer"
- Kinesis コンソールの Monitoring タブに表示される Incoming Data(Count) グラフで、ストリームに送信されたレコードの数を確認します。
**注:**表示されるレコード数は、データストリームに送信された実際のレコード数より少なくなる場合があります。このようにレコード数が少なくなるのは、KPL が集計を使用するからです。
関連情報
Writing to your Kinesis Data Stream using the KPL
リシャーディング、スケーリング、並列処理