Kinesis3 サービスの入力と出力
# Kinesis Data Stream Kinesis Fire horse Kinesis Data Analytics
入
力
基本的には Program を記述
orAgent インストールする。1
シャードあたり 1MB、1000PUT
persecond
 Amazon Kinesis Producer
Library を使用したプロデュ
ーサーの開発
→C++のライブラリ
 Amazon Kinesis Data Streams
API と AWS SDK for Java を
使用したプロデューサーの開
発
→REST ベースの API
 Kinesis エージェントを使用
した Amazon Kinesis Data
Streams への書き込み
→Agent ベース(インストー
ル)の SW
貼り付け元
<https://docs.aws.amazon.com/j
a_jp/streams/latest/dev/building-
producers.html>
 Glue の ETL 処理
AWS SDK で Kinesis データストリ
ーム、Kinesis Agent、または
Kinesis Data Firehose API を使
用できます。また、データソース
として Amazon CloudWatch Logs、
CloudWatch イベント、または AWS
IoT を使用することもできます。
(KPL,KDS API は使用しない)
 Kinesis Data Streams を使用した
Kinesis Data Firehose への書き
込み
 Kinesis エージェントを使用した
Kinesis Data Firehose への書き
込み
 AWS SDK を使用した Kinesis Data
Firehose への書き込み
 CloudWatch Logs を使用した
Kinesis Data Firehose への書き
込み
→Cloud watch logs が S3 にデー
タを書き込む、適切な IAM を設定
し、KFH からこれを読めるように
設定する
 CloudWatch イベント を使用した
Kinesis Data Firehose への書き
込み
→CWE は AWS の API 実行を検知し
トリガを定義できる、その結果を
LOG で受け取れる。これ KDF に利
用できる。
 AWS IoT を使用した Kinesis Data
Firehose への書き込み
 →AWS IoT で受け取ったデータを
KDH に流せる
貼り付け元
<https://docs.aws.amazon.com/ja_jp/
firehose/latest/dev/basic-write.html>
Amazon Kinesis Data
Analytics for SQL
Applications を使用する
と、標準 SQL を使用して、
ストリーミングデータを処
理、分析できます。このサー
ビスでは、時系列分析の実
行、リアルタイムでのダッシ
ュボードへのフィード、リア
ルタイムでのメトリクス作成
を行う強力な SQL コード
を、ストリーミングソースに
対してすぐに作成、実行でき
ます。
Kinesis Data Analytics を
開始するには、ストリーミン
グデータを連続して読み取
り、処理する Kinesis デー
タ分析アプリケーションを作
成します。
サービスでは、Amazon
Kinesis Data Streams およ
び Amazon Kinesis Data
Firehose ストリーミングソ
ースからのデータ取り込みが
サポートされています。その
後、インタラクティブなエデ
ィタを使用して SQL コード
を作成し、ライブストリーミ
ングデータでテストします。
Kinesis Data Analytics で
結果を送信する宛先を設定す
ることもできます。
出
力
普通 1 シャードあたり合計
2MB。HTTP のみ。200ms遅延
拡張ファンアウト 各コンシ
ューマーは、他のコンシュー
マーとは関係なく、シャード
あたりに受け取る独自の読み
取りスループットが最大 2
MB/秒です。HTTP2 がつかえ
る。70ms遅延
 AWS Lambda を使用したコンシ
ューマーの開発
→中間処理参照
様々な配信先を設定できる。
 送信先に Amazon S3 を選択する
 送信先に Amazon Redshift を選
択する
 送信先に Amazon ES を選択する
 送信先の HTTP エンドポイントを
選択
 目的地に Datadog を選択
 目的地に MongoDB クラウドを選択
 送信先に New Relic を選択
 送信先に Splunk を選択する
Kinesis Data Analytics で
は、送信先として Amazon
Kinesis Data Firehose
(Amazon S3、Amazon
Redshift、Amazon
Elasticsearch Service、
Splunk)、AWS Lambda、
Amazon Kinesis Data
Streams がサポートされてい
ます。
 Amazon Kinesis Data
Analytics を使用したコンシ
ューマーの開発
 →DA を参照
 Amazon Kinesis Data
Firehose を使用したコンシュ
ーマーの開発
 →FH を参照
 Kinesis クライアントライブ
ラリの使用
 スループット共有カスタ
ムコンシューマーの開発
 スループット専有 (拡張
ファンアウト) カスタム
コンシューマーの開発
→ライブラリでは
KCL2.0 のみ対応
 コンシューマーを KCL
1.x から KCL 2.x に移
行する
貼り付け元
<https://docs.aws.amazon.com/j
a_jp/streams/latest/dev/building-
consumers.html>
KPL の集約解除のための KCL
の拡張
すでに説明したように、
KPL の集約解除ではサブ
シーケンスチェックポイ
ントを使用できます。サ
ブシーケンスチェックポ
イントを使いやすくする
ために、UserRecord クラ
スが KCL に追加されてい
ます。
public class UserRecord
extends Record {
public long
getSubSequenceNumber() {
/* ... */
}
@Override
public int hashCode() {
/* contract-satisfying
implementation */
}
@Override
public boolean
equals(Object obj) {
/* contract-satisfying
implementation */
貼り付け元
<https://docs.aws.amazon.com/ja_j
p/firehose/latest/dev/create-
destination.html>
バッファについて
設定の構成
 [Configure settings (設定の構
成)] ページで、次のフィールド
に値を入力します。
宛先のバッファ サイズとバッフ
ァ間隔
Kinesis Data Firehose 指定した
宛先に配信する前に、受信データ
をバッファする。Amazon S3、
Amazon Redshift、および Splunk
を選択した宛先として、1 のバッ
ファサイズを選択できます。–128
MiBs、バッファ間隔 60–900 秒。
Amazon Elasticsearch を選択し
た目的地として、1 のバッファサ
イズを選択できます。–100
MiBs、バッファ間隔 60–900 秒。
Datadog や New Relic などの HTTP
エンドポイントの送信先では、1
~64 MiB のバッファサイズと 60
~900 秒のバッファ間隔を選択で
きます。MongoDB クラウドでは、
1~16 MiB のバッファサイズと 60
~900 秒のバッファ間隔を選択で
きます。
注記
宛先の推奨バッファ サイズは、
サービス プロバイダによって異
なります。たとえば、Datadog の
推奨バッファサイズは 4 MiB、
New Relic および MongoDB Cloud
の推奨バッファサイズは 1 MiB で
す。推奨バッファサイズの詳細に
ついては、データ送信先として選
択したエンドポイントを持つサー
ドパーティサービスプロバイダに
お問い合わせください。
重要
HTTP エンドポイント、Datadog、
および New Relic の宛先では、
CloudWatch Logs で宛先エンドポ
イントから 413 の応答コードが表
示されている場合は、配信ストリ
ームのバッファリングヒントサイ
ズを下げて、再試行してくださ
い。
S3 バックアップ・バッファのサ
イズとバッファ間隔
Kinesis Data Firehose Amazon
S3 を使用して、選択した宛先に
配信しようとするすべてのデータ
または障害のあるデータのみをバ
ックアップします。 Kinesis
貼り付け元
<https://docs.aws.amazon.com/ja_jp/k
inesisanalytics/latest/dev/what-
is.html>
バッファの概念はない
}
}
このクラスは、現
在 Record の代わりに使用
されています。 これ
は Record のサブクラスで
あるため、既存のコード
は影響を受けません。 ク
ラスは、実際のサブレコ
ードと通常の集約されて
いないレコードの両方を
表します。UserRecord 集約
されていないレコード
は、サブレコードを 1 つ
だけ含む集約されたレコ
ードと考えることができ
ます。
貼り付け元
<https://docs.aws.amazon.com/j
a_jp/streams/latest/dev/kinesis-
kpl-consumer-
deaggregation.html>
Data Firehose 受信データを
Amazon S3 に配信(バックアップ)
する前にバッファリングします。
バッファサイズは 1~128 MiB、
バッファ間隔は 60~900 秒です。
最初に満足する条件は、Amazon
S3 へのデータ配信をトリガーし
ます。データ変換を有効にする
と、バッファ間隔は、変換された
データが Kinesis Data Firehose
によって受信された時点から
Amazon S3 へのデータ配信に適用
されます。宛先へのデータ配信が
配信ストリームへのデータ書き込
みの背後にある場合、Kinesis
Data Firehose はバッファサイズ
を動的に引き上げてキャッチアッ
プします。このアクションによ
り、すべてのデータが送信先に適
切に配信されます。
S3 圧縮
GZIP、Snappy、Zip、Hadoop 互換
の Snappy データ圧縮、またはデ
ータ圧縮なしを選択します。
Snappy、Zip、Hadoop 互換の
Snappy 圧縮は、 Amazon
Redshift 転送先として
暗号化
Kinesis Data Firehose は、
Amazon S3 に配信されたデータを
暗号化するため、AWS Key
Management Service (AWS KMS)
を使用した Amazon S3 サーバー
側の暗号化をサポートします。デ
ータを暗号化しない選択や、お客
様が所有している AWS KMS キー
のリストのキーを使用した暗号化
の選択が可能です。詳細について
は、「AWS KMS で管理されたキー
によるサーバー側の暗号化 (SSE-
KMS) を使用したデータの保護」
を参照してください。
エラーログ記録
データ変換が有効な場合、
Kinesis Data Firehose では
Lambda 呼び出しをログに記録し
たり、CloudWatch Logs にデータ
配信エラーを送信したりできま
す。Lambda 呼び出しやデータ配
信が失敗した場合は、特定のエラ
ーログを表示することができま
す。詳細については、
「CloudWatch Logs を使用した
Kinesis Data Firehose のモニタ
リング」を参照してください。
IAM ロール。
必要なアクセス許可が自動的に割
り当てられる新しいロールを作成
するか、Kinesis Data Firehose
用に作成された既存のロールを選
択できます。ロールは、S3 バケ
ット、AWS KMS キー (データ暗号
化が有効な場合)、Lambda 関数
(データ変換が有効な場合) に対
するアクセス権限を Kinesis
Data Firehose に付与するために
使用されます。コンソールはプレ
ースホルダーを使ってロールを作
成する可能性があります。で行を
安全に無視したり、削除したりで
きま
す。 %FIREHOSE_BUCKET_NAME%、
%FIREHOSE_DEFAULT_FUNCTION%、
また
は %FIREHOSE_DEFAULT_VERSION%
。 詳細については、以下を参照
してください。 Amazon S3 の送
信先へのアクセス権を Kinesis
Data Firehose に付与する.
貼り付け元
<https://docs.aws.amazon.com/ja_j
p/firehose/latest/dev/create-
configure.html>
中
間
処
理
Lambda 関数は、データストリー
ムのコンシューマーアプリケーシ
ョンです。シャードごとに 1 つ
のレコードのバッチを一度に処理
します。Lambda 関数はデータス
トリーム (標準イテレーター)
か、ストリームのコンシューマー
(拡張ファンアウト) にマッピ
ングすることができます。
貼り付け元
<https://docs.aws.amazon.com/ja_j
p/lambda/latest/dg/with-
kinesis.html>
イベントソースマッピングを作成
し、データストリームから
Lambda 関数にレコードを送信す
るように Lambda に通知します。
複数のイベントソースマッピング
を作成することで、複数の
Lambda 関数で同じデータを処理
したり、1 つの関数で複数のデー
タストリームの項目を処理したり
できます。
貼り付け元
<https://docs.aws.amazon.com/ja_j
p/lambda/latest/dg/with-
kinesis.html>
データ変換フロー
Kinesis Data Firehose データ
変換を有効にすると、Kinesis
Data Firehose はデフォルトで
最大 3 MB まで受信データをバ
ッファします (バッファサイズ
を調整するには、
ProcessingConfiguration API
を BufferSizeInMBs と呼ばれ
る ProcessorParameter と共に使
用します)。次に、Kinesis
Data Firehose は、AWS Lambda
同期呼び出しモードを使用し
て、バッファされた各バッチ
で、指定された Lambda 関数を
非同期的に呼び出します。変換
されたデータは、Lambda から
Kinesis Data Firehose に送信
されます。その後、変換された
データは、指定された送信先の
バッファサイズとバッファ間隔
のいずれかに到達したときに、
Kinesis Data Firehose より送
信先に送信されます。到達順序
は関係ありません。
SQL か Flink を利用できる
「Apache Flink」は、分散
ストリーム処理プラットフ
ォームのひとつの OSS で
す。
同類のモノとしては、
「Apache Storm」や
「Apache Spark
Streaming」などがありま
す(同じ Apache で、さす
がに同類のモノを出し過ぎ
だろう、と私も思っていま
す)。
他のプラットフォームとし
て異なる特長は、以下にな
ります。
 高パフォーマンス&低レイ
テンシ(真のストリーム処
理が可能)
 耐障害性に優れる(自動で
イベント処理継続)
 ストリーム処理、バッチ処
理の両方をサポートし、高
レベルの API が提供される
All-in-One 構成
Kinesis ストリームからレ
コードを読み取るイベント
ソースマッピングは、関数
を同期的に呼び出し、エラ
ー発生時には再試行しま
す。関数がスロットリング
されるか、Lambda サービス
が関数を呼び出さずにエラ
ーを返す場合、Lambda は、
レコードの有効期限が切れ
るか、イベントソースマッ
ピングで設定した最大期間
を超えるまで再試行しま
す。
関数がレコードを受け取る
がエラーを返す場合、
Lambda はバッチ内のレコー
ドの有効期限が切れる、最
大期間を過ぎる、または設
定された再試行のクォータ
に達するまで、再試行しま
す。関数のエラーの場合、
失敗したバッチを 2 つのバ
ッチに分割するようイベン
トソースマッピングを設定
することもできます。より
小さなバッチで再試行する
と、不良レコードが分離さ
れ、タイムアウトの問題を
回避できます。バッチを分
割しても、再試行のクォー
タに対してカウントされま
せん。
エラー処理が失敗する場
合、Lambda はレコードを破
棄し、ストリームからのバ
ッチ処理を継続します。こ
の場合、デフォルト設定で
は、不良レコードが最大
one week まで、影響を受け
たシャードの処理をブロッ
クする可能性があります。
これを回避するには、ユー
スケースに合った適切な数
の再試行数と最大レコード
期間で、関数のイベントソ
ースマッピングを設定しま
す。
貼り付け元
<https://docs.aws.amazon.com/ja_jp/fire
hose/latest/dev/data-
transformation.html>
Kinesis Data Firehose での入力レコ
ード形式の変換
Amazon Kinesis Data Firehose は、
データを Amazon S3 に保存する前
に、入力データ形式を JSON か
ら Apache Parquet また
は Apache ORC に変換できます。
Parquet と ORC は、容量を節約し、
JSON のような行指向の形式に比べ、
より高速なクエリを可能にするカラム
型のデータ形式です。カンマ区切り値
(CSV) や構造化テキストなど、JSON
以外の入力形式を変換する場合は、ま
ず AWS Lambda を使用して JSON に変
換できます。詳細については、
「Amazon Kinesis Data
Firehose のデータ変換」を参照
してください。
貼り付け元
<https://docs.aws.amazon.com/ja_jp/fire
hose/latest/dev/record-format-
conversion.html>
貼り付け元
<https://qiita.com/takanorig/items/
e9880813798f0ac5679d>
貼り付け元
<https://docs.aws.amazon.com/ja_j
p/lambda/latest/dg/with-
kinesis.html>
暗
号
化
AWS Key Management
ServiceAWS KMS) キーを使
用してサーバー側の暗号化
を行うことで、Amazon
Kinesis Data Streams. 内
で保管中のデータを暗号化
して、厳密なデータ管理要
件を簡単に満たすことがで
きます。
サーバー側の暗号化は、ユ
ーザーが指定する Amazon
Kinesis Data Streams カス
タマーマスターキー (CMK)
を使用して、保管中になる
前にデータを自動的に暗号
化する AWS KMS の機能で
す。データは、Kinesis ス
トリームストレージレイヤ
ーに書き込まれる前に暗号
化され、ストレージから取
得された後で復号されま
す。その結果、Kinesis
Data Streams サービス内で
保管中のデータは暗号化さ
れます。これにより、厳格
な規制要件を満たし、デー
タのセキュリティを強化で
きます。
サーバー側の暗号化を使用
すると、Kinesis ストリー
ムプロデューサーとコンシ
ューマーがマスターキーや
暗号化オペレーションを管
理する必要はありません。
データは Kinesis Data
Streams サービスに出入り
するときに自動的に暗号化
されるため、保管中のデー
タは暗号化されています。
AWS KMS は、サーバー側の
暗号化機能で使用されるす
べてのマスターキーを提供
します。AWS KMS により、
AWS で管理される Kinesis
データソースとして Kinesis Data
Streams を使用したサーバー側の
暗号化
Kinesis Data Firehose のデ
ータソースとして Kinesis
データストリームを設定する
と、Kinesis Data Firehose
でデータは保存されなくなり
ます。その代わりに、データ
はデータストリームに保存さ
れます。
データプロシージャのデータ
をデータストリームに送信す
ると、Kinesis Data Streams
は AWS Key Management
Service (AWS KMS) キーを使
用してデータを暗号化してか
ら保存します。Kinesis Data
Firehose 配信ストリームが
データストリームからデータ
を読み取ると、Kinesis Data
Streams はまずデータを復号
してから Kinesis Data
Firehose に送信します。
Kinesis Data Firehose は、
指定したバッファリングのヒ
ントに基づいてデータをメモ
リにバッファします。その
後、暗号化されていないデー
タを保存することなく、送信
先に配信します。
サーバー側の暗号化を有効に
する方法については、
Kinesis Data Streams、参
照 サーバー側暗号化の使
用 を Amazon Kinesis Data
Streams 開発者ガイド.
Direct PUT または他のデータソー
スを使用したサーバー側の暗号化
を使用して配信ストリームに
データを送信する場
合 PutRecord 又
は PutRecordBatch を使用し
てデータを送信する場合、ま
Kinesis Data Analytics でのデ
ータの暗号化
保管時の暗号化
Kinesis Data Analytics
を使用したデータの暗号化
については、以下の点に注
意してください。
 受信する KInesis データストリ
ームのデータは、
StartStreamEncryption を使用
して暗号化できます。詳細につ
いては、「Kinesis Data
Streams 用のサーバー側の暗号
化とは」を参照してください。
 出力データは、保管時に
Kinesis Data Firehose を使用
して暗号化し、暗号化された
Amazon S3 バケットに保存でき
ます。Amazon S3 バケットが使
用する暗号化キーを指定できま
す。詳細については、「AWS KMS
で管理されたキーによるサーバ
ー側の暗号化 (SSE-KMS) を使用
したデータの保護」を参照して
ください。
 アプリケーションのコードは保
管時に暗号化されます。
 アプリケーションの参照データ
は保管時に暗号化されます。
転送中の暗号化
Kinesis Data Analytics
は転送中のすべてのデータ
を暗号化します。転送中の
暗号化は、すべての
Kinesis Data Analytics
アプリケーションで有効に
なり、無効にすることはで
きません。
Kinesis Data Analytics
は以下のシナリオで転送中
のデータを暗号化します。
 Kinesis Data Streams から
Kinesis Data Analytics へ転送
中のデータ。
 Kinesis Data Analytics 内の内
部コンポーネント間で転送中の
データ。
 Kinesis Data Analytics と
Kinesis Data Firehose の間で
転送中のデータ。
キーの管理
用の CMK、ユーザーが指定
した AWS KMS CMK、または
AWS KMS サービスにインポ
ートされたマスターキーを
簡単に使用できます。
貼り付け元
<https://docs.aws.amazon.com/ja_j
p/streams/latest/dev/what-is-
sse.html>
Kinesis Data Stream では、AWS
Key Management Service (KMS)
を使用してデータを暗号化しま
す。AWS 管理のカスタマーマスタ
ーキー (CMK) を選択してデータ
を暗号化するか、カスタマー管理
の CMK を指定できます。
たは AWS IoT、 Amazon
CloudWatch Logs、または
CloudWatch
イベントサーバー側の暗号化
をオンにするに
は、 StartDeliveryStreamEn
cryption 操作。
サーバ側の暗号化を停止する
に
は、 StopDeliveryStreamEnc
ryption 操作。
配信ストリームを作成すると
きに SSE を有効にすること
もできます。そのために
は、 DeliveryStreamEncrypt
ionConfigurationInput 呼び
出すと
き CreateDeliveryStream.
CMK のタイプ
が CUSTOMER_MANAGED_CMK のと
きに、KMSNotFoundException、
KMSInvalidStateException、
KMSDisabledException、また
は KMSAccessDeniedException の
エラーのために Amazon
Kinesis Data Firehose サー
ビスがレコードを復号できな
い場合、問題が解決されるま
でサービスは最大 24 時間
(保持期間) 待機します。保
持期間を超えて問題が解決さ
れない場合、サービスは、保
持期間を超えて復号できなか
ったレコードをスキップし、
データを破棄します。Amazon
Kinesis Data Firehose に
は、AWS KMS の 4 つの例外
を追跡するために使用できる
以下の 4 つの CloudWatch
メトリクスが用意されていま
す。
 KMSKeyAccessDenied
 KMSKeyDisabled
 KMSKeyInvalidState
 KMSKeyNotFound
貼り付け元
<https://docs.aws.amazon.com/ja_jp/
firehose/latest/dev/encryption.html>
Kinesis Data Analytics
のデータ暗号化では、サー
ビスで管理されたキーが使
用されます。カスタマー管
理のキーはサポートされて
いません。
貼り付け元
<https://docs.aws.amazon.com/ja_
jp/kinesisanalytics/latest/dev/data-
protection.html>
Kinesis3 notes

Kinesis3 notes

  • 1.
    Kinesis3 サービスの入力と出力 # KinesisData Stream Kinesis Fire horse Kinesis Data Analytics 入 力 基本的には Program を記述 orAgent インストールする。1 シャードあたり 1MB、1000PUT persecond  Amazon Kinesis Producer Library を使用したプロデュ ーサーの開発 →C++のライブラリ  Amazon Kinesis Data Streams API と AWS SDK for Java を 使用したプロデューサーの開 発 →REST ベースの API  Kinesis エージェントを使用 した Amazon Kinesis Data Streams への書き込み →Agent ベース(インストー ル)の SW 貼り付け元 <https://docs.aws.amazon.com/j a_jp/streams/latest/dev/building- producers.html>  Glue の ETL 処理 AWS SDK で Kinesis データストリ ーム、Kinesis Agent、または Kinesis Data Firehose API を使 用できます。また、データソース として Amazon CloudWatch Logs、 CloudWatch イベント、または AWS IoT を使用することもできます。 (KPL,KDS API は使用しない)  Kinesis Data Streams を使用した Kinesis Data Firehose への書き 込み  Kinesis エージェントを使用した Kinesis Data Firehose への書き 込み  AWS SDK を使用した Kinesis Data Firehose への書き込み  CloudWatch Logs を使用した Kinesis Data Firehose への書き 込み →Cloud watch logs が S3 にデー タを書き込む、適切な IAM を設定 し、KFH からこれを読めるように 設定する  CloudWatch イベント を使用した Kinesis Data Firehose への書き 込み →CWE は AWS の API 実行を検知し トリガを定義できる、その結果を LOG で受け取れる。これ KDF に利 用できる。  AWS IoT を使用した Kinesis Data Firehose への書き込み  →AWS IoT で受け取ったデータを KDH に流せる 貼り付け元 <https://docs.aws.amazon.com/ja_jp/ firehose/latest/dev/basic-write.html> Amazon Kinesis Data Analytics for SQL Applications を使用する と、標準 SQL を使用して、 ストリーミングデータを処 理、分析できます。このサー ビスでは、時系列分析の実 行、リアルタイムでのダッシ ュボードへのフィード、リア ルタイムでのメトリクス作成 を行う強力な SQL コード を、ストリーミングソースに 対してすぐに作成、実行でき ます。 Kinesis Data Analytics を 開始するには、ストリーミン グデータを連続して読み取 り、処理する Kinesis デー タ分析アプリケーションを作 成します。 サービスでは、Amazon Kinesis Data Streams およ び Amazon Kinesis Data Firehose ストリーミングソ ースからのデータ取り込みが サポートされています。その 後、インタラクティブなエデ ィタを使用して SQL コード を作成し、ライブストリーミ ングデータでテストします。 Kinesis Data Analytics で 結果を送信する宛先を設定す ることもできます。 出 力 普通 1 シャードあたり合計 2MB。HTTP のみ。200ms遅延 拡張ファンアウト 各コンシ ューマーは、他のコンシュー マーとは関係なく、シャード あたりに受け取る独自の読み 取りスループットが最大 2 MB/秒です。HTTP2 がつかえ る。70ms遅延  AWS Lambda を使用したコンシ ューマーの開発 →中間処理参照 様々な配信先を設定できる。  送信先に Amazon S3 を選択する  送信先に Amazon Redshift を選 択する  送信先に Amazon ES を選択する  送信先の HTTP エンドポイントを 選択  目的地に Datadog を選択  目的地に MongoDB クラウドを選択  送信先に New Relic を選択  送信先に Splunk を選択する Kinesis Data Analytics で は、送信先として Amazon Kinesis Data Firehose (Amazon S3、Amazon Redshift、Amazon Elasticsearch Service、 Splunk)、AWS Lambda、 Amazon Kinesis Data Streams がサポートされてい ます。
  • 2.
     Amazon KinesisData Analytics を使用したコンシ ューマーの開発  →DA を参照  Amazon Kinesis Data Firehose を使用したコンシュ ーマーの開発  →FH を参照  Kinesis クライアントライブ ラリの使用  スループット共有カスタ ムコンシューマーの開発  スループット専有 (拡張 ファンアウト) カスタム コンシューマーの開発 →ライブラリでは KCL2.0 のみ対応  コンシューマーを KCL 1.x から KCL 2.x に移 行する 貼り付け元 <https://docs.aws.amazon.com/j a_jp/streams/latest/dev/building- consumers.html> KPL の集約解除のための KCL の拡張 すでに説明したように、 KPL の集約解除ではサブ シーケンスチェックポイ ントを使用できます。サ ブシーケンスチェックポ イントを使いやすくする ために、UserRecord クラ スが KCL に追加されてい ます。 public class UserRecord extends Record { public long getSubSequenceNumber() { /* ... */ } @Override public int hashCode() { /* contract-satisfying implementation */ } @Override public boolean equals(Object obj) { /* contract-satisfying implementation */ 貼り付け元 <https://docs.aws.amazon.com/ja_j p/firehose/latest/dev/create- destination.html> バッファについて 設定の構成  [Configure settings (設定の構 成)] ページで、次のフィールド に値を入力します。 宛先のバッファ サイズとバッフ ァ間隔 Kinesis Data Firehose 指定した 宛先に配信する前に、受信データ をバッファする。Amazon S3、 Amazon Redshift、および Splunk を選択した宛先として、1 のバッ ファサイズを選択できます。–128 MiBs、バッファ間隔 60–900 秒。 Amazon Elasticsearch を選択し た目的地として、1 のバッファサ イズを選択できます。–100 MiBs、バッファ間隔 60–900 秒。 Datadog や New Relic などの HTTP エンドポイントの送信先では、1 ~64 MiB のバッファサイズと 60 ~900 秒のバッファ間隔を選択で きます。MongoDB クラウドでは、 1~16 MiB のバッファサイズと 60 ~900 秒のバッファ間隔を選択で きます。 注記 宛先の推奨バッファ サイズは、 サービス プロバイダによって異 なります。たとえば、Datadog の 推奨バッファサイズは 4 MiB、 New Relic および MongoDB Cloud の推奨バッファサイズは 1 MiB で す。推奨バッファサイズの詳細に ついては、データ送信先として選 択したエンドポイントを持つサー ドパーティサービスプロバイダに お問い合わせください。 重要 HTTP エンドポイント、Datadog、 および New Relic の宛先では、 CloudWatch Logs で宛先エンドポ イントから 413 の応答コードが表 示されている場合は、配信ストリ ームのバッファリングヒントサイ ズを下げて、再試行してくださ い。 S3 バックアップ・バッファのサ イズとバッファ間隔 Kinesis Data Firehose Amazon S3 を使用して、選択した宛先に 配信しようとするすべてのデータ または障害のあるデータのみをバ ックアップします。 Kinesis 貼り付け元 <https://docs.aws.amazon.com/ja_jp/k inesisanalytics/latest/dev/what- is.html> バッファの概念はない
  • 3.
    } } このクラスは、現 在 Record の代わりに使用 されています。これ は Record のサブクラスで あるため、既存のコード は影響を受けません。 ク ラスは、実際のサブレコ ードと通常の集約されて いないレコードの両方を 表します。UserRecord 集約 されていないレコード は、サブレコードを 1 つ だけ含む集約されたレコ ードと考えることができ ます。 貼り付け元 <https://docs.aws.amazon.com/j a_jp/streams/latest/dev/kinesis- kpl-consumer- deaggregation.html> Data Firehose 受信データを Amazon S3 に配信(バックアップ) する前にバッファリングします。 バッファサイズは 1~128 MiB、 バッファ間隔は 60~900 秒です。 最初に満足する条件は、Amazon S3 へのデータ配信をトリガーし ます。データ変換を有効にする と、バッファ間隔は、変換された データが Kinesis Data Firehose によって受信された時点から Amazon S3 へのデータ配信に適用 されます。宛先へのデータ配信が 配信ストリームへのデータ書き込 みの背後にある場合、Kinesis Data Firehose はバッファサイズ を動的に引き上げてキャッチアッ プします。このアクションによ り、すべてのデータが送信先に適 切に配信されます。 S3 圧縮 GZIP、Snappy、Zip、Hadoop 互換 の Snappy データ圧縮、またはデ ータ圧縮なしを選択します。 Snappy、Zip、Hadoop 互換の Snappy 圧縮は、 Amazon Redshift 転送先として 暗号化 Kinesis Data Firehose は、 Amazon S3 に配信されたデータを 暗号化するため、AWS Key Management Service (AWS KMS) を使用した Amazon S3 サーバー 側の暗号化をサポートします。デ ータを暗号化しない選択や、お客 様が所有している AWS KMS キー のリストのキーを使用した暗号化 の選択が可能です。詳細について は、「AWS KMS で管理されたキー によるサーバー側の暗号化 (SSE- KMS) を使用したデータの保護」 を参照してください。 エラーログ記録 データ変換が有効な場合、 Kinesis Data Firehose では Lambda 呼び出しをログに記録し たり、CloudWatch Logs にデータ 配信エラーを送信したりできま す。Lambda 呼び出しやデータ配 信が失敗した場合は、特定のエラ ーログを表示することができま す。詳細については、 「CloudWatch Logs を使用した Kinesis Data Firehose のモニタ リング」を参照してください。 IAM ロール。 必要なアクセス許可が自動的に割 り当てられる新しいロールを作成
  • 4.
    するか、Kinesis Data Firehose 用に作成された既存のロールを選 択できます。ロールは、S3バケ ット、AWS KMS キー (データ暗号 化が有効な場合)、Lambda 関数 (データ変換が有効な場合) に対 するアクセス権限を Kinesis Data Firehose に付与するために 使用されます。コンソールはプレ ースホルダーを使ってロールを作 成する可能性があります。で行を 安全に無視したり、削除したりで きま す。 %FIREHOSE_BUCKET_NAME%、 %FIREHOSE_DEFAULT_FUNCTION%、 また は %FIREHOSE_DEFAULT_VERSION% 。 詳細については、以下を参照 してください。 Amazon S3 の送 信先へのアクセス権を Kinesis Data Firehose に付与する. 貼り付け元 <https://docs.aws.amazon.com/ja_j p/firehose/latest/dev/create- configure.html> 中 間 処 理 Lambda 関数は、データストリー ムのコンシューマーアプリケーシ ョンです。シャードごとに 1 つ のレコードのバッチを一度に処理 します。Lambda 関数はデータス トリーム (標準イテレーター) か、ストリームのコンシューマー (拡張ファンアウト) にマッピ ングすることができます。 貼り付け元 <https://docs.aws.amazon.com/ja_j p/lambda/latest/dg/with- kinesis.html> イベントソースマッピングを作成 し、データストリームから Lambda 関数にレコードを送信す るように Lambda に通知します。 複数のイベントソースマッピング を作成することで、複数の Lambda 関数で同じデータを処理 したり、1 つの関数で複数のデー タストリームの項目を処理したり できます。 貼り付け元 <https://docs.aws.amazon.com/ja_j p/lambda/latest/dg/with- kinesis.html> データ変換フロー Kinesis Data Firehose データ 変換を有効にすると、Kinesis Data Firehose はデフォルトで 最大 3 MB まで受信データをバ ッファします (バッファサイズ を調整するには、 ProcessingConfiguration API を BufferSizeInMBs と呼ばれ る ProcessorParameter と共に使 用します)。次に、Kinesis Data Firehose は、AWS Lambda 同期呼び出しモードを使用し て、バッファされた各バッチ で、指定された Lambda 関数を 非同期的に呼び出します。変換 されたデータは、Lambda から Kinesis Data Firehose に送信 されます。その後、変換された データは、指定された送信先の バッファサイズとバッファ間隔 のいずれかに到達したときに、 Kinesis Data Firehose より送 信先に送信されます。到達順序 は関係ありません。 SQL か Flink を利用できる 「Apache Flink」は、分散 ストリーム処理プラットフ ォームのひとつの OSS で す。 同類のモノとしては、 「Apache Storm」や 「Apache Spark Streaming」などがありま す(同じ Apache で、さす がに同類のモノを出し過ぎ だろう、と私も思っていま す)。 他のプラットフォームとし て異なる特長は、以下にな ります。  高パフォーマンス&低レイ テンシ(真のストリーム処 理が可能)  耐障害性に優れる(自動で イベント処理継続)  ストリーム処理、バッチ処 理の両方をサポートし、高 レベルの API が提供される All-in-One 構成
  • 5.
    Kinesis ストリームからレ コードを読み取るイベント ソースマッピングは、関数 を同期的に呼び出し、エラ ー発生時には再試行しま す。関数がスロットリング されるか、Lambda サービス が関数を呼び出さずにエラ ーを返す場合、Lambdaは、 レコードの有効期限が切れ るか、イベントソースマッ ピングで設定した最大期間 を超えるまで再試行しま す。 関数がレコードを受け取る がエラーを返す場合、 Lambda はバッチ内のレコー ドの有効期限が切れる、最 大期間を過ぎる、または設 定された再試行のクォータ に達するまで、再試行しま す。関数のエラーの場合、 失敗したバッチを 2 つのバ ッチに分割するようイベン トソースマッピングを設定 することもできます。より 小さなバッチで再試行する と、不良レコードが分離さ れ、タイムアウトの問題を 回避できます。バッチを分 割しても、再試行のクォー タに対してカウントされま せん。 エラー処理が失敗する場 合、Lambda はレコードを破 棄し、ストリームからのバ ッチ処理を継続します。こ の場合、デフォルト設定で は、不良レコードが最大 one week まで、影響を受け たシャードの処理をブロッ クする可能性があります。 これを回避するには、ユー スケースに合った適切な数 の再試行数と最大レコード 期間で、関数のイベントソ ースマッピングを設定しま す。 貼り付け元 <https://docs.aws.amazon.com/ja_jp/fire hose/latest/dev/data- transformation.html> Kinesis Data Firehose での入力レコ ード形式の変換 Amazon Kinesis Data Firehose は、 データを Amazon S3 に保存する前 に、入力データ形式を JSON か ら Apache Parquet また は Apache ORC に変換できます。 Parquet と ORC は、容量を節約し、 JSON のような行指向の形式に比べ、 より高速なクエリを可能にするカラム 型のデータ形式です。カンマ区切り値 (CSV) や構造化テキストなど、JSON 以外の入力形式を変換する場合は、ま ず AWS Lambda を使用して JSON に変 換できます。詳細については、 「Amazon Kinesis Data Firehose のデータ変換」を参照 してください。 貼り付け元 <https://docs.aws.amazon.com/ja_jp/fire hose/latest/dev/record-format- conversion.html> 貼り付け元 <https://qiita.com/takanorig/items/ e9880813798f0ac5679d>
  • 6.
    貼り付け元 <https://docs.aws.amazon.com/ja_j p/lambda/latest/dg/with- kinesis.html> 暗 号 化 AWS Key Management ServiceAWSKMS) キーを使 用してサーバー側の暗号化 を行うことで、Amazon Kinesis Data Streams. 内 で保管中のデータを暗号化 して、厳密なデータ管理要 件を簡単に満たすことがで きます。 サーバー側の暗号化は、ユ ーザーが指定する Amazon Kinesis Data Streams カス タマーマスターキー (CMK) を使用して、保管中になる 前にデータを自動的に暗号 化する AWS KMS の機能で す。データは、Kinesis ス トリームストレージレイヤ ーに書き込まれる前に暗号 化され、ストレージから取 得された後で復号されま す。その結果、Kinesis Data Streams サービス内で 保管中のデータは暗号化さ れます。これにより、厳格 な規制要件を満たし、デー タのセキュリティを強化で きます。 サーバー側の暗号化を使用 すると、Kinesis ストリー ムプロデューサーとコンシ ューマーがマスターキーや 暗号化オペレーションを管 理する必要はありません。 データは Kinesis Data Streams サービスに出入り するときに自動的に暗号化 されるため、保管中のデー タは暗号化されています。 AWS KMS は、サーバー側の 暗号化機能で使用されるす べてのマスターキーを提供 します。AWS KMS により、 AWS で管理される Kinesis データソースとして Kinesis Data Streams を使用したサーバー側の 暗号化 Kinesis Data Firehose のデ ータソースとして Kinesis データストリームを設定する と、Kinesis Data Firehose でデータは保存されなくなり ます。その代わりに、データ はデータストリームに保存さ れます。 データプロシージャのデータ をデータストリームに送信す ると、Kinesis Data Streams は AWS Key Management Service (AWS KMS) キーを使 用してデータを暗号化してか ら保存します。Kinesis Data Firehose 配信ストリームが データストリームからデータ を読み取ると、Kinesis Data Streams はまずデータを復号 してから Kinesis Data Firehose に送信します。 Kinesis Data Firehose は、 指定したバッファリングのヒ ントに基づいてデータをメモ リにバッファします。その 後、暗号化されていないデー タを保存することなく、送信 先に配信します。 サーバー側の暗号化を有効に する方法については、 Kinesis Data Streams、参 照 サーバー側暗号化の使 用 を Amazon Kinesis Data Streams 開発者ガイド. Direct PUT または他のデータソー スを使用したサーバー側の暗号化 を使用して配信ストリームに データを送信する場 合 PutRecord 又 は PutRecordBatch を使用し てデータを送信する場合、ま Kinesis Data Analytics でのデ ータの暗号化 保管時の暗号化 Kinesis Data Analytics を使用したデータの暗号化 については、以下の点に注 意してください。  受信する KInesis データストリ ームのデータは、 StartStreamEncryption を使用 して暗号化できます。詳細につ いては、「Kinesis Data Streams 用のサーバー側の暗号 化とは」を参照してください。  出力データは、保管時に Kinesis Data Firehose を使用 して暗号化し、暗号化された Amazon S3 バケットに保存でき ます。Amazon S3 バケットが使 用する暗号化キーを指定できま す。詳細については、「AWS KMS で管理されたキーによるサーバ ー側の暗号化 (SSE-KMS) を使用 したデータの保護」を参照して ください。  アプリケーションのコードは保 管時に暗号化されます。  アプリケーションの参照データ は保管時に暗号化されます。 転送中の暗号化 Kinesis Data Analytics は転送中のすべてのデータ を暗号化します。転送中の 暗号化は、すべての Kinesis Data Analytics アプリケーションで有効に なり、無効にすることはで きません。 Kinesis Data Analytics は以下のシナリオで転送中 のデータを暗号化します。  Kinesis Data Streams から Kinesis Data Analytics へ転送 中のデータ。  Kinesis Data Analytics 内の内 部コンポーネント間で転送中の データ。  Kinesis Data Analytics と Kinesis Data Firehose の間で 転送中のデータ。 キーの管理
  • 7.
    用の CMK、ユーザーが指定 した AWSKMS CMK、または AWS KMS サービスにインポ ートされたマスターキーを 簡単に使用できます。 貼り付け元 <https://docs.aws.amazon.com/ja_j p/streams/latest/dev/what-is- sse.html> Kinesis Data Stream では、AWS Key Management Service (KMS) を使用してデータを暗号化しま す。AWS 管理のカスタマーマスタ ーキー (CMK) を選択してデータ を暗号化するか、カスタマー管理 の CMK を指定できます。 たは AWS IoT、 Amazon CloudWatch Logs、または CloudWatch イベントサーバー側の暗号化 をオンにするに は、 StartDeliveryStreamEn cryption 操作。 サーバ側の暗号化を停止する に は、 StopDeliveryStreamEnc ryption 操作。 配信ストリームを作成すると きに SSE を有効にすること もできます。そのために は、 DeliveryStreamEncrypt ionConfigurationInput 呼び 出すと き CreateDeliveryStream. CMK のタイプ が CUSTOMER_MANAGED_CMK のと きに、KMSNotFoundException、 KMSInvalidStateException、 KMSDisabledException、また は KMSAccessDeniedException の エラーのために Amazon Kinesis Data Firehose サー ビスがレコードを復号できな い場合、問題が解決されるま でサービスは最大 24 時間 (保持期間) 待機します。保 持期間を超えて問題が解決さ れない場合、サービスは、保 持期間を超えて復号できなか ったレコードをスキップし、 データを破棄します。Amazon Kinesis Data Firehose に は、AWS KMS の 4 つの例外 を追跡するために使用できる 以下の 4 つの CloudWatch メトリクスが用意されていま す。  KMSKeyAccessDenied  KMSKeyDisabled  KMSKeyInvalidState  KMSKeyNotFound 貼り付け元 <https://docs.aws.amazon.com/ja_jp/ firehose/latest/dev/encryption.html> Kinesis Data Analytics のデータ暗号化では、サー ビスで管理されたキーが使 用されます。カスタマー管 理のキーはサポートされて いません。 貼り付け元 <https://docs.aws.amazon.com/ja_ jp/kinesisanalytics/latest/dev/data- protection.html>