全般

Q: Amazon Kinesis Data Streams とは何ですか?

Amazon Kinesis Data Streams を使用すると、特定のニーズに合わせてストリーミングデータを処理、分析するカスタムアプリケーションを構築できます。クリックストリーム、アプリケーションログ、ソーシャルメディアなどのさまざまなタイプのデータを何十万ものソースから Amazon Kinesis データストリームに連続して追加できます。ほんの数秒後には、Amazon Kinesis アプリケーションで、ストリームからデータを読み取って処理できます。

Q: Amazon Kinesis Data Streams では何を管理しますか?

Amazon Kinesis Data Streams では、データスループットのレベルでデータをストリーミングするために必要なインフラストラクチャ、ストレージ、ネットワーキング、設定を管理します。データストリームのためのハードウェア、ソフトウェア、その他のサービスのプロビジョニング、デプロイ、継続的なメンテナンスを心配する必要はありません。さらに、Amazon Kinesis Data Streams では、3 つのアベイラビリティーゾーンでデータが同期的にレプリケートされるため、可用性とデータ耐久性が高まります。

Q: Amazon Kinesis Data Streams でできることは何ですか?

Amazon Kinesis Data Streams を使用すると、データプロデューサーからすばやくデータを移動して、連続的にデータを処理し、データストアに送る前にデータを変換したり、メトリクスや分析をリアルタイムで実行したり、他の処理のためにさらに複雑なデータストリームを取得したりできます。以下に示しているのは、Amazon Kinesis Data Streams の典型的なシナリオです。

  • 高速化されたログおよびデータフィードの取得: データがまとまるまで待つのではなく、データプロデューサーでデータが生成されたらすぐに Amazon Kinesis データストリームにデータをプッシュできるため、データプロデューサーで障害が発生してもデータが失われません。例えば、システムログやアプリケーションログを連続的にデータストリームに追加し、すぐに処理できます。
  • リアルタイムのメトリクスとレポート: Amazon Kinesis データストリームのデータからリアルタイムでメトリクスを抽出してレポートを生成できます。例えば、Amazon Kinesis アプリケーションでは、データがストリーミングされると同時にシステムログおよびアプリケーションログのメトリクスやレポートの処理を行うことができ、データバッチを受け取るまで待つ必要はありません。
  • リアルタイムのデータ分析: Amazon Kinesis Data Streams では、ストリーミングデータの分析をリアルタイムで実行できます。例えば、クリックストリームを Amazon Kinesis データストリームに追加し、Amazon Kinesis アプリケーションで分析をリアルタイムに実行することで、時間や日の単位ではなく分単位でデータからインサイトを得ることができます。
  • 複雑なストリーム処理: Amazon Kinesis アプリケーションおよびデータストリームの Directed Acyclic Graph (DAG) を作成できます。このシナリオでは、1 つ以上の Amazon Kinesis アプリケーションがさらに処理を行うために別の Amazon Kinesis データストリームにデータを追加でき、ストリームを連続的な段階で処理できます。

Q: Amazon Kinesis Data Streams を使用するにはどうすればよいですか?

アマゾン ウェブ サービスにサインアップした後、次の方法で Amazon Kinesis Data Streams の使用を開始できます。

Q: Amazon Kinesis Data Streams の制限事項は何ですか?

Amazon Kinesis データストリームのスループットは、データストリーム内のシャードの数を増やすことによって制限なしにスケールするよう設計されています。ただし、Amazon Kinesis Data Streams を使用する際に考慮する必要のある特定の制限があります。

  • デフォルトでは、ストリームのレコードにアクセスできるのは、ストリームに追加された時点から最大 24 時間です。拡張データ保持を有効にすることにより、この制限を最大 7 日間まで上げることができます。
  • 1 つのレコード内のデータ BLOB (Base64 エンコーディング前のデータペイロード) の最大サイズは、1 メガバイト (MB) です。
  • 各シャードは 1 秒あたり最大 1,000 件の PUT レコードをサポートできます。

API レベルの他の制限事項の詳細については、Amazon Kinesis Data Streams の制限を参照してください。

Q: Amazon Kinesis Data Streams と Amazon SQS の違いは何ですか?

Amazon Kinesis Data Streams では、ビッグデータのストリーミングをリアルタイムで処理できます。レコードを並べ替えることができ、複数の Amazon Kinesis アプリケーションに対して同じ順序でレコードを読み取ったり再生したりできます。Amazon Kinesis クライアントライブラリ (KCL) は特定のパーティションキーに対するすべてのレコードを同じレコードプロセッサに提供し、同じ Amazon Kinesis データストリームから読み取る複数のアプリケーションの構築を容易にします (カウント、集計、フィルタリングの実行など)。

Amazon Simple Queue Service (Amazon SQS)は、コンピュータ間でやり取りされるメッセージを格納するための、信頼性のある、拡張性の高い、ホスティングされたキューを提供しています。Amazon SQS を使用すると、分散したアプリケーションコンポーネント間でデータを簡単に移動でき、自動化されたワークフローのようなメッセージレベルでの確認/失敗セマンティクスを備えたメッセージを独立して処理するアプリケーションを構築できます。

Q: Amazon Kinesis Data Streams および Amazon SQS はそれぞれどのような場合に使用しますか?

Amazon Kinesis Data Streams は次のような要件のユースケースにお勧めします。

  • 関連性のあるレコードを同じレコードプロセッサにルーティングする場合 (MapReduce のストリーミングなど) 。たとえば、特定のキーに対するすべてのレコードを同じレコードプロセッサにルーティングすると、カウントや集計が簡単になります。
  • レコードを並べ替える場合。例えば、ログステートメントの順序を維持しながら、アプリケーションホストから処理/アーカイブホストにログデータを転送できます。
  • 複数のアプリケーションが同じストリームを同時に使用する機能。例えば、リアルタイムダッシュボードを更新するアプリケーションと、データを Amazon Redshift にアーカイブするアプリケーションがあるものとします。両方のアプリケーションで、同じストリームからのデータを同時に、独立して使用できます。
  • レコードを数時間後に同じ順序で使用する機能。例えば、請求アプリケーションと、請求アプリケーションから何時間か後に実行する監査アプリケーションがあるものとします。Amazon Kinesis Data Streams ではデータが最大で 7 日間保存されるため、請求アプリケーションより最大 7 日間後に監査アプリケーションを実行できます。

Amazon SQS は次のような要件のユースケースに推奨されます。

  • メッセージングセマンティクス (メッセージレベルの確認/失敗など) および可視性タイムアウト。例えば、作業項目のキューがあり、各項目の正常な完了を個別に追跡するものとします。Amazon SQS は確認/失敗を追跡するので、アプリケーションでは永続的なチェックポイント/カーソルを保持する必要がありません。Amazon SQS は、確認されたメッセージを削除し、失敗したメッセージは設定されている可視性タイムアウトの後で再配信します。
  • 個別メッセージの遅延。例えば、ジョブキューがあり、遅延のある個別のジョブをスケジュールする必要があるものとします。Amazon SQS では、個々のメッセージに最大で 15 分の遅延を設定できます。
  • 読み取り時における同時性/スループットの動的な拡張。例えば、作業キューがあり、バックログが解消されるまでリーダーを追加する必要があるものとします。Amazon Kinesis Data Streams では、十分な数のシャードにスケールアップできます (ただし、前もって十分なシャードをプロビジョニングしておく必要があります)。
  • Amazon SQS の機能を利用した透過的な拡張。例えば、負荷の一時的な上昇や事業の自然な成長の結果として、バッファ要求や負荷が変化するような場合です。各バッファ要求は個別に処理できるので、ユーザーがプロビジョニングを指示しなくても、Amazon SQS は透過的に拡張して負荷を処理できます。

主要な概念

Q: シャードとは何ですか?

シャードとは、Amazon Kinesis データストリームの基本的なスループットの単位です。1 シャードは、1 MB/秒のデータ入力と 2 MB/秒のデータ出力の能力を提供します。1 つのシャードは 1 秒当たり最大 1,000 件の PUT レコードをサポートできます。データストリームを作成するときに、必要なシャードの数を指定します。例えば、2 シャードのデータストリームを作成できます。このデータストリームは、データ入力のスループットが 2 MB/秒、データ出力のスループットが 4 MB/秒で、1 秒間に最大 2,000 件の PUT レコードに対応できます。Amazon Kinesis Data Streams でのシャードレベルのメトリクスをモニタリングし、データストリームのリシャーディングによって、データストリームに対してデータスループットの変化に応じたシャードの追加や削除を動的に実行できます。

Q: レコードとは何ですか?

レコードとは、Amazon Kinesis データストリームに保存されるデータの単位です。レコードは、シーケンス番号、パーティションキー、データ BLOB で構成されています。データ BLOB はデータプロデューサーがデータストリームに追加する、処理対象のデータです。データ BLOB (Base64 エンコーディング前のデータペイロード) の最大サイズは、1 メガバイト (MB) です。

Q: パーティションキーとは何ですか?

パーティションキーは、レコードを分離してデータストリームの異なるシャードにルーティングするために使用されます。パーティションキーは、データを Amazon Kinesis データストリームに追加するときにデータプロデューサーによって指定されます。例えば、2 つのシャード (シャード 1 とシャード 2) で構成されるデータストリームがあるものとします。2 つのパーティションキー (キー A とキー B) を使用し、キー A のレコードはすべてシャード 1 に追加され、キー B のレコードはすべてシャード 2 に追加されるように、データプロデューサーを設定できます。

Q: シーケンス番号とは何ですか?

シーケンス番号とは、各レコードの一意の識別子です。データプロデューサーが PutRecord または PutRecords オペレーションを呼び出してデータを Amazon Kinesis データストリームに追加すると、Amazon Kinesis によってシーケンス番号が割り当てられます。同じパーティションキーのシーケンス番号は一般的に、時間の経過とともに大きくなります。PutRecord または PutRecords リクエスト間の期間が長くなるほど、シーケンス番号は大きくなります。

データストリームの作成

Q: Amazon Kinesis データストリームの作成方法を教えてください。

アマゾン ウェブ サービスにサインアップした後、Amazon Kinesis マネジメントコンソール または CreateStream オペレーションを使用して Amazon Kinesis データストリームを作成できます。

Q: Amazon Kinesis データストリームのスループットはどのように決定されますか?

Amazon Kinesis データストリームのスループットは、データストリーム内のシャードの数によって決まります。次に、データストリームで必要なシャードの数の初期値を推定する手順を説明します。リシャーディングによってデータストリーム内のシャードの数を動的に調整できます。

  1. データストリームに書き込まれるレコードの平均サイズをキロバイト (KB) 単位で推定し、1 KB に最も近い値に切り上げます。(average_data_size_in_KB)
  2. 1 秒あたりにデータストリームに書き込まれるレコード数を推定します。(number_of_records_per_second)
  3. データストリームからのデータを同時に独立して使用する Amazon Kinesis アプリケーションの数を決定します。(number_of_consumers)
  4. 入力書き込み帯域幅の KB 数を計算します (incoming_write_bandwidth_in_KB) 。これは、average_data_size_in_KB と number_of_records_per_seconds を掛け合わせた値です。
  5. 出力読み取り帯域幅の KB 数を計算します (outgoing_read_bandwidth_in_KB) 。これは、incoming_write_bandwidth_in_KB と number_of_consumers を掛け合わせた値です。

その後、次の式を使用してデータストリームで必要な初期シャード数 (number_of_shards) を計算できます。

number_of_shards = max (incoming_write_bandwidth_in_KB/1000, outgoing_read_bandwidth_in_KB/2000)

Q: Amazon Kinesis データストリームに要求できる最小スループットはどれくらいですか?

Amazon Kinesis データストリームのスループットはシャードの単位でスケールします。データストリームの最小スループットは 1 シャードであり、1 MB/秒のデータ入力と 2 MB/秒のデータ出力を提供します。

Q: Amazon Kinesis データストリームに要求できる最大スループットはどれくらいですか?

Amazon Kinesis データストリームのスループットは、制限なしにスケールするよう設計されています。デフォルトでは、各アカウントはリージョンごとに 10 シャードをプロビジョニングできます。Amazon Kinesis Data Streams の制限フォームを使用して、単一リージョン内で 10 より多くのシャードを申請できます。

Q: レコードのサイズは Amazon Kinesis データストリームのスループットにどのように影響しますか?

1 シャードは 1 MB/秒の入力データ速度で、1 秒あたり 1,000 PUT レコードまでをサポートします。したがって、レコードのサイズが 1 KB より小さい場合、シャードの実際のデータ入力速度は 1 MB/秒より小さくなり、1 秒間の PUT レコードの最大数によって制限されます。

Kinesis データストリームへのデータの追加

Q: Amazon Kinesis データストリームにデータを追加するにはどうすればよいですか?

PutRecord および PutRecords オペレーション、Amazon Kinesis Producer Library (KPL) または Amazon Kinesis Agent 経由で、Amazon Kinesis データストリームにデータを追加できます。

Q: PutRecord と PutRecords の違いは何ですか?

PutRecord オペレーションは、1 度の API 呼び出しで単一のデータレコードを許可し、PutRecords オペレーションは、1 度の API 呼び出しで複数のデータレコードを許可します。PutRecord および PutRecords オペレーションの詳細については、PutRecord および PutRecords をご覧ください。

Q: Amazon Kinesis Producer Library (KPL) とは何ですか?

Amazon Kinesis Producer Library (KPL) とは、Amazon Kinesis データストリームにデータを格納するのに役立つ、使いやすく、高度な設定が可能なライブラリです。KPL は、最低限のクライアントリソースを使用して、高いプロデューサースループットを素早く実現できる、シンプルで非同期の、信頼のおけるインターフェイスを提供します。

Q: Amazon Kinesis API にアクセスするにはどのようなプログラミング言語とプラットフォームを使用できますか?

Amazon Kinesis API はアマゾン ウェブ サービス SDK で使用できます。アマゾン ウェブ サービス SDK 用のプログラミング言語またはプラットフォームのリストについては、「Tools for Amazon Web Services」を参照してください。

Q: Amazon Kinesis Producer Library (KPL) では、どのプログラミング言語を使用できますか?

Amazon Kinesis Producer Library (KPL) のコアは、C++ モジュールで構築されており、最近の C++ コンパイラを使用して、任意のプラットフォームで動作するようにコンパイルできます。ライブラリは、現在 Java インターフェイスで利用できます。他のプログラミング言語でのサポートも予定されています。

Q: Amazon Kinesis エージェントとは何ですか?

Amazon Kinesis エージェントは、データの収集および Amazon Kinesis データストリームへのデータの送信を容易にする、ビルド済みの Java アプリケーションです。このエージェントは、ウェブサーバー、ログサーバー、データベースサーバーなど、Linux ベースのサーバー環境にインストールできます。エージェントによって特定のファイルがモニタリングされ、継続的にデータがデータストリームに送られます。詳細については、「Writing with Agents」を参照してください。

Q: Amazon Kinesis エージェントではどのプラットフォームがサポートしていますか?

Amazon Kinesis エージェントでは現在 Amazon Linux または Red Hat Enterprise Linux をサポートしています。

Q: Amazon Kinesis エージェントはどこで入手できますか?

次のコマンドとリンクを使用して Amazon Kinesis エージェントをダウンロードおよびインストールできます。

Amazon Linux の場合: sudo yum install –y aws-kinesis-agent

Red Hat Enterprise Linux の場合: sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn1.noarch.rpm

GitHub から: awlabs/amazon-kinesis-agent

Q: Amazon Kinesis エージェントを使用するにはどうすればよいですか?

Amazon Kinesis エージェントをサーバーにインストールした後、ディスクの特定のファイルをモニタリングし、新しいデータを Amazon Kinesis データストリームに継続的に送信するように設定します。詳細については、「Writing with Agents」を参照してください。

Q: データプロデューサーが Amazon Kinesis データストリームにデータを追加している間にデータストリームの容量制限を超えた場合はどうなりますか?

Amazon Kinesis データストリームの容量制限は、データストリーム内のシャードの数によって決定されます。データスループットまたは PUT レコードの数によって、この制限を超える可能性があります。容量制限を超えている間、PUT データの呼び出しは ProvisionedThroughputExceeded 例外で拒否されます。このような状況がデータストリームの入力データ速度の一時的な上昇によるものである場合は、データプロデューサーが再試行することによって最終的にリクエストは完了します。一方、データストリームの入力データ速度が高い状態が継続している場合は、データストリーム内のシャードの数を増やして、PUT データの呼び出しが常に成功するのに十分な容量を提供する必要があります。いずれの場合も、Amazon CloudWatch メトリクスを使用することで、データストリームの入力データ速度の変化および ProvisionedThroughputExceeded の例外の発生を把握できます。

Q: PutRecord または PutRecords の呼び出しの間の Amazon Kinesis データストリームのデータスループットに対してカウントされるデータは何ですか?

データ BLOB、パーティションキー、およびデータストリーム名が、PutRecord または PutRecords の呼び出しに必要なパラメータです。データ BLOB のサイズ (Base64 エンコーディングの前に)、およびパーティションキーのサイズが、Amazon Kinesis データストリームのデータスループットに対してカウントされます。これは、データストリーム内のシャードの数によって決まります。

拡張ファンアウト

Q: 拡張ファンアウトとは何ですか?

拡張ファンアウトとは、コンシューマーとシャード間に論理的な 2 MB/秒スループットパイプを提供する Kinesis Data Streams コンシューマーのオプション機能です。これにより、並行してデータストリームから読み取るコンシューマーの数を調整しながら、高度なパフォーマンスを維持することができます。

Q: コンシューマーが拡張ファンアウトを使用するにはどうすればよいですか?

コンシューマーはまず、コンシューマー自体を Kinesis Data Streams サービスに登録する必要があります。デフォルトで、コンシューマー登録により拡張ファンアウトが有効化されます。KCL を使用している場合、KCL version 2.x はコンシューマーの登録を自動で行い、コンシューマー名として KCL アプリケーションの名前を使用します。登録されると、すべての登録されたコンシューマーはプロビジョニングされた独自の論理的な拡張ファンアウトスループットを持つようになります。次に、コンシューマーは HTTP/2 SubscribeToShard API を使用して、そのスループットパイプ内のデータを取得します。HTTP/1 GetRecords API は現在、拡張ファンアウトをサポートしていないので、KCL 2.x にアップデートするか、コンシューマーを登録して、SubscribeToShard API を呼び出させる必要があります。

Q: コンシューマーは拡張ファンアウトをどのように使用しますか?

コンシューマーは、SubscribeToShard API でデータを取得することで拡張ファンアウトを利用します。登録されたコンシューマーの名前は SubscribeToShard API 内で使用され、登録コンシューマーに提供される拡張ファンアウトのメリットを享受できます。

Q: いつ拡張ファンアウトを使用すべきですか?
複数のコンシューマーが並行してストリームからデータを取得する場合、またそうした状況が想定される場合、もしくは SubscribeToShard API を使用してプロデューサーとコンシューマー間で sub-200ms のデータ提供速度を提供する必要があるコンシューマーが 1 つ以上ある場合は、拡張ファンアウトを使用する必要があります。

Q: 拡張ファンアウトを使用するコンシューマーと使用しないコンシューマーを持つことはできますか?

はい、拡張ファンアウトを使用する複数のコンシューマーと、拡張ファンアウトを使用しないコンシューマーを同時に持つことができます。拡張ファンアウトの使用は、従来の GetRecords 利用のシャード制限に影響しません。

Q: 任意のストリームで拡張ファンアウトを使用するコンシューマーの数に上限はありますか?

拡張ファンアウトを使用するコンシューマーのデータストリーム当たりの上限数はデフォルトで 5 となっています。5 つ以上を必要とする場合は、AWS サポートに上限引き上げのリクエストを提出してください。ただし、拡張ファンアウトを使用する 5 つのコンシューマーと、拡張ファンアウトを使用しないコンシューマーを同時に持つことで、ストリームから読み取るコンシューマーを合計 5 つ以上持つことができます。

Q: コンシューマーを登録して、拡張ファンアウトと HTTP/2 SubscribeToShard API を使用するにはどうすればよいですか?

コンシューマーを自動的に登録し、拡張ファンアウトと HTTP/2 SubscribeToShard API の両方を使用する KCL 2.x の使用をお勧めします。それ以外の場合は、RegisterStreamConsumer API を使用してコンシューマーを手動で登録し、登録したコンシューマー名で SubscribeToShard API を使用します。

Q: 拡張ファンアウトの使用に費用は発生しますか?

はい、ストリーム内のシャードと拡張ファンアウトを使用する登録コンシューマー (コンシューマー - シャードの時間) の組み合わせに対して時間あたりのオンデマンド費用がかかります。さらに取得した GB に対してデータ取得費用が発生します。詳細は、Kinesis Data Streams の 料金ページをご覧ください。

Q: コンシューマー - シャードの時間はどのように計算しますか?

コンシューマー-シャード時間は、登録されたストリームコンシューマーの数とストリーム内のシャード数を乗算して算出します。例えば、10 シャードデータストリームに対してコンシューマー-シャード時間あたり 0.015 USD の場合、拡張ファンアウトを使用するこのコンシューマーは 10 シャードから読み取ることができ、1 時間あたり 0.15 USD のコンシューマー-シャード時間の請求が発生します (1 コンシューマー x 10 シャード x コンシューマー-シャード時間あたり 0.015 USD)。拡張ファンアウトを使用する登録コンシューマーが 2 つ同時に存在する場合、合計のコンシューマー-シャード時間請求は時間あたり 0.30 USD になります (2 コンシューマー x 10 シャード x 0.015 USD)。

Q: 1 時間以内にコンシューマーを停止または起動した場合、拡張ファンアウトに対するコンシューマー-シャード時間請求は自動的に割り当てられますか?

はい、拡張ファンアウト使用のためにコンシューマーが登録された時間の割合に対してのみ支払いが発生します。

Q: 拡張ファンアウトのデータ取得に対する請求は、どのように行われますか?

拡張ファンアウトを使用するコンシューマーが取得したデータのバイトに対して測定される GB レートを支払います。ペイロードの切り上げや最低データ量はありません。

Q: 拡張ファンアウトを使用するために、プロデューサーまたはデータストリームを変更する必要がありますか?

いいえ、拡張ファンアウトはデータプロデューサーやデータストリームに影響することなく有効化できます。

Kinesis Data Streams からのデータの読み取りと処理

Q: Amazon Kinesis アプリケーションとは何ですか?

Amazon Kinesis アプリケーションとは、Amazon Kinesis データストリームからのデータを読み取って処理するデータコンシューマーです。アプリケーションは、Amazon Kinesis Data AnalyticsAmazon Kinesis API または Amazon Kinesis クライアントライブラリ (KCL) を使用して構築できます。

Q: Amazon Kinesis クライアントライブラリ (KCL) とは何ですか?

Java | Python | Ruby | Node.js | .NET の Amazon Kinesis クライアントライブラリ (KCL) はビルド済みのライブラリであり、これを使用すると Amazon Kinesis データストリームからデータを読み取って処理する Amazon Kinesis アプリケーションを簡単に作成できます。

KCL は、データストリームボリュームの変化への適応、ストリーミングデータの負荷分散、分散サービスの調整、データ処理の耐障害性などの複雑な問題に対応します。KCL を利用することで、アプリケーションの構築中にビジネスロジックに集中できます。KCL 2.x は、HTTP/1 GetRecords と、ストリームからデータを取得する拡張ファンアウトを伴う HTTP/2 SubscribeToShard API の両方をサポートしています。KCL 1.x は SubscribeToShard API または拡張ファンアウトをサポートしていません。

Q: SubscribeToShard と拡張ファンアウトを使用するために KCL 1.x を 2.x へアップグレードするにはどうすればよいですか?

KCL 1.x から 2.x へのアップグレード方法については、Kinesis Data Streams ユーザードキュメントをご覧ください。

Q: SubscribeToShard API とは何ですか?

SubscribeToShard API は、クライアントからのリクエストサイクルを持たない永続的な接続を介してシャードからコンシューマーへデータをプッシュする高性能ストリーミング API です。SubscribeToShard API は新しいデータがシャードに到達すると、HTTP/2 プロトコルを使用して通常 70ms 以内に登録コンシューマーへデータを提供します。GetRecords API に比べて最大 65% 速く提供します。複数の登録されたコンシューマーが同じシャードから読み取ると、コンシューマーはすばやい提供を受けることができます。

Q: 拡張ファンアウトを使用せずに SubscribeToShard を使用することはできますか?

いいえ、SubscribeToShard は拡張ファンアウトの使用を必要とします。つまり、SubscribeToShard を使用するには Kinesis Data Streams サービスにコンシューマーを登録する必要もあります。

Q: SubscribeToShard の永続的な接続はどのくらい継続しますか?

持続した接続は最大 5 分間継続します。

Q: Kinesis クライエントライブラリ (KCL) は SubscribeToShard をサポートしていますか?

はい、KCL の version 2.x は SubscribeToShard と拡張ファンアウトを使用して Kinesis データストリームから高いパフォーマンスでデータを取得します。

Q: SubscribeToShard の使用には費用がかかりますか?

いいえ、SubscribeToShard の使用には追加費用は発生しません。ただし、各コンシューマー-シャードの組み合わせと拡張ファンアウトが提供するデータの GB ごとに追加の時間コストが発生する拡張ファンアウトを使って SubscribeToShard を利用する必要があります。

Q: SubscribeToShard を使用する場合、拡張ファンアウトを使用する必要はありますか?

はい、SubscribeToShard を使用するには、コンシューマーを登録して拡張ファンアウトを有効化する必要があります。デフォルトで、コンシューマーは SubscribeToShard を介してデータを取得するとき、自動的に拡張ファンアウトを利用します。

Q: Amazon Kinesis コネクタライブラリとは何ですか?

Amazon Kinesis コネクタライブラリはビルド済みのライブラリで、これを使用することにより、Amazon Kinesis Data Streams を AWS の他のサービスやサードパーティ製ツールと簡単に統合できるようになります。Java | Python | Ruby | Node.js | .NET の Amazon Kinesis クライアントライブラリ (KCL) は、Amazon Kinesis コネクタライブラリを使用するために必要です。このライブラリの現在のバージョンでは、Amazon DynamoDB、Amazon Redshift、Amazon S3、Elasticsearch に対するコネクタをご利用いただけます。またライブラリには、各タイプのサンプルコネクタと、サンプルを実行するための Apache Ant ビルドファイルも含まれています。

Q: Amazon Kinesis Storm Spout とは何ですか?

Amazon Kinesis Storm Spout はビルド済みのライブラリで、Amazon Kinesis Data Streams と Apache Storm を簡単に統合できます。Amazon Kinesis Storm Spout の現在のバージョンは、Amazon Kinesis データストリームからデータをフェッチし、そのデータをタプルとして送出します。信頼性が高くスケーラブルなストリームキャプチャ、ストレージ、および再生サービスとして Amazon Kinesis Data Streams を活用するには、Spout を Storm トポロジに追加します。

Q: Amazon Kinesis クライアントライブラリ (KCL)、Amazon Kinesis コネクタライブラリ、Amazon Kinesis Storm Spout は、どのようなプログラミング言語で使用できますか?

Amazon Kinesis クライアントライブラリ (KCL) は、現在 Java、Python、Ruby、Node.js、.NET で利用可能です。現在、Amazon Kinesis コネクタライブラリ、Amazon Kinesis Storm Spout は Java で使用できます。他のプログラミング言語でのサポートも予定されています。

Q: Amazon Kinesis アプリケーションには Amazon Kinesis クライアントライブラリ (KCL) を使用する必要があるのですか?

いいえ。Amazon Kinesis API を使用して Amazon Kinesis アプリケーションを構築することもできます。ただし、可能な場合は Java/Python/Ruby/Node.js/.NET の Amazon Kinesis クライアントライブラリ (KCL) を使用することをお勧めします。KCL は分散ストリーム処理に関係する作業量の多いタスクを実行し、Amazon Kinesis アプリケーション開発の生産性を向上させるからです。

Q: Amazon Kinesis クライアントライブラリ (KCL) と Amazon Kinesis アプリケーションとの交信はどのように行われますか?

Java | Python | Ruby | Node.js | .NET の Amazon Kinesis クライアントライブラリ (KCL) が、Amazon Kinesis Data Streams と Amazon Kinesis アプリケーションの間の仲介役として機能します。KCL は IRecordProcessor インターフェイスを使用してアプリケーションと交信します。アプリケーションでこのインターフェイスを実装すると、KCL はこのインターフェイスのメソッドを使用してアプリケーションのコードを呼び出します。

KCL を使用して Amazon Kinesis アプリケーションを構築する方法の詳細については、Developing Consumer Applications for Amazon Kinesis Using the Amazon Kinesis Client Library をご覧ください。

Q: Amazon Kinesis クライアントライブラリ (KCL) によって生成されるワーカーおよびレコードプロセッサとは何ですか?

Amazon Kinesis アプリケーションは複数のアプリケーションインスタンスを持つことができ、ワーカーは各アプリケーションインスタンスに対応する処理ユニットです。レコードプロセッサは、Amazon Kinesis データストリームのシャードからのデータを処理する処理ユニットです。1 つのワーカーは 1 つまたは複数のレコードプロセッサにマッピングされます。1 つのレコードプロセッサは 1 つのシャードに対応し、そのシャードからのデータレコードを処理します。

起動時に、アプリケーションは Java | Python | Ruby | Node.js | .NET の Amazon Kinesis クライアントライブラリ (KCL) を呼び出してワーカーをインスタンス化します。この呼び出しは、アプリケーションの設定情報 (データストリーム名や AWS の認証情報など) を KCL に提供します。また、この呼び出しは IRecordProcessorFactory の実装に対してリファレンスを渡します。KCL はこのファクトリを使用して、データストリームからのデータを処理するために必要に応じて新しいレコードプロセッサを作成します。KCL はこれらのレコードプロセッサと IRecordProcessor インターフェイスを使用して交信します。

Q: Amazon Kinesis クライアントライブラリ (KCL) は Amazon Kinesis アプリケーションによって処理されるデータレコードをどのようにして追跡するのですか?

Java | Python | Ruby | Node.js | .NET の Amazon Kinesis クライアントライブラリ (KCL) は、各 Amazon Kinesis アプリケーションの Amazon DynamoDB テーブルを自動的に作成し、リシャーディングイベントやシーケンス番号チェックポイントなどの状態情報を追跡および管理します。DynamoDB テーブルはアプリケーションと同じ名前であるため、アプリケーションの名前が同じリージョン内の同じアカウントにある既存の DynamoDB テーブルと競合していないことを確認する必要があります。

同じアプリケーション名と関連付けられたすべてのワーカーは、連係して同じ Amazon Kinesis Data Streams を処理していると見なされます。同じアプリケーションコードの追加のインスタンスを別のアプリケーション名で実行する場合、KCL では 2 番目のインスタンスを、同じデータストリームを処理するまったく別のアプリケーションと見なします。

Amazon Kinesis Data Streams に関するコストに加えて、Amazon DynamoDB テーブルに関するコストもアカウントに請求されることに注意してください。

KCL がアプリケーションの状態を追跡する方法の詳細については、Tracking Amazon Kinesis Application stateを参照してください。

Q: Amazon Kinesis クライアントライブラリ (KCL) を使用して Amazon Kinesis アプリケーションの処理能力を自動的にスケールアップする方法を教えてください。

Amazon Kinesis アプリケーションの複数のインスタンスを作成し、これらのアプリケーションインスタンスを Auto Scaling グループの一部である Amazon EC2 インスタンスのセットで実行します。処理の需要が増加すると、アプリケーションインスタンスを実行する Amazon EC2 インスタンスが自動的にインスタンス化されます。Java | Python | Ruby | Node.js | .NET の Amazon Kinesis クライアントライブラリ (KCL) は、この新しいインスタンスのワーカーを生成し、レコードプロセッサを過負荷になった既存のインスタンスからこの新しいインスタンスに自動的に移動します。

Q: Amazon Kinesis データストリーム内にデータがあるのに GetRecords の呼び出しが空の結果を返すのはなぜですか?

可能性のある理由の 1 つは、現在のシャード反復子によって指定されている位置にレコードがないことです。このようなことは、シャード反復子タイプとして TRIM_HORIZON を使用している場合であっても発生する可能性があります。Amazon Kinesis Data Stream はデータの連続したストリームを表します。ループ内で GetRecords オペレーションを呼び出す必要があります。そうすれば、レコードが保存されている位置にシャード反復子が進んだときに、レコードが返されます。

Q: GetRecords オペレーションに返される "ApproximateArrivalTimestamp" とは何ですか?

各レコードには、"ApproximateArrivalTimestamp" と呼ばれる値が含まれています。その値は、レコードが Amazon Kinesis によって正常に受信および保存された時に設定されます。このタイムスタンプにはミリ秒での精度があり、タイムスタンプの精度についての保証はありません。例えば、シャードの中またはデータストリーム全体のレコードには順序が入れ替わっているタイムスタンプがあるかもしれません。

Q: Amazon Kinesis アプリケーションがデータストリームからデータを読み取っている間に Amazon Kinesis データストリームの容量制限を超えた場合はどうなりますか?

Amazon Kinesis データストリームの容量制限は、データストリーム内のシャードの数によって決定されます。データスループットまたは READ データの呼び出しの数によって、この制限を超える可能性があります。容量制限を超えている間、READ データの呼び出しは ProvisionedThroughputExceeded 例外で拒否されます。このような状況がデータストリームの出力データ速度の一時的な上昇によるものである場合は、Amazon Kinesis アプリケーションで再試行されることによって最終的にリクエストは完了します。一方、データストリームの出力データ速度が高い状態が継続している場合は、データストリーム内のシャードの数を増やして、READ データの呼び出しが常に成功するのに十分な容量を提供する必要があります。いずれの場合も、Amazon CloudWatch メトリクスを使用することで、データストリームの出力データ速度の変化および ProvisionedThroughputExceeded 例外の発生を把握できます。

Kinesis Data Streams の管理

Q: Amazon Kinesis データストリームのスループットを変更する方法を教えてください。

データストリームのスループットを変更するには 2 つの方法があります。UpdateShardCount API または AWS マネジメントコンソールを使用して、データストリーム内のシャードの数をスケールするか、データストリーム内のシャードの数を調整 (リシャーディング) することで Amazon Kinesis データストリームのスループットを変更できます。

Q: UpdateShardCount または AWS マネジメントコンソールを使用して Amazon Kinesis データストリームのスループットを変更するには、どれくらい時間がかかりますか?

通常のスケールリクエストの場合は、数分で完了します。大きなスケールリクエストの方が小さいものより長く時間がかかります。

Q: UpdateShardCount の制限事項は何ですか?

UpdateShardCount の制限事項の詳細については、「Amazon Kinesis Data Streams サービスの API リファレンス」を参照してください。

Q: UpdateShardCount またはリシャーディングによって Amazon Kinesis データストリームのスループットを変更している間も、Amazon Kinesis Data Streams を使用できますか?

はい。UpdateShardCount またはリシャーディングによってデータストリームのスループットを変更している間も、Amazon Kinesis データストリームへのデータの追加およびストリームからのデータの読み取りを続けることができます。

Q: リシャーディングとは何ですか?

リシャーディングとは、一連のシャードの分割や結合を使用してデータストリームをスケールするために使用するプロセスのことです。シャードの分割では、1 つのシャードが 2 つのシャードに分割されて、データストリームのスループットが上がります。シャードの結合では、2 つのシャードが 1 つのシャードに結合されて、データストリームのスループットが下がります。詳細については、「Amazon Kinesis Data Streams 開発者ガイド」の「データストリームをリシャーディングするを」参照してください。

Q: リシャーディングによる Amazon Kinesis データストリームのスループットの変更は、どれくらいの頻度で実行でき、どれくらい時間がかかりますか?

シャードの分割や結合などのリシャーディングオペレーションにかかる時間は、数秒間です。一度に実行できるリシャーディングオペレーションは 1 つだけです。したがって、シャードが 1 つのみの Amazon Kinesis データストリームの場合、シャードを分割してスループットを 2 倍にするには数秒かかります。1000 シャードのデータストリームの場合、1000 個のシャードを分割してスループットを 2 倍にするには 30,000 秒 (8.3 時間) かかります。スループットの追加が必要になる場合は、早めにデータストリームのスループットを増やしておくことをお勧めします。

Q: Amazon Kinesis データストリームのデータ保持期間を変更するにはどうすればよいですか?

Amazon Kinesis のデータは、デフォルトで最大 24 時間保存されます。拡張データ保持を有効にすることにより、データ保持期間を最大 7 日間まで延長できます。

データ保持期間の変更に関する詳細は、「データ保持期間を変更する」をご覧ください。

Q: Amazon Kinesis データストリームの動作とパフォーマンスをモニタリングするにはどうすればよいですか?

Amazon Kinesis Data Streams マネジメントコンソールには、Amazon Kinesis データストリームのデータの入力および出力のスループットなど、動作とパフォーマンスの重要なメトリクスが表示されます。また Amazon Kinesis Data Streams は Amazon CloudWatch とも統合できるため、データストリームおよびデータストリーム内のシャードの CloudWatch メトリクスの収集、表示、分析が行えます。Amazon Kinesis Data Streams のメトリクスの詳細については、「Amazon CloudWatch による Amazon Kinesis Data Streams のモニタリング」を参照してください。

すべてのストリームレベルのメトリクスは無料であることにご注意ください。すべての有効なシャードレベルのメトリクスは Amazon CloudWatch 料金で課金されます。

Q: Amazon Kinesis データストリームへのアクセスを管理および制御する方法を教えてください。

Amazon Kinesis Data Streams は、AWS Identity and Access Management (IAM) と統合されています。IAM は、AWS の各種サービスとリソースへのユーザーアクセスを安全に制御するサービスです。例えば、特定のユーザーまたはグループのみが Amazon Kinesis データストリームにデータを追加できるようにするポリシーを作成できます。データストリームのアクセスの管理と制御に関する詳細については、「IAM により Amazon Kinesis Data Streams リソースへのアクセスを制御する」を参照してください。

Q: セキュリティの分析と動作のトラブルシューティングのために Amazon Kinesis データストリームに対して行われた API コールのログを記録する方法を教えてください。

Amazon Kinesis は、ユーザーのアカウントに対する AWS API コールを記録してログファイルを提供するサービスである Amazon CloudTrail と統合できます。API 呼び出しのログおよびサポートされる Amazon Kinesis API のリストの詳細については、「Amazon CloudTrail を使用した Amazon Kinesis API 呼び出しのログ記録」を参照してください。

Q: Amazon Kinesis データストリームおよびデータストリームに関するコストを効率よく管理する方法を教えてください。

Amazon Kinesis Data Streams では、リソースとコストの管理が容易になるように Amazon Kinesis データストリームにタグを付けることができます。タグは、AWS リソースの整理に役立つ、キーと値のペアとして表されるユーザー定義のラベルです。例えば、コストセンター別にデータストリームをタグ付けすることにより、コストセンターに基づいて Amazon Kinesis Data Streams のコストを分類および追跡できます。Amazon Kinesis Data Streams のタグ付けの詳細については、「Amazon Kinesis Data Streams のタグ付け」を参照してください。

Q: シャード制限の利用状況はどのように把握したらよいですか?

アカウントに対するシャード制限の利用状況は、DescribeLimits API を使用して把握できます。DescribeLimits API は、お使いのアカウントのシャード制限と開いているシャードの数を返します。シャード制限を引き上げる必要がある場合は、制限の引き上げをリクエストしてください。

セキュリティ

Q: Kinesis Data Streams を使用すると、データはどれくらい安全ですか?

Kinesis はデフォルトで安全に保護されています。アカウントとデータストリームの所有者のみが、自分が作成した Kinesis リソースにアクセスできます。Kinesis は、データへのアクセスを制御するためにユーザー認証をサポートしています。AWS IAM ポリシーを使用して、ユーザーおよびユーザーのグループに選択的に権限を付与できます。HTTPS プロトコルを使用して SSL エンドポイント経由で、Kinesis からのデータの格納と取得を安全に行うことができます。セキュリティをより高める必要がある場合は、AWS KMS マスターキーでサーバー側の暗号化を使用して、データストリームに保存されているデータを暗号化できます。AWS KMS を使用すると、AWS で生成された KMS マスターキーを暗号化に使用できます。また、必要に応じて、独自のマスターキーを AWS KMS で使用することもできます。最後に、独自の暗号化ライブラリを使用して、データを Kinesis に格納する前にクライアント側のデータを暗号化することができます。

Q: Amazon Virtual Private Cloud (VPC) から Kinesis Data Streams API に、パブリック IP を使用せずにプライベートでアクセスできますか?

はい。VPC エンドポイントを作成すると、Amazon Virtual Private Cloud (VPC) から Kinesis Data Streams API にプライベートでアクセスできます。VPC エンドポイントを使うと、VPC と Kinesis Data Streams の間のルーティングが AWS ネットワークによって処理されます。インターネットゲートウェイ、NAT ゲートウェイ、VPN 接続は必要ありません。Kinesis Data Streams で使用される VPC エンドポイントの最新世代では、AWS PrivateLink が使用されています。AWS PrivateLink は、VPC でのプライベート IP と Elastic Network Interface (ENI) を使用することにより、AWS のサービス間でのプライベート接続を実現するテクノロジーです。PrivateLink の詳細については、「PrivateLink のドキュメント」を参照してください。

暗号化

Q: Kinesis データストリームに格納したデータは暗号化できますか?

はい。Kinesis データストリームに格納したデータを暗号化するには、2 つのオプションがあります。サーバー側の暗号化を使用できます。これは、データストリームからデータの格納と取得を行う際に自動的にデータを暗号化および復号化する、完全に管理された機能です。または、クライアント側で暗号化と復号化を行うとで、暗号化されたデータをデータストリームに書き込むこともできます。

Q: クライアント側の暗号化の代わりにサーバー側の暗号化を使用するのはなぜですか?

お客様がクライアント側の暗号化よりもサーバー側の暗号化を選択することがよくあるのは、次のいずれかの理由によります。

  • クライアント側の暗号化を実施するのが難しい
  • クライアント側の暗号化の上に 2 つ目のセキュリティレイヤーが必要
  • クライアント側の鍵管理スキームを実装するのが難しい

Q: サーバー側の暗号化とは何ですか?

Kinesis Data Streams のサーバー側の暗号化は、ユーザーが指定した AWS KMS マスターキー (CMK) を使用して自動的にデータを暗号化してから、データストリームストレージレイヤーに書き出し、ストレージから取得した後でデータを復号化します。データストリームの書き込みや読み取りを行うユーザーが、データストリームでの暗号化のために選択されたキーを使用する権限を持っている場合を除き、暗号化によって書き込みが不可能になり、ペイロードとパーティションキーは判読不能になります。その結果、サーバー側の暗号化によって、データを管理する社内のセキュリティおよびコンプライアンス要件を容易に満たすことができます。

サーバー側の暗号化を使用すれば、クライアント側のアプリケーション (プロデューサーとコンシューマー) が暗号化を認識する必要がなく、CMK や暗号化操作を管理する必要がありません。データは Kinesis Data Streams サービス内で保管中も移動中も暗号化されています。サーバー側の暗号化機能で使用される CMK はすべて、AWS KMS によって提供されます。AWS KMS を使用すると、AWS で管理された Kinesis 用の CMK (「ワンクリック」暗号化方式)、AWS KMS で生成された独自の CMK、または暗号化のためにインポートした CMK を、簡単に使用できます。

Q: サーバー側の暗号化の入門ガイドはありますか?

はい。ユーザードキュメント中に入門ガイドがあります。

Q: サーバー側の暗号化は、アプリケーションと Kinesis Data Streams とのやり取りに影響しますか?

その可能性はあります。これは、暗号化に使用するキーと、そのキーへのアクセスを制御する権限によって異なります。

  • AWS で管理された Kinesis 用の CMK (キーエイリアス = aws/kinesis) を使用する場合、このキーを使用して暗号化を有効または無効にすることで、アプリケーションは影響を受けません。
  • 独自の AWS KMS マスターキーや AWS KMS サービスにインポートしたマスターキーなどの異なるマスターキーを使用する場合と、データストリームのプロデューサーとコンシューマーが暗号化に使用する AWS KMS CMK を使用する権限を持っていない場合、PUT リクエストと GET リクエストは失敗します。サーバー側の暗号化を使用するには、AWS KMS キーのポリシーを、メッセージの暗号化と復号化を許可するように設定する必要があります。AWS KMS の権限の例と詳細については、「AWS Key Management Service 開発者ガイド」の「 AWS KMS API のアクセス権限: アクションとリソースのリファレンス」、または Kinesis Data Streams の「サーバー側の暗号化のユーザードキュメント」の「アクセス権限のガイドライン」を参照してください。

Q: サーバー側の暗号化の使用に伴って追加料金は発生しますか?

はい。ただし、AWS で管理された Kinesis 用の CMK を使用しており、KMS API 使用料金の無料利用枠を超えていない場合、サーバー側の暗号化の使用は無料です。次に、リソース別のコストについて説明します。

キー:

  • AWS で管理された Kinesis 用の CMK (エイリアス= "aws/kinesis") は無料です。
  • ユーザーが生成した KMS キーは、KMS キー料金の対象となります。詳細はこちらをご覧ください。

KMS API の使用:

  • API 使用料金は、カスタマイズされたものを含め、CMK ごとに適用されます。データキーを更新している場合は、Kinesis Data Streams により約 5 分ごとに KMS が呼び出されます。1 か月を 30 日とした場合、Kinesis データストリームにより開始される KMS API コールの料金の合計は、数ドル未満の金額となります。この料金は、データプロデューサーとデータコンシューマーで使用するユーザー認証情報の数に応じてスケールされます (ユーザー認証情報ごとに AWS KMS に対する一意の API コールが必要なため)。IAM ロールを認証に使用する場合、各 assume-role コールにより一意のユーザー認証情報が生成されます。assume-role コールで返されるユーザー認証情報をキャッシュして、KMS の料金を節約することができます。

Q: Kinesis Data Streams のサーバー側の暗号化は、どの AWS リージョンで利用できますか?

Kinesis Data Streams のサーバー側の暗号化は、AWS GovCloud リージョンと、中国 (北京) リージョンを除くすべてのパブリックリージョンでご利用いただけます。

Q: データストリームからのサーバー側の暗号化を開始、更新、削除するにはどうすればよいですか?

これらの操作はすべて、AWS マネジメントコンソールを使用するか AWS SDK を使用して実行できます。詳細については、「Kinesis Data Streams のサーバー側の暗号化の入門ガイド」を参照してください。

Q: サーバー側の暗号化にはどの暗号化アルゴリズムが使用されていますか?

Kinesis Data Streams は、暗号化に AES-GCM 256 アルゴリズムを使用します。

Q: 既にデータ (プレーンテキストまたは暗号文) が書き込まれているデータストリームを暗号化すると、暗号化を更新した場合にデータストリーム内のすべてのデータが暗号化または復号化されますか?

いいえ。データストリームに新しく書き込まれたデータのみが、新しい暗号化アプリケーションによって暗号化されます (または、復号化されたままになります)。

Q: Kinesis Data Streams のサーバー側の暗号化によって何が暗号化されますか?

サーバー側の暗号化によって、メッセージのペイロードと、データストリームプロデューサーアプリケーションによって指定されたパーティションキーが暗号化されます。

Q: サーバー側の暗号化はシャード固有の機能ですか? それともストリーム固有の機能ですか?

サーバー側の暗号化はストリーム固有の機能です。

Q: 特定のデータストリームを暗号化するために使用する CMK は変更できますか?

はい。AWS マネジメントコンソールまたは AWS SDK を使用すると、特定のデータストリームに適用する新しいマスターキーを選択できます。

Q: データの暗号化ライフサイクルは、サーバー側の暗号化が有効になっている Kinesis データストリームに送信した時点と取得した時点からたどることはできますか?

以下に、Kinesis Data Streams が AWS KMS CMK を使用して、メッセージを暗号化してから PUT パスに保存する方法と、GET パスで取得された後に復号化する方法を示しています。サーバー側の暗号化が有効になっているデータストリームで putRecord (putRecords) または getRecords を呼び出すと、Kinesis と AWS KMS が次のアクション (復号化を含む) を実行します。

  1. お客様の Kinesis プロデューサーアプリケーション (クライアント) から HTTPS 経由で SSL を使用して、データが Kinesis に送信されます。
  2. データは Kinesis で受信されて RAM に格納されます。暗号化はレコードのペイロードとパーティションキーに適用されます。
  3. Kinesis が Input Keying Material (IKM) を要求し、お客様の選択した KMS マスターキーを使用して IKM のコピーが暗号化されます。
  4. AWS KMS が IKM を作成し、マスターキーを使用してそれを暗号化し、プレーンテキストの IKM と暗号化された IKM の両方を Kinesis に送信します。
  5. Kinesis がプレーンテキストの IKM を使用して、レコードごとに固有のデータキーを導出します。
  6. Kinesis がデータキーを使用してペイロードとパーティションキーを暗号化し、メモリからプレーンテキストのキーを削除します。
  7. Kinesis が暗号化されたデータに暗号化された IKM を追加します。
  8. プレーンテキストの IKM は、5 分後に期限が切れるまで再利用のためにメモリにキャッシュされます。
  9. Kinesis が暗号化されたメッセージをバックエンドストアに配信します。ここで、メッセージは getRecords 呼び出しによって取得可能な状態で保管されます。

getRecords を呼び出すと、Kinesis と AWS KMS は次のアクション (復号化を含む) を実行します。

  1. getRecords 呼び出しが行われると、Kinesis のフロントエンドがバックエンドサービスから暗号化されたレコードを取得します。
  2. Kinesis が、お客様のリクエストによって生成されたトークンを使用して KMS にリクエストを行います。AWS KMS がそれを承認します。
  3. Kinesis が、レコードと共に格納されている暗号化された IKM を復号化します。
  4. Kinesis が、復号化された IKM からレコードごとのデータキーを再作成します。
  5. 承認されている場合、Kinesis がペイロードを復号化し、メモリからプレーンテキストのデータキーを削除します。
  6. Kinesis が、レコードをリクエストしている Kinesis のコンシューマー (クライアント) に、SSL および HTTPS を介してペイロードを配信します。

料金と請求

Q: Amazon Kinesis Data Streams は AWS 無料利用枠の対象ですか?

いいえ。現在、Amazon Kinesis Data Streams は AWS 無料利用枠の対象になっていません。AWS 無料利用枠は、AWS サービスのグループの試用を無料で提供するプログラムです。AWS 無料利用枠の詳細については、「AWS Free Tier」を参照してください。

Q: Amazon Kinesis Data Streams の費用はどれくらいですか?

Amazon Kinesis Data Streams ではシンプルな従量課金制を使用しています。前払い料金や最低料金はなく、使用したリソースに対してのみお支払いいただきます。Amazon Kinesis Data Streams のコストには 2 つのコアディメンションおよび 3 つのオプションのディメンションがあります。

  • Amazon Kinesis データストリーム内のシャードの数によって決まる、時間あたりのシャード費用。
  • データプロデューサーがデータストリームに追加する 25 KB のペイロードユニット数によって決まる、PUT ペイロードユニットの費用。

オプション:

  • 拡張データ保持は、データストリームによって発生するシャード時間数に基づいて決まるオプション費用です。拡張データ保持が有効化されている場合、ストリームの各シャードに対する拡張保持レートを支払います。
  • 拡張ファンアウトは、2 つのコストディメンション (コンシューマー-シャード時間とデータ取得) を持つオプション費用です。コンシューマー-シャード時間は、拡張ファンアウトを使用するコンシューマーの数とストリーム内のシャード数を乗算して算出します。データ取得は、拡張ファンアウトを使用するコンシューマーに提供される GB 数によって決まります。 

Amazon Kinesis Data Streams の費用の詳細については、「Amazon Kinesis Data Streams の料金」を参照してください。

Q: PutRecord オペレーションの代わりに PutRecords オペレーションを使用することで、PUT ペイロードユニットの費用は変わりますか?

PUT ペイロードユニットの料金は、Amazon Kinesis データストリームに追加された 25 KB のペイロードユニット数に基づき計算されます。PUT ペイロードユニットの費用は、PutRecords オペレーションでも、PutRecord オペレーションでも同じです。

Q: "CLOSED" 状態にあるシャードに対して請求されますか?

リシャーディングの後、シャードは "CLOSED" 状態になるかもしれません。"CLOSED" 状態のシャードには請求されません。

Q: Amazon Kinesis Data Streams の費用以外に、Amazon Kinesis Data Streams を使用する際に発生する費用はありますか?

Amazon Kinesis アプリケーションを実行するために Amazon EC2 を使用する場合は、Amazon Kinesis Data Streams の費用に加えて Amazon EC2 リソースの費用が請求されます。

Amazon Kinesis クライアントライブラリ (KCL) では、レコード処理の状態情報を追跡するために Amazon DynamoDB テーブルが使用されます。KCL を Amazon Kinesis アプリケーションに使用する場合、Amazon Kinesis Data Streams の費用に加えて Amazon DynamoDB リソースの費用が請求されます。

拡張シャードレベルのメトリクスを有効にする場合、Amazon Kinesis Data Streams の費用に加えて、有効化されたシャードレベルのメトリクスに関連付けられた Amazon CloudWatch の費用が請求されます。

これら 3 つは一般的なケースですが、すべてではないことにご注意ください。

Amazon Kinesis Data Streams の料金の詳細

料金ページにアクセスする
始める準備はできましたか?
サインアップ
ご不明な点がありますか?
お問い合わせ