SlideShare a Scribd company logo
Amazon Kinesis
AWS Black Belt Tech Webinar 2015
パートナーソリューションアーキテクト 榎並 利晃
Agenda
• Kinesis概要
• データの入力
• データの取得と処理
• Kinesisの運用
• まとめ
• 補足資料: 事例紹介
2
Agenda
• Kinesis概要
• データの入力
• データの取得と処理
• Kinesisの運用
• まとめ
• 補足資料: 事例紹介
3
Amazon Kinesis概要
4
Amazon Kinesisとは?
• ハイボリュームな連続したデータをリアルタイ
ムで集計・変換などの処理を可能にするフルマ
ネージドサービス
• Kinesisは、数十万のデータソースからの1時間
辺り数テラバイトのデータを処理することがで
き、かつ、格納されたデータは、複数のAZに格
納する信頼性と耐久性をもつサービス
5
AWS のビッグデータ・プラットフォーム
S3
Kinesis
DynamoDB
AWS Lambda
KCL Apps
EMR
EMR Redshift
Machine
Learning
Collect Process Analyze
Store
Data Collection
and Storage
Data
Processing
Event
Processing
Data
Analysis
6
データのタイプ
ファイル: media, log files (sets of records)
ストリーム: records (eg: device stats)
トランザクション: DBへのRead/Write
7
データのタイプ と AWSサービス
S3
Kinesis
DynamoDB
8
Kinesis概要
データ入力側 データ処理側
HTTP Post
AWS SDK
LOG4J
Flume
Fluentd
Get* APIs
Kinesis Client
Library
+
Connector Library
Apache Storm
Amazon Elastic
MapReduce
AWS
Mobile
SDK
Apache Spark
Streaming
9
Kinesis Producer
Library
Kinesis構成内容
Data
Sources
App.4
[Machine
Learning]
App.1
[Aggregate &
De-Duplicate]
Data
Sources
Data
Sources
Data
Sources
App.2
[Metric
Extraction]
S3
DynamoDB
Redshift
App.3
[Real-time
Dashboard]
Data
Sources
Availability
Zone
Shard 1
Shard 2
Shard N
Availability
Zone
Availability
Zone
Kinesis
AWSEndpoint
• 用途単位でStreamを作成し、Streamは、1つ以上のShardで構成される
• Shardは、データ入力側 1MB/sec, 1000 TPS、データ処理側 2 MB/sec, 5TPSのキャパシティを持つ
• 入力するデータをData Recordと呼び、入力されたData Recordは、24 時間かつ複数のAZに保管される
• Shardの増加減によってスケールの制御が可能
Stream
10
セットアップとモニタリング
• Management Console/APIで簡単セットアップ
Stream名とShard数を入力して
Streamが作成できる。
キャパシティ、レイテン
シーをモニタリング。
Cloud Watchで監視も可能
11
Kinesisコスト
従量課金 & 初期費用不要
課金項目 単価
シャード利用料 $0.0195/shard/時間
PUT Payload Unit
トランザクション
$0.0215/100万Put
• PUT Payload Unitは、25KB
• シャード1つで、一ヶ月約$14
• Getトランザクションは無料
• インバウンドのデータ転送料は無料
• アプリケーションが走るEC2は通常の料金がかかります
アップデートあり
(※)東京リージョンの費用(2015年8月時点)
12
データ入力
13
データ入力方法
• PutRecord API, PutRecords API でデータ入力が可能
– http://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html
– http://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecords.html
• AWS SDK for Java, Javascript, Python, Ruby, PHP, .Net, AWS CLIが利用可能
• PutRecords APIを用いることにより効率的なアップロードが可能(上限1000Records, 1MB)
$ aws kinesis put-record 
--stream-name StreamName --data 'foo' --partition-key $RANDOM
{
"ShardId": "shardId-000000000013",
"SequenceNumber":
"49541296383533603670305612607160966548683674396982771921"
}
レスポンス
AWS CLI を利用した例(PutRecord):
14
データ入力方法
$ aws kinesis put-records 
--stream-name StreamName --records Data=foo,
PartitionKey=part1 Data=bar,PartitionKey=part2
{
"FailedRecordCount": 0,
"Records": [
{
"ShardId": "shardId-000000000000",
"SequenceNumber":
"49545693054015017535413974379008689042941246688683098114"
},
{
"ShardId": "shardId-000000000000",
"SequenceNumber":
"49545693054015017535413974379009897968760861317857804290"
}
]
}
レスポンス
AWS CLI を利用した例(PutRecords):
15
データ入力イメージ
Stream
Shard-0
Shard-1
Data
Record
Data
Record
Data
Record
Data Recordに設定されたパーティションキーを基にShard
に分配
DataRecordの中身
データブロブ
(Max 1M)
パーティ
ションキー
(Max 256B)
2015/06/03 Recordサイズが50kから1Mに拡張
アップデートあり
16
データ入力及び分配イメージ
• DataRecordに設定されたパーティションキーを基にShardに分配
• Shardは担当するレンジを持ち、パーティションキーをMD5でハッシュ化
した値によって該当のShardに分配される
0
2128
Shard-1
MD5(パーティションキー)
Shard-0
データ
パーティション
キー
値によりどちら
かに分配
0
2127
17
パーティションキーについてのTips
• バッファとしてKinesisを利用する場合
– パーティションキーの数 > shardの数
– カーディナリティーの高いパーティションキーを使う
18
• Streaming Map ReduceとしてKinesisを利用する場合
– パーティションキーに意味を持たせてShardを振り分ける
Data
Shard-0
Shard-1
Data DataData
均等に振り分け
共通処理
共通処理
Data
Shard-0
Shard-1
Data DataData
意味に応じて振り分け
処理A
処理B
shard
シーケンス番号
• KinesisがStream内でユニークなシーケンス番号を付与
• データもシーケンス番号も不変
• シーケンス番号でデータが何回でも取得できる(24時間以内)
• 何度取得してもシーケンス番号の順番はかわらない
SeqNo
(14)
SeqNo
(17)
SeqNo
(25)
SeqNo
(26)
SeqNo
(32)
19
その他Tips
• ExplicitHashKeyの使い方
– Partition Keyを使わずExplicitHashKeyを使って明示的にShardの振り分けができる
20
• SequenceNumberForOrderingの使い方
– SequenceNumberForOrdering パラメーターを使用すると、同じクライアントが PutRecord を呼
び出したときに、パーティションキーが同じであっても、シーケンス番号は厳密に大きくなるように
なります。SequenceNumberForOrdering を使用しても、複数の同時実行のアプリケーションから
追加されたレコード間、または複数のパーティションキー間では、順序が正しくなるとは限りません。
[ CLIの例]
% aws kinesis put-record --stream STREAM --data "shardId-000000000000" --partition-key test
{
"ShardId": "shardId-000000000000",
"SequenceNumber": "49553779153805478375276164659904167464197973775715663986"
}
% aws kinesis put-record --stream STREAM --data "shardId-000000000007" --partition-key test --explicit-hash-key
170141183460469231731687303715884105728
{
"ShardId": "shardId-000000000001",
"SequenceNumber": "49553779153827779120474695283200445687381298107557871746"
}
Partition keyだけを指定
した場合は、Kinesisが自
動的にハッシュ値を使っ
てShardに振り分け
明示的に別なShardの
ハッシュ値を指定してい
するとその値を優先して
振り分ける
その他Tips
• PutRecords API
– レコード数は、500レコードまで格納してコールすることが可能
– 但し、Shardの上限(put 1000 レコード/秒/shard)に注意
– レスポンスにそれぞれのレコードに対する結果が返ってくるため、正常終了されているかを
ループ処理などで確認すること
{
"FailedRecordCount”: 1,
"Records": [
{
"SequenceNumber": "21269319989900637946712965403778482371",
"ShardId": "shardId-000000000001"
},
{
“ErrorCode":”ProvisionedThroughputExceededException”,
“ErrorMessage": "Rate exceeded for shard shardId-000000000001 in stream exampleStreamName under account
111111111111."
},
{
"SequenceNumber": "21269319989999637946712965403778482985",
"ShardId": "shardId-000000000002"
}
]
}
例)PutRecords Response
21
データ入力 エコシステム
22
主なツール一覧
• Amazon Kinesis Producer Lib
• Fluentd for Amazon Kinesis
• MQTT-Kinesis Bridge
その他にもツールがありますので以下をご確認ください。
https://aws.amazon.com/kinesis/developer-resources/
23
Kinesis Producer Library: KPL
• Kinesisにデータを送信する補助ライブラリ
• KPL は、C++ で書かれており、メインプロセスの子プロセスとして実行されます。
[ドキュメント]
http://docs.aws.amazon.com/ja_jp/kinesis/latest/dev/developing-producers-with-kpl.html
https://blogs.aws.amazon.com/bigdata/post/Tx3ET30EGDKUUI2/Implementing-Efficient-and-Reliable-
Producers-with-the-Amazon-Kinesis-Producer-L
<特徴>
1. 1つのレコードにユーザデータを集約
2. レコードを束ねてputRecordsの形に自動変換
3. 非同期実行
<サポートプラットフォーム>
• カーネルバージョン 2.6.18(2006 年 9 月)の
Linux ディストリビューション
• Apple OS X 10.9 以降
• Windows Server 2008 以降
KPL は、64 ビット版のみ
24
KPLの集約機能を利用するためにはあとで説明するKCLのバージョンを
1.4以上にする必要があります。
使用するバージョンなどは以下のサイトご覧ください。
http://docs.aws.amazon.com/ja_jp/kinesis/latest/dev/kinesis-kpl-
integration.html
Fluent Plugin for Amazon Kinesis
• Kinesisへデータを投入してくれるfluentdのoutputプラグイン
• https://github.com/awslabs/aws-fluent-plugin-kinesis
• Fluentdをログ収集に使っている環境下なら、このプラグインを追加する
だけでKinesisへのデータ投入ができる!
$ gem install fluent-plugin-kinesis
$ vi fluentd.conf
<match YOUR.TAG>
type kinesis
stream_name YOUR_STREAM_NAME
region ap-northeast-1
flush_interval 1
random_partition_key
</match>
$ fluentd –c fluentd.conf
25
MQTT Broker
Kinesis-MQTT Bridge
MQTT-Kinesis Bridge
• センサーデバイスなどライトウェイトなプロトコル(MQTT)を利用し、データを
アップロードする場合に利用
• EC2上に本MQTT Bridgeをデプロイして利用。
• GithubからMQTT-Kinesis Bridgeサンプルソースが取得可能
https://github.com/awslabs/mqtt-kinesis-bridge
MQTT Broker
Kinesis-MQTT Bridge
センサー
センサー
センサー
Auto scaling Group
26
データの取得と処理
27
データ取得方法
• GetShardIterator APIでShard内のポジションを取得し、GetRecords APIでデータ入力が可能
– http://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetShardIterator.html
– http://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetRecords.html
• AWS SDK for Java, Javascript, Python, Ruby, PHP, .Net が利用可能
• AWS CLIが利用可能
$ aws kinesis get-shard-iterator --stream-name StreamName 
--shard-id shardId-000000000013 --shard-iterator-type AT_SEQUENCE_NUMBER 
--starting-sequence-number 49541296383533603670305612607160966548683674396982771921
{
"ShardIterator": ”FakeIterator"
}
$ aws kinesis get-records --shard-iterator FakeIterator --limit 1
{
"Records": [
{
"PartitionKey": "16772",
"Data": "Zm9v",
"SequenceNumber": "49541296383533603670305612607160966548683674396982771921"
}
],
"NextShardIterator": “YetAnotherFakeIterator"
}
get-shard-
iterator
get-records
28
GetShardIteratorでのデータ取得指定方法
• GetShardIterator APIでは、ShardIteratorTypeを指定してポジションを取得
する。
• ShardIteratorTypeは以下の通り
– AT_SEQUENCE_NUMBER ( 指定のシーケンス番号からデータ取得 )
– AFTER_SEQUENCE_NUMBER ( 指定のシーケンス番号以降からデータ取得 )
– TRIM_HORIZON ( Shardにある最も古いデータからデータ取得 )
– LATEST ( 最新のデータからデータ取得 )
Seq: xxx
LATEST
AT_SEQUENCE_NUMBER
AFTER_SEQUENCE_NUMBER
TRIM_HORIZON
GetShardIteratorの動作イメージ
29
Kinesis Client Library (KCL)
Client library for fault-tolerant, at least-once, Continuous
Processing
• Shardと同じ数のWorker
• Workerを均等にロードバランシング
• 障害感知と新しいWorkerの立ち上げ
• シャードの数に応じてworkerが動作する
• AutoScalingでエラスティック
• チェックポインティングとAt least once処理
これらの煩雑な処理を意識することなく
ビジネスロジックに集中することができる。
30
Sample RecordProcessor
public class SampleRecordProcessor implements IRecordProcessor {
@Override
public void initialize(String shardId) {
LOG.info("Initializing record processor for shard: " + shardId);
// initialize to start processing records.
initializeLocalState(shardId);
}
@Override
public void processRecords(List<Record> records, IRecordProcessorCheckpointer checkpointer) {
LOG.info("Processing " + records.size() + " records for kinesisShardId " + kinesisShardId);
// Process records and perform all exception handling.
processRecordsWithRetries(records);
// Checkpoint once every checkpoint interval.
if (System.currentTimeMillis() > nextCheckpointTimeInMillis) {
checkpoint(checkpointer);
nextCheckpointTimeInMillis = System.currentTimeMillis() + CHECKPOINT_INTERVAL_MILLIS;
}
}
}
31
Kinesis Client Libraryの動き
Stream
Shard-0
Shard-1
Kinesis
アプリケーション
(KCL)
ワーカー シーケンス番号
Instance A 12345
Instance A 98765
Data
Record
(12345)
Data
Record
(24680)
Data
Record
(98765)
DynamoDB
Instance A
1. Kinesis Client LibraryがShardからData Recordを取得
2. 設定された間隔でシーケンス番号をそのワーカーのIDをキーにした
DynamoDBのテーブルに格納
3. 1つのアプリが複数Shardからデータを取得し処理を実行
(*)実際のKey, Attribute名は異なります。
32
Kinesis Client Libraryの動き
Stream
Shard-0
Shard-1
Kinesis
アプリケーション
(KCL)
ワーカー シーケンス番号
Instance A 12345
Instance B 98765
Data
Record
(12345)
Data
Record
(24680)
Data
Record
(98765)
DynamoDB
Instance A
Kinesis
アプリケーション
(KCL)
Instance B
同一アプリを複数インスタンスで実行した場合は、負荷分散される
(*)実際のKey, Attribute名は異なります。
33
Kinesis Client Libraryの動き
Stream
Shard-0
Shard-1
Kinesis
アプリケーション
(KCL)
ワーカー シーケンス番号
Instance A
↓
Instance B
12345
Instance B 98765
Data
Record
(12345)
Data
Record
(24680)
Data
Record
(98765)
DynamoDB
Instance A
Kinesis
アプリケーション
(KCL)
Instance B
Instance Aがデータ取得されない状況を検知し、Instance Bが、DynamoDBに
格納されているシーケンス番号からデータ取得を行う
(*)実際のKey, Attribute名は異なります。
34
Kinesis Client Libraryの動き–拡張性
Stream
Shard-0
Kinesis
アプリケーション
(KCL)
Shard ワーカー シーケンス
番号
Shard-0 Instance A 12345
Shard-1 Instance A 98765
Data
Record
(12345)
Data
Record
(24680)
DynamoDB
Instance A
Shard-1を増やしたことを検知し、データ取得を開始し、Shard-1のチェックポ
イント情報をDynamoDBに追加
Shard-1
Data
Record
(98765)
New
(*)実際のKey, Attribute名は異なります。
35
目的に応じてKinesisアプリケーションを追加可能
ストリーム
シャード
シャード
データ
レコード
(12345)
データ
レコード
(98765)
データ
レコード
(24680)
データ
レコード
(12345)
データ
レコード
(98765)
データ
レコード
(24680)
アーカイブアプリ
(KCL)
DynamoDB
Instance A
Shard ワーカー シーケンス
番号
Shard-0 Instance A 12345
Shard-1 Instance A 98765
集計アプリ
(KCL)
Instance A
Shard ワーカー シーケンス
番号
Shard-0 Instance A 24680
Shard-1 Instance A 98765
各アプリ毎に別テーブルで管理される
Archive Table
Calc Table
36
Kinesis Client Library (KCL)対応言語
• Java
• Node.js
• .Net
• Python
複数の言語でビジネスロジックを記述し、KCLのMultiLangDaemonが
Kinesisとのやりとりを行う。
37
MultiLangDaemonについて
• KCL for Python/Node.js/.Netは、KCL for Javaの“MultiLangDaemon”
を常駐プロセスとして利用し、データ処理のメインロジックを各種言語
で記述できるライブラリ
• データ処理は、サブプロセスとして起動される
• “MultiLangDaemon”とサブプロセス間のデータ通信は、定義されたプロ
トコルでSTDIN/STDOUTを使って行われる
KCL(Java)
Shard-0
Shard-1 Worker Thread
Worker Thread
Python Logic
Process
Python Logic
Process
【Pythonの例】
38
Pythonの例)KCL for Python実装
#!env python
from amazon_kclpy import kcl
import json, base64
class RecordProcessor(kcl.RecordProcessorBase):
def initialize(self, shard_id):
pass
def process_records(self, records, checkpointer):
pass
def shutdown(self, checkpointer, reason):
pass
if __name__ == "__main__":
kclprocess = kcl.KCLProcess(RecordProcessor())
kclprocess.run()
39
【参考情報】Multi Language Protocol
Action Parameter
Initialize "shardId" : "string"
processRecords [{ "data" : ”base64encoded_string",
"partitionKey" : ”partition key",
"sequenceNumber" : ”sequence number";
}] // a list of records
checkpoint "checkpoint" : ”sequence number",
"error" : NameOfException"
shutdown "reason" : “TERMINATE|ZOMBIE"
40
【参考情報】 KCL for Pythonプロパティ
項目 内容
failoverTimeMillis Workerが処理を継続できなくなり別なWorkerにフェイルオーバする時間(ミリ秒)
短い値を設定するとDynamoDBのPIOPS高くなるため注意が必要
maxRecords 1回のデータ取得で取得するレコード件数
idleTimeBetweenReadsInMillis レコード取得間隔(ミリ秒)
callProcessRecordsEvenForEmptyRecord
List
レコードデータが空でもレコード取得処理を継続するかの判断(True or Fault)
parentShardPollIntervalMillis 親のShardをチェックするインターバル
短い値を設定するとDynamoDBのPIOPS高くなるため注意が必要
cleanupLeasesUponShardCompletion shradが終了した後に継続して処理を続けるかクリーンアップするかを指定
taskBackoffTimeMillis KCLのバックオフタイムの設定
metricsBufferTimeMillis CloudWatchのAPIコールする前の時間
metricsMaxQueueSize CloudWatchのAPIコールする最大のキューサイズ
validateSequenceNumberBeforeCheckpo
inting
Checkpointingする前にシーケンス番号をチェックするかを指定
maxActiveThreads MultiLangDaemonの最大スレッド数
41
Pythonの例)KCL for Python実行方法
[ec2-user@ip-172-31-17-43 samples]$ amazon_kclpy_helper.py --print_command -j /usr/bin/java
-p /home/ec2-user/amazon-kinesis-client-python/samples/sample.properties
/usr/bin/java -cp /usr/lib/python2.6/site-packages/amazon_kclpy-1.0.0-
py2.6.egg/amazon_kclpy/jars/amazon-kinesis-client-1.2.0.jar:/usr/lib/python2.6/site-
packages/amazon_kclpy-1.0.0-py2.6.egg/amazon_kclpy/jars/jackson-annotations-
2.1.1.jar:/usr/lib/python2.6/site-packages/amazon_kclpy-1.0.0-
py2.6.egg/amazon_kclpy/jars/commons-codec-1.3.jar:/usr/lib/python2.6/site-
packages/amazon_kclpy-1.0.0-py2.6.egg/amazon_kclpy/jars/commons-logging-
1.1.1.jar:/usr/lib/python2.6/site-packages/amazon_kclpy-1.0.0-
py2.6.egg/amazon_kclpy/jars/joda-time-2.4.jar:/usr/lib/python2.6/site-packages/amazon_kclpy-
1.0.0-py2.6.egg/amazon_kclpy/jars/jackson-databind-2.1.1.jar:/usr/lib/python2.6/site-
packages/amazon_kclpy-1.0.0-py2.6.egg/amazon_kclpy/jars/jackson-core-
2.1.1.jar:/usr/lib/python2.6/site-packages/amazon_kclpy-1.0.0-
py2.6.egg/amazon_kclpy/jars/aws-java-sdk-1.7.13.jar:/usr/lib/python2.6/site-
packages/amazon_kclpy-1.0.0-py2.6.egg/amazon_kclpy/jars/httpclient-
4.2.jar:/usr/lib/python2.6/site-packages/amazon_kclpy-1.0.0-
py2.6.egg/amazon_kclpy/jars/httpcore-4.2.jar:/home/ec2-user/amazon-kinesis-client-
python/samples com.amazonaws.services.kinesis.multilang.MultiLangDaemon sample.properties
出力結果をコピーして、シェルの入力
としてペーストし、実行すると、KCL
が実行されます42
KCLが使用するリソース
• DynamoDB
– チェックポイントの情報などのステート管理
– デフォルトでRead/WriteのProvisioned Throughputが10
で作成される
• http://docs.aws.amazon.com/kinesis/latest/dev/kinesis-
record-processor-ddb.html
• Cloudwatch
– KCLアプリケーションのカスタムメトリックス
– 取得できるメトリックスは以下を確認してください
• http://docs.aws.amazon.com/kinesis/latest/dev/monitori
ng-with-kcl.html
43
Kinesisアプリケーションの運用
• AutoScaling
• アプリケーションをモニター
– KCLメトリック
• シャードごとのメトリック
• プロセシングのレイテンシー
• Record数・スループット
• 関連するサービスのモニター
– DynamoDBなどのリトライの数、レーテンシー
• CloudWatchコンソール
• トラブルシューティング
– アプリケーションが遅延してる場合は「MillisBehindLatest」を確認
44
データ処理 基本デザイン
45
基本デザイン 1/2
データ
ソース
ロジック
A
ロジック
BSeqNo
(14)
SeqNo
(17)
SeqNo
(25)
SeqNo
(26)
SeqNo
(32)
46
データ処理を行うアプリケーション側でリカバリーやロードバランシング
を考慮した設計が必要
Kinesisの特徴であるシリアル番号を利用しチェックポイントを打つことが
重要
1つのデータを複数のアプリケーションで利用できるためアプリケーショ
ン毎に追加・削除できる設計
本番データを用いて開発中のロジックの評価や複数のロジックを同じデー
タを用いて評価することが可能
基本デザイン 2/2
Shardのキャパシティを意識する
• Kinesisからのデータ読み出しは、5TPSか2MBps
• Kinesisにデータが書き込まれてから24時間はShardから読み出し可能
• ただし、Shardのキャパシティ(5TPSか2MBps)を超えて配置する場合は、ウ
エイトをいれる、または、Shardを増やす必要がある
データ
ソース
アプリA
アプリB
キャパシティを超えてアクセスす
るとProvision Throughput
Exceed Exceptionになる。
基本構成パターン例
センサー
センサー
センサー
アプリ2
Dashboardアプリ1
Redshift
DynamoDB
48
データ処理 パターン
49
データ処理パターン
50
• Kinesis Connector Library
• AWS Lambda
• Amazon EMR Integration – Hadoop
• Amazon EMR Integration – Spark
• Apache Storm Integration
• その他
Kinesis Connector Library
51
• Data Recordの取得、変換、フィルタ、バッファ、書き出しを簡単に実装できるJava
のライブラリ。
• KCLを利用しているため、Workerの可用性などはKCLにお任せ。
ITransformer
•Kinesisか
らユーザが
使いやすい
モデルへの
変換
IFilter
•データのフィ
ルタリング。
フィルタリン
グして残った
ものがバッ
ファーへ行く
IBuffer
•指定のレコー
ド数か、バイ
ト数までバッ
ファー
IEmitter
•他AWS
サービスの
コール実施
S3
DynamoDB
Redshift
Kinesis
Kinesis Connector Library
ElasticSearch
52
Kinesis Connector Library サンプルコード
public class S3Pipeline implements IKinesisConnectorPipeline<KinesisMessageModel, byte[]> {
@Override
public ITransformer<KinesisMessageModel, byte[]> getTransformer(KinesisConnectorConfiguration configuration) {
return new JsonToByteArrayTransformer<KinesisMessageModel>(KinesisMessageModel.class);
}
@Override
public IFilter<KinesisMessageModel> getFilter(KinesisConnectorConfiguration configuration) {
return new AllPassFilter<KinesisMessageModel>();
}
@Override
public IBuffer<KinesisMessageModel> getBuffer(KinesisConnectorConfiguration configuration) {
return new BasicMemoryBuffer<KinesisMessageModel>(configuration);
}
@Override
public IEmitter<byte[]> getEmitter(KinesisConnectorConfiguration configuration) {
return new S3Emitter(configuration);
}
}
[Sample S3 pipeline]
JSONをByteArrayに変換
すべてパスするフィルタ
メモリ上にバッファ
S3に対して書き込み
53
Kinesis Connector LibraryでEmitできるサービス
• S3
• DynamoDB
• Redshift
• Elasticsearch 1.2.1
54
Kinesis Connector Libraryに関するTips
• Kinesis Connector Libでは最低限の実装のみ提供して
いるため、要件に応じた実装が必要
– com.amazonaws.services.kinesis.connectors.interfaces内にあるイ
ンタフェースに対する実装
– 例)
• フィルタ
– 標準では、IFilterの実装は、フィルタしないAllPassFilterのみ実装として提供
• S3 Emitter
– バッファリングしたデータを1つのファイルとして指定したS3バケットの直下に
Emitされます
– 階層構造などをとる必要がある場合は、S3Emitter.javaを改修してご利用くださ
い
55
【参考情報】
Blog: CloudWatch Logs Subscription Consumer
+ Elasticsearch + Kibana Dashboards
• VPC Flow LogをKinesis Connector Libraryを経由して
Elasticsearch/Kinabaで可視化する方法の記事
– http://aws.typepad.com/aws_japan/2015/08/cloudwatch-logs-subscription-
consumer-elasticsearch-kibana-dashboards.html
56
CloudWatch
Logs
Kinesis Kinesis
Application
VPC Flow Logs
Elasticsearch
Kibana
AWS Lambda
57
AWS Lambdaとは
イベントをトリガーに独自コードをインフラを意識することなく実行
できるマネージドサービス
AWSサービス / API
からのイベント呼び出し コードの持ち込み オートスケール
Node.js, Java
データ
ソース
PullモデルでLamdaがデータ取得
詳細はこちら
http://www.slideshare.net/AmazonWebServicesJapan/20150701-run-codeinthecloud
58
Kinesis WorkerとしてLambdaを利用する場合のTips
• Shard Iterator Typeは、LatestかTrim horizonのみ指定可能
– LambdaのEvent Sourceの設定で指定
– シーケンス指定での実行ができないのでreplayしたい場合は、Trim horizonのみ
– エラー発生時のリトライ処理は別な仕組みを合わせて検討が必要。例えば、シーケ
ンス番号をSQSなどに格納するなど。
• Kinesisからのデータ取得の最適化は、Batch Sizeで実施。
– デフォルトは、100レコード
– Lambdaでの処理内容に依存するが、レコード数が大きいほうが効率的に処理でき
る
• ShardのSplit, Mergeに追随してLambdaのWorkerが各
Shardからデータ取得を行い、処理してくれる
59
Amazon EMR - Hadoop
60
Amazon EMR - Hadoop
• EMR AMI 3.0.4以上のバージョンからKinesis Integrationが可能
■ 利用用途
• Kinesisに集積されたデータをHive、PigなどのHadoopツールを用いてETL処理(Map
Reduce処理)が可能
• 別のKinesis Stream, S3, DynamoDB, HDFSのHive Tableなどの他のデータソースの
テーブルとJOINすることなども可能
• Data pipeline / Crontabで定期実行することにより、定期的にKinesisからデータを取り
込み、処理することが可能
EMR Cluster S3
Data Pipeline
構成例
DataPipelineで定期的にHiveを実
行しKinesisにあるデータを処理。
結果をS3に格納
Kinesis
61
Amazon EMR - Hadoop
62
実行などは、以下のドキュメント・FAQサイトをみてください
• ドキュメント
– http://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/emr-
kinesis.html
• FAQ
– http://aws.amazon.com/elasticmapreduce/faqs/#kinesis-connector
Kinesis
Stream
EMR Hive
Table
Data Storage
Table Mapping
(Hive利用例)
Amazon EMR – Hadoop : Hiveの例
Hiveテーブル作成
Kinesis Streamを
指定
HQLの実行(例)
通常のHQLを実行するだけ。
内部的には、Kinesisからデー
タを取得し、処理を行う
63
• 一度処理済みのデータをスキップするためにDynamoDBを使ってチェックポイントの管理さ
れる
• Data pipeline / Crontabで定期実行することにより、定期的にKinesisからデータを取り込
み、処理することが可能
Amazon EMR – Hadoop : Hiveの例
64
[Provisioned Capacity]
Read Capacity Units: j*s/5
Write Capacity Units: j*s
(*) j = Num of Job, s = Num of
Shard
Amazon EMR - Spark
65
Amazon EMR - Spark
EMR Cluster
Amazon
Kinesis
センサデータ
PutRecords()
Data
Sources
DStream Spark SQL
Spark Shell
http://spark.apache.org/docs/latest/streaming-kinesis-integration.html66
• Apache SparkをEMRクラスタ上に構築し、Kinesisのデータを収集・処理する
• Apache Spark 1.2.0以上からKCLが実装。
• EMR 4.0.0にApache Spark1.4.1が同梱 ( 2015年8月時点 )
• Spark Streamingでデータ処理を実装
Apache Storm
67
Apache Storm Integration
• Apache Stormをデータ処理として利用するパターン
• Boltをつなげることで高度なデータ処理をリアルタイムで分散処理が可能
• KinesisからApache Stormへのインテグレーションを容易にするためのSpout
を提供
https://github.com/awslabs/kinesis-storm-spout
Data
Sources
Data
Sources
Data
Sources
Storm
Spout
Storm
Bolt
Storm
Bolt
Storm
Bolt
【参考】Apache Storm Integration
AWS Bigdata Blog:
• Amazon KinesisとApache Stormを使ったリアルタイムスライディン
グウィンドウの実装について記述されている
https://blogs.aws.amazon.com/bigdata/post/Tx36LYSCY2R0A9B/Implemen
t-a-Real-time-Sliding-Window-Application-Using-Amazon-Kinesis-and-
Apache
69
その他のパターン
70
Kinesis MapReduceパターン
• Kinesisをパイプラインとして連結するパターン
• FilterやMapReduceを多段Kinesisを用いて実現
• 最初のKinesisは、ピークトラフィックに対応しやすくするためにランダムな値を
パーティションキーとしてセットし、平準化し、次のストリームを生成し、伝送す
る
Data
Sources
Data
Sources
Data
Sources
Kinesis
App
Kinesis
App
Kinesis
App
Kinesis
App
Filter Layer (例) Process Layer (例)
Presto-Amazon Kinesis connector by Qubole
• KinesisのStreamに対
して直接PrestoのSQL
を実行できる
– QuboleというPresto as
a Serviceなら簡単に設
定可能
• チェックポイントを
使ってリアルタイム検
出やダッシュボード等
http://aws.typepad.com/sajp/2015/07/presto-amazon-kinesis-connector-for-interactively-querying-streaming-
data.html
72
Amazon Kinesisの運用
73
CloudWatchによるメトリックスの監視
• CloudWatchを通して以下のメトリックスを取得可能
• Shardの運用に利用することが可能
メトリックス
GetRecords.Bytes GetRecordsで取得されたデータバイト数
GetRecords.IteratorAge GetShardIteratorの有効時間
GetRecords.Latency GetRecordsのレイテンシー
GetRecords.Success GetRecords APIの成功した数
PutRecord.Bytes PutRecordで入力されたデータバイト数
PutRecord.Latency PutRecordのレイテンシー
PutRecord.Success PutRecord APIの成功した数
PutRecords.Bytes PutRecordsで入力されたデータバイト数
PutRecords.Latency PutRecordsのレイテンシー
PutRecords.Success PutRecords APIの成功した数
PutRecords.Records PutRecordsで成功したレコード数
IncomingBytes 指定した期間にPutに成功したデータバイト数
IncomingRecords 指定した期間にPutに成功したレコード数
74
CloudWatchによるメトリックスの監視のポイント
• Shardのキャパシティ(データ入力側 1MB/sec, 1000 TPS、データ処理側
2 MB/sec, 5TPS)を意識する。
– 各APIのProvisionedThroughputExceededExceptionの発生数できないため
キャパシティを意識して監視ポイントを設定する必要がある。(2014年12月
現在)
• 各メトリックスは、Stream単位での値であるため以下の計算式で監視ポイ
ントを設定する
– {Shardキャパシティ上限} x {Shard数} x {監視ポイント(%)}
(例: 80%超えたらShardを追加する場合)
1000TPS x 2Shards x 80%
75
Shardの分割とマージ
• Shardのキャパシティと実際の利用に応じてShardを分割またはマージし
てサービスの拡張とコストの最適化が可能
• SpritShard APIで分割、MergeShards APIでマージすることができる。
– (SpritShard) http://docs.aws.amazon.com/kinesis/latest/APIReference/API_SplitShard.html
– (MergeShards) http://docs.aws.amazon.com/kinesis/latest/APIReference/API_MergeShards.html
AWSEndpoint
Availability
Zone
Shard 1
Shard 2
Shard N
Availabilit
y Zone
Availabilit
y Zone Shard
-1
Shard
-2
Shard
-1
Shard
-2
Shard
-3
Shard
-4
分割
76
SpritShardとMergeShardsの運用例
• 取り扱うデータの特性に合わせてShardを運用する
– Shardは時間単位で課金されるため無駄なく利用するためにSpritとMergeを行うことを
推奨
• 以下は、業務量が多くなる時間帯にShardを分割し、業務が一段落したら
マージする例
77
SpritShard API
• SpritShardでは、担当するハッシュキーのスタートの値を指定する。
conn = KinesisConnection()
descStream = conn.describe_stream(stream_name)
for shard in descStream['StreamDescription']['Shards']:
StartHashKey = shard['HashKeyRange']['StartingHashKey']
EndHashKey = shard['HashKeyRange']['EndingHashKey’]
NewHashKey = (long(EndHashKey) - long(StartHashKey))/2
print "StartHashKey : ", StartHashKey
print "EndHashKey : ", EndHashKey
print "NewHashKey : ", str(NewHashKey)
ret = conn.split_shard(stream_name,targetShard,str(NewHashKey))
Botoを利用した例:1Stream1Shardを半分に分割
StartHashKey : 0
EndHashKey : 340282366920938463463374607431768211455
NewHashKey : 170141183460469231731687303715884105727
上記、実行例)
78
MergeShards API
• MergeShards APIでは、基とするShardとマージされるShardを指定する。
conn = KinesisConnection()
conn.merge_shards(stream_name,targetShard, mergedShard)
Botoを利用した例
79
Amazon Kinesis Scaling Utils
• コマンドラインでShardの管理ができるツール
– https://github.com/awslabs/amazon-kinesis-scaling-utils
java -cp KinesisScalingUtils.jar-complete.jar -Dstream-name=MyStream -
Dscaling-action=scaleUp -Dcount=10 -Dregion=ap-northeast-1
ScalingClient
Options:
stream-name – ストリーム名
scaling-action – スケールアクション "scaleUp”, "scaleDown" or “resize"
count – シャード数
pct – 既存シャードに対する増加減数(%)
region – リージョン
shard-id – ターゲットとするシャードID
80
まとめ
81
簡単管理
リアルタイムストリーミング
のデータ収集、処理のマネー
ジド・サービス
簡単にStreamの構築が可能
リアルタイム
ストリーミングタイプのビッ
クデータの継続処理
数分・数時間のバッチ処理と
比較して数秒以内で処理でき
る
伸縮自在
シームレスにスループット
レートやボリュームを変える
ことができる
ビジネスニーズに合わせてス
ケールのアップ・ダウンが変
更できる
S3, Redshift, &
DynamoDB
インテグレーション
データの収集、変換、処理し、
S3, Redshift及びS3に格納す
ることが容易に可能
リアルタイム処理
アプリケーション
Kinesis Client Libraryを用い
ることで容易にリアルタイム
ストリーミングデータの処理
の実装が可能
Low Cost
あらゆる規模のワークロード
に対してコスト効率が高い
Amazon Kinesis 特徴まとめ
参考資料
• Amazon Kinesis API Reference
– http://docs.aws.amazon.com/kinesis/latest/APIReference/Welcome.html
• Amazon Kinesis Developer Guide
http://docs.aws.amazon.com/kinesis/latest/dev/introduction.html
• Amazon Kinesis Forum
https://forums.aws.amazon.com/forum.jspa?forumID=169#
83
Webinar資料の配置場所
• AWS クラウドサービス活用資料集
– http://aws.amazon.com/jp/aws-jp-introduction/
84
補足資料: 事例紹介
85
株式会社サイバーエージェント様
KinesisをPipelineでつないでデータ運
搬フローの仕組みを実現し、収集基盤と
分析基盤を分離
KCLを使い、ETL処理やRTB配信などの
リアルタイム処理を実現
86
http://media.amazonwebservices.com/jp/summit2015/docs/Dev-07d-Tokyo-
Summit-2015.pdf
リ アルタ イムな処理と バッ チ処理 ~ Overview ~
A d v e r tis in g
S ite Tr a c k in g
A d Tr a c k in g
f eed b a ck
f eed b a ck
ca m p a ig n m a n a g em en t x rep o rtin g f o r A d vertiser
Ru n n in g Sp a rk w ith
YA RN o n EM R Clu ster
リ アルタ イムデータ 処理アプリ ケーショ ンの導入例
a d -ca n d id a te co n su m er
. . .
a d -strea m
. . .
. . .
b id -strea m
. . .
b id -ca n d id a te co n su m er
複数のs tr e a m のデータ を使いたい状況でどう する?
- a d -s tr e a m の流量は 2 ,0 0 0 r p s , s h a r d 数4
- b id -s tr e a m の流量は 4 0 ,0 0 0 r p s , s h a r d 数5 0
ca n d id a te co n su m er
リアルタイムターゲティング広告の
配信・分析基盤にKinesisを利用
株式会社イー・エージェンシー様
Audienceデータをリアルタイムに収集・処理する解析基盤にAmazon Kinesisを利用
用途に応じて、アプリケーションを追加していく
Agilityが高いアーキテクチャを実現
エンジニア2名:4ヶ月で構築
マネージドサービスとSDKを
利用することで圧倒的な早さ
で開発を実現。運用の手間な
く開発にフォーカスでき、ア
プリケーションエンジニアの
みでサービスを構築。
87
あきんどスシロー様
88
回転すしのタグ情報をKinesisを経由してRedshiftに蓄積し、分析することで業務分
析に利用
Ripplation様
ゲームログなどクロスプラットフォームデータ
収集基盤にKinesisを利用
参考資料
http://media.amazonwebservices.com/jp/summit2015/docs/Dev-05s_01-Tokyo-Summit-
JMAS様
アプリの Beacon 対応を簡単・迅速に実現する
法人向けクラウドサービスであるBeacappをAWSを使って実現
設備管理や点検に
出退勤,受付,予約に
行動解析,状況把握に
エリア限定の
機能制限に
ショールーム等の
自動ガイドに
施錠,照明,空調管理に
90
ネビラボ様
14種類のセンサーを選択し、プラグインしたデバイスからMQTTブリッジを経由して
Kinesisにデータを収集、DynamoDBなど他のAWSサービスを使ってセンサーデータ
の保存・可視化に利用
イベント会場 騒音監視システム
騒音
センサー
ぷらっとホーム社
OpenBlocks
IoT BX1
認証:
Amazon Cognito
データ収集:
Amazon Kinesis
レポート登録
- 通知
- ワークフロー
イベントエンジン:
AWS Lambda
リアルタイムモニタ:
Amazon EC2
カスタマイズビュー
3日間:約259,200レコード92
イベント会場の騒音をセンサーを通してKinesisに収集、閾値を超えた場合、kintoneにお知らせ
するデモシステム
Supercell様
93 https://aws.amazon.com/jp/solutions/case-studies/supercell/
MediaMath様 (Marketing Tech )
規模
• 毎日1,200億のイベント
• 最高毎秒2million event
• 30+のAd exchange
• 30 ms avg response time
• 毎日3TB(圧縮後)
MediaMath様のFirehoseと呼ばれる複数の
Kinesis Streamを使ったシステムを作り、バッ
チとリアルタイム処理を実施
データの提供は、S3を利用
94
http://www.slideshare.net/AmazonWebServices/adv303-beating-the-speed-of-light-with-your-infrastructure-
in-aws-aws-reinvent-2014
DataXu様 ( Digital AdTech )
• ペタバイトスケールで、毎秒120万リクエスト
• データはビッドの確認情報, 詐欺行為レコードなど
• 継続的オフライン学習、リアルタイム予測継続的にアルゴリズムを改善
• 複数のプロセシングフレームワーク (The right tool for the right job)
• すべてのデータはS3に保存
95
http://www.slideshare.net/AmazonWebServices/bdt306-missioncritical-stream-processing-with-
amazon-emr-and-amazon-kinesis-aws-reinvent-2014
リアルタイムビディングデータのパイプラインとデータ処理システムを構築
Amazon S3
Amazon
S3
Spark SQL
JDBC Server
Dashboard
Amazon
Redshift
Consumer
Amazon
EMR
Consumer
Game DB
Game
Servers
Kinesis
DynamoDB
DSV
JSON
• イベントのサイズは1KB
• 毎日5億のイベント
• 毎日5GBのデータ(ピーク1TB)
GREE International様
96
http://www.slideshare.net/AmazonWebServices/gam301-realtime-game-analytics-with-amazon-kinesis-amazon-redshift-
and-amazon-dynamodb-aws-reinvent-2014
ゲームサーバ、モバイルデバイス及びアドネットワークからのデータ収集・分析基盤を構
築。データ保存、ニアリアルタイム集計、分析機能を実現

More Related Content

PDF
20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)
PDF
20190821 AWS Black Belt Online Seminar AWS AppSync
PPTX
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
PPTX
20220409 AWS BLEA 開発にあたって検討したこと
PDF
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
PDF
20200623 AWS Black Belt Online Seminar Amazon Elasticsearch Service
PDF
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
PDF
AWS Black Belt Online Seminar 2017 Amazon Kinesis
20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)
20190821 AWS Black Belt Online Seminar AWS AppSync
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
20220409 AWS BLEA 開発にあたって検討したこと
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20200623 AWS Black Belt Online Seminar Amazon Elasticsearch Service
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
AWS Black Belt Online Seminar 2017 Amazon Kinesis

What's hot (20)

PDF
20200630 AWS Black Belt Online Seminar Amazon Cognito
PDF
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
PDF
20191001 AWS Black Belt Online Seminar AWS Lake Formation
PDF
20210119 AWS Black Belt Online Seminar AWS CloudTrail
PDF
AWS Black Belt Online Seminar - Amazon Lightsail
PDF
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
PDF
AWS OpsWorksハンズオン
PDF
20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ...
PDF
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
PDF
Amazon Pinpoint を中心としたカスタマーエンゲージメントの全体像 / Customer Engagement On Amazon Pinpoint
PDF
20190911 AWS Black Belt Online Seminar AWS Batch
PDF
GraphQL入門 (AWS AppSync)
PDF
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
PDF
20200617 AWS Black Belt Online Seminar Amazon Athena
PDF
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
PDF
Infrastructure as Code (IaC) 談義 2022
PDF
20190806 AWS Black Belt Online Seminar AWS Glue
PDF
20190514 AWS Black Belt Online Seminar Amazon API Gateway
PDF
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
PDF
AWS Black Belt Online Seminar 2017 Amazon S3
20200630 AWS Black Belt Online Seminar Amazon Cognito
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
20191001 AWS Black Belt Online Seminar AWS Lake Formation
20210119 AWS Black Belt Online Seminar AWS CloudTrail
AWS Black Belt Online Seminar - Amazon Lightsail
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
AWS OpsWorksハンズオン
20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ...
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
Amazon Pinpoint を中心としたカスタマーエンゲージメントの全体像 / Customer Engagement On Amazon Pinpoint
20190911 AWS Black Belt Online Seminar AWS Batch
GraphQL入門 (AWS AppSync)
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20200617 AWS Black Belt Online Seminar Amazon Athena
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
Infrastructure as Code (IaC) 談義 2022
20190806 AWS Black Belt Online Seminar AWS Glue
20190514 AWS Black Belt Online Seminar Amazon API Gateway
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
AWS Black Belt Online Seminar 2017 Amazon S3
Ad

Viewers also liked (7)

PDF
AWS Black Belt Techシリーズ Amazon Kinesis
PDF
Amazon kinesisで広がるリアルタイムデータプロセッシングとその未来
PDF
Pydata Amazon Kinesisのご紹介
PDF
[AWS初心者向けWebinar] AWSではじめよう、IoTシステム構築
PDF
Search Solutions on AWS
PDF
Amazon Kinesis Analytics によるストリーミングデータのリアルタイム分析
PDF
AWS 初心者向けWebinar Amazon Web Services料金の見積り方法 -料金計算の考え方・見積り方法・お支払方法-
AWS Black Belt Techシリーズ Amazon Kinesis
Amazon kinesisで広がるリアルタイムデータプロセッシングとその未来
Pydata Amazon Kinesisのご紹介
[AWS初心者向けWebinar] AWSではじめよう、IoTシステム構築
Search Solutions on AWS
Amazon Kinesis Analytics によるストリーミングデータのリアルタイム分析
AWS 初心者向けWebinar Amazon Web Services料金の見積り方法 -料金計算の考え方・見積り方法・お支払方法-
Ad

Similar to AWS Black Belt Tech シリーズ 2015 - Amazon Kinesis (20)

PDF
7.9 elasticstackandcloudtechnicalenablement excitingnewfeatures-jpn0827
PDF
Kinesis3 notes
PDF
AWS初心者向けWebinar AWSでBig Data活用
PDF
エンターテイメント業界におけるAWS活用事例
PDF
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
PDF
Amazon Kinesis developersio-meetup-05
PDF
Amazon Web Services 最新事例集
PDF
JAWS DAYS 2015
PDF
Reinvent2017 recap-overview-pdf
PPTX
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
PDF
Database as code in Devops - DBを10分間で1000個構築するDB仮想化テクノロジーとは?(Ishikawa)
PDF
Androidを中心に紐解くIoT
PDF
JCBの Payment as a Service 実現にむけたゼロベースの組織変革とテクニカル・イネーブラー(NTTデータ テクノロジーカンファレンス ...
PPTX
Microsoft Azure build & ignight update summary
PDF
CloudStack Overview(OSC2012Kansai@Kyoto)
PDF
AWS re:Invent 2019 recap For Digital Native Business
PDF
20170413 aws–windows users meetup
PDF
Serverless analytics on aws
PDF
JAWS re:Mote 2015 Nagoya
PDF
Amazon S3を中心とするデータ分析のベストプラクティス
7.9 elasticstackandcloudtechnicalenablement excitingnewfeatures-jpn0827
Kinesis3 notes
AWS初心者向けWebinar AWSでBig Data活用
エンターテイメント業界におけるAWS活用事例
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Amazon Kinesis developersio-meetup-05
Amazon Web Services 最新事例集
JAWS DAYS 2015
Reinvent2017 recap-overview-pdf
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Database as code in Devops - DBを10分間で1000個構築するDB仮想化テクノロジーとは?(Ishikawa)
Androidを中心に紐解くIoT
JCBの Payment as a Service 実現にむけたゼロベースの組織変革とテクニカル・イネーブラー(NTTデータ テクノロジーカンファレンス ...
Microsoft Azure build & ignight update summary
CloudStack Overview(OSC2012Kansai@Kyoto)
AWS re:Invent 2019 recap For Digital Native Business
20170413 aws–windows users meetup
Serverless analytics on aws
JAWS re:Mote 2015 Nagoya
Amazon S3を中心とするデータ分析のベストプラクティス

More from Amazon Web Services Japan (20)

PDF
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
PDF
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
PDF
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
PDF
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
PDF
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
PDF
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
PDF
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
PDF
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
PDF
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
PDF
Amazon QuickSight の組み込み方法をちょっぴりDD
PDF
マルチテナント化で知っておきたいデータベースのこと
PDF
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
PDF
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
PDF
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
PDF
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
PDF
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
PDF
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
PDF
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
PDF
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
PDF
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
Amazon QuickSight の組み込み方法をちょっぴりDD
マルチテナント化で知っておきたいデータベースのこと
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報

AWS Black Belt Tech シリーズ 2015 - Amazon Kinesis