Applicationを作ってみようパートナーソリューションアーキテクトの榎並です。Library(以下、KCL)について掘り下げたいと思います。Applicationを開発するに辺り容易にデータ取得でき、かつ、耐障害性の高い仕組みを構築することができるライブラリです。Slideshareの資料にあるスライド24以降にKCLの機能をまとめましたのでご覧ください。KCLは、Githubから取得できます。Kinesisの開発者ガイドにもKCLの実装方法などについて触れており、本ブログはその情報に補足するものになります。Applicationをつくってみましょう。(JDK7)以上とMavenがインストールされている前提で進めます。1.Mavenを用いてProjectを作成します。-DartifactId=kinesisappMavenプロジェクトが作成されます。Projectフォルダのトップにpom.xmlが作成されてますので、編集します。SDKをDependenciesに追加します。Centralでリポジトリを確認できます。SDK:http://search.maven.org/#browse%7C-2028037748以下、追加した情報になります。<dependency><groupId>com.amazonaws</groupId><artifactId>amazon-kinesis-client</artifactId><version>1.1.0</version></dependency><dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk</artifactId><version>1.8.9.1</version></dependency>上記、以外にも、BuildやPackage時に使用する設定も行います。自動生成された、App.javaに加えてFactory.javaとProcessor.javaを追加しました。Factory.javaは、IRecordProcessorFactoryの実装でProcessorクラスを返します。Kinesisから取得したデータ処理を記述します。shutdownの3つのインタフェースがあり、それぞれ実装します。これらのメソッドがコールバックされる形になり、レコードが取得されるとprocessRecordsが呼び出されます。}}recordsにWorker(KCLが生成するデータ取得用スレッド)が取得したデータレコードが入ってきます。record.getData()でデータの実体にアクセスできます。getData()で取得されるデータは、ByteBufferなので、データ処理する際は注意が必要です。肝は、checkpoint(checkpointer)で、一定間隔(サンプルでは、CHECKPOINT_INTERVAL_MILLISを60秒としております)で、Checkpointをコールします。これにより、KCLは、DynamoDBに処理したシーケンス番号を書き込みます。サンプルソースは、可読性を重視し、リトライ処理を入れておりませんが、リトライ処理をいれることをオススメします。Shardを対象のShardに行った時、または、Streamが削除されときに呼び出されます。メインのApp.javaになります。}検証しやすいようにアプリケーション名、Stream、ワーカーID及びFailoverTimeを渡すようにしました。(値チェックなどしてませんが。)アプリケーション名このアプリケーション名と関連付けられたすべてのワーカーは、連係して同じストリームを処理していると見なされます。これらのワーカーは複数のインスタンスに分散している場合もあります。同じストリームを処理するまったく別のアプリケーションと見なします。テーブルを作成し、このテーブルを使用してアプリケーションの状態情報(チェックポイントやワーカーとシャードのマッピングなど)を保存します。ワーカーIDワーカーを特定するIDになり、実行するアプリケーション毎にユニークにする必要があります。どのワーカーがどのShardからデータを取得し、どのシーケンス番号まで処理しているかをDynamoDBのアイテムとして管理されます。インスタンス固有情報と乱数などを利用することで、複数インスタンスでアプリケーションを実行することも、1台のインスタンスに複数アプリケーションを実行することも可能になります。APIで取得するレコード数の上限値を決める、MaxRecordsなどが設定できます。設定できる値は以下で参照することができます。https://github.com/awslabs/amazon-kinesis-client/blob/master/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisClientLibConfiguration.java4.コンパイルと実行mavenでコンパイルとパッケージを行った後に実行します。CLIを使ってKinesisに対してデータをPutします。pkeyKinesisアプリ側のコンソールにデータが表示されれば成功です。マネジメントコンソールでUS-EAST-1のDynamoDBにアクセスすると、Kinesisアプリ名のテーブルが作成されていることも確認できます。今回は、KCLの簡単な開発の流れをご説明しました。このサンプルアプリを複数のインスタンスで実行させたうえで、1つのアプリを停止させた後もう一方のアプリが検知し、データを取得ことが確認できます。Kinesisアプリケーションを開発頂ければ幸いです。Webinarのご案内AWSソリューションアーキテクトの篠原英治(@shinodogg)です。Webinarを開催しております。ExplorerではAWSの利用料金をグラフで可視化することができます。Advisorを使うことで、これまで多くのお客様にAWSのサービスを提供してきた経験から得られたベストプラクティスをお知らせしてくれます。2つのサービスの使い方やユースケースなどについて紹介します。https://www2.gotomeeting.com/register/949557114セミナー内容:re:Inventで発表される新サービス/新機能のアップデートはもとより、現地で行われる数々のセッション、GameDayやトレーニング、各種イベントの情報をまとめてキャッチアップ頂ける内容となります。re:Inventの熱気を、1時間のWebinerを通じてお届けいたします。MapReduceなど、AWSにはビッグデータを扱うための様々なサービスが存在します。Pipelineはこれらのサービスをより便利に利用するためにデータの移動や処理のスケジュールを管理してくれます。Webアプリケーションのログ収集から集計や、オンプレミス環境からのデータ移行など、いくつかのケーススタディに沿って使い方を紹介していきたいと思います。Webinarは、Ctrix社のGoToMeetingで配信します。セミナーの申込みおよび参加方法に関しましては、こちら(http://aws.amazon.com/jp/webinar-flow/)に詳細を記載しております。iOSアプリやAndroidアプリもございますのでご活用ください。AWSが提供するクラウドコンピューティングサービスの最新技術動向、サービスのベストプラクティスを知ることができる無料クラウドカンファレンスとなります。クラウドが変える「明日」のビジネスを発見できる機会ですので、是非ご参加ください。今月の写真は、先日オーストラリアで撮影したソリューションアーキテクトおよびプロフェッショナルサービスのメンバーの集合写真です。使えるようになりました。使えるようになっています(紹介Blog記事)。よりさらにセキュアに使って頂けるようになりました。いうのは、本人確認(認証)する方法として複数の手段を使う事です。認証にパスワードを使用する事が多いかと思いますが、これは本人だけが知っているはずの情報を確認して、認証を行います。使用する場合は、このパスワードに加えてトークン等が生成するワンタイムパスワード(OTP)も確認する事で、本人しか持っていないはずのトークン(物)も持っている事を確認して認証できます。利用する場合にご利用頂けるようになっています。サーバを別途用意する必要があります。上にあっても構いません。ソリューションがそのまま使える可能性もあります。オープンソースのソフトウェアのみを利用して、無料で実現できる方法を手順も含め紹介します。