Amazon Kinesis Producer Library (KPL) を使って、データレコードの書き込みと Kinesis データストリームへの配置を行いたいと考えています。どうすればできますか?
簡単な説明
KPL を使用して Kinesis データストリームにレコードを配置するには、次の要件を満たす必要があります。
- 実行中の Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスがある。
- インスタンスに AWS Identity and Access Management (IAM) ロールがアタッチされている。
- インスタンスの IAM ロールにアタッチされ KinesisFullAccess ポリシーが必要です。
解決方法
KPL を使用して Kinesis データストリームにレコードを配置する手順は次のとおりです。
1. Linux インスタンスに接続します。
2. OpenJDK 8 デベロッパーパッケージの最新バージョンをインストールします。
sudo yum install java-1.8.0-openjdk-devel
3. 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)
4. 次のコマンドを実行して、Java 1.8 をデフォルトの java および javac プロバイダーとして設定します。
sudo /usr/sbin/alternatives --config java
sudo /usr/sbin/alternatives --config javac
5. 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
6. Maven パッケージのバージョン番号を設定します。
sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo
7. yum を使って Maven をインストールします。
sudo yum install -y apache-maven
8. 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"
9. git をインストールした上で、「Amazon Web Services - Labs」から KPL をダウンロードします。
sudo yum install git
git clone https://github.com/awslabs/amazon-kinesis-producer
10. 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
11. 次のようなコマンドを実行して、Kinesis データストリームを作成します。
aws kinesis create-stream --stream-name kinesis-kpl-demo --shard-count 2
必要なシャード数の詳細については、リシャーディング、拡張、並列処理をご参照ください。
12. list-streams を実行して、ストリームが作成されたことを確認します。
aws kinesis list-streams
13. 「Amazon Web Services - Labs」の GitHub リポジトリで SampleProducer.java ファイルを開き、次のフィールドを変更します。
public static final String STREAM_NAME_DEFAULT の部分は、事前に作成した Kinesis データストリームの名前で置き換えます。
public static final String REGION_DEFAULT の部分は、お客様のリージョン名で置き換えます。
例:
cd src/com/amazonaws/services/kinesis/producer/sample
vi SampleProducerConfig.java
public static final String STREAM_NAME_DEFAULT = "kinesis-kpl-demo";
public static final String REGION_DEFAULT = "us-east-1";
14. amazon-kinesis-producer-sample ディレクトリで次のコマンドを実行し、ディレクトリの依存関係全体のダウンロードを、Maven に許可します。
mvn clean package
15. amazon-kinesis-producer-sample ディレクトリで次のコマンドを実行し、プロデューサーを起動し、Kinesis データストリームにデータを送信します。
mvn exec:java -Dexec.mainClass="com.amazonaws.services.kinesis.producer.sample.SampleProducer"
16. Kinesis コンソール の [Monitoring ] タブに表示される [Incoming Data(Count)] グラフで、ストリームに送信されたレコードの数を確認します。
注: 表示されるレコード数は、データストリームに送信された実際のレコード数より少なくなる場合があります。KPL が「集計」を実行した場合、表示されるレコード数は減少します。
関連情報
KPL を使用した Kinesis データストリームへの書き込み