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

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

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

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

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

Amazon Kinesis Streams を使用すると、データ生成元からすばやくデータを移動して連続的にデータを処理し、データストアに送る前にデータを変換したり、メトリクスや分析をリアルタイムで実行したり、他の処理のためにさらに複雑なデータストリームを取得したりできます。以下に示しているのは、Amazon Kinesis Streams の一般的なユースケースです。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • メッセージングセマンティクス(メッセージレベルの確認/失敗など)および可視性タイムアウト。例えば、作業項目のキューがあり、各項目の正常な完了を個別に追跡するものとします。Amazon SQS は確認/失敗を追跡するので、アプリケーションでは永続的なチェックポイント/カーソルを保持する必要がありません。Amazon SQS は、確認されたメッセージを削除し、失敗したメッセージは設定されている可視性タイムアウトの後で再配信します。
  • 個別メッセージの遅延。例えば、ジョブキューがあり、遅延のある個別のジョブをスケジュールする必要があるものとします。Amazon SQS では、個々のメッセージに最大で 15 分の遅延を設定できます。
  • 読み取り時における同時性/スループットの動的な拡張。例えば、作業キューがあり、バックログが解消されるまでリーダーを追加する必要があるものとします。Amazon Kinesis 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 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 Management Console または Amazon Kinesis CreateStream オペレーションを使用して Amazon Kinesis ストリームを作成できます。

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

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

  1. ストリームに書き込まれるレコードの平均サイズをキロバイト(KB)単位で推定し、最も近い 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_KBnumber_of_records_per_seconds を掛け合わせた値です。
  5. 出力読み取り帯域幅の KB 数を計算します(outgoing_read_bandwidth_in_KB)。これは、incoming_write_bandwidth_in_KBnumber_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 Streams の制限フォームを使用して、単一リージョン内で 10 より多くのシャードを申請できます。

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

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


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

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

Q: PutRecordPutRecords の違いは何ですか?

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 Agent とは何ですか?

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

Q: Amazon Kinesis Agent ではどのプラットフォームがサポートされていますか?

Amazon Kinesis Agent では現在 Amazon Linux または Red Hat Enterprise Linux がサポートされています。

Q: Amazon Kinesis Agent はどこから入手できますか?

次のコマンドを使用して Amazon Kinesis Agent をダウンロード、インストールできます。次のリンクを使用します。

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 Agent を使用するにはどうすればよいですか?

Amazon Kinesis Agent をサーバーにインストールした後、ディスクの特定のファイルを監視するように設定すると、新しいデータを 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: Amazon Kinesis アプリケーションとは何ですか?

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

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

Java/Python/Ruby/Node.js/.NET の Amazon Kinesis クライアントライブラリ (KCL) はビルド済みのライブラリであり、これを使用すると Amazon Kinesis ストリームからデータを読み取って処理する Amazon Kinesis アプリケーションを簡単に作成できます。KCL は、ストリームボリュームの変化への適応、ストリーミングデータの負荷分散、分散サービスの調整、データ処理の耐障害性などの複雑な問題に対応します。KCL を利用することで、アプリケーションの構築中にビジネスロジックに集中できます。

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

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

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

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

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

Amazon Kinesis クライアントライブラリ (KCL) は、現在 JavaPythonRubyNode.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 Streams と Amazon Kinesis アプリケーションの間の仲介役として機能します。KCL は IRecordProcessor インターフェイスを使用してアプリケーションと交信します。アプリケーションでこのインターフェイスを実装すると、KCL はこのインターフェイスのメソッドを使用してアプリケーションのコードを呼び出します。

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

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 ストリームを処理していると見なされます。同じアプリケーションコードの追加のインスタンスを実行するときに、アプリケーション名が異なる場合、KCL は 2 番目のインスタンスを、同じストリームを処理するまったく別のアプリケーションと見なします。

Amazon Kinesis 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 ストリームはデータの連続したストリームを表します。ループ内で GetRecords オペレーションを呼び出す必要があります。そうすれば、データレコードが格納されている位置にシャード反復子が進んだときに、データレコードが返されます。

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

  • Amazon Kinesis ストリーム内のシャードの数によって決まる、時間あたりのシャード費用。
  • データ生成元がストリームに追加する 25 KB のペイロードユニット数によって決まる、PUT ペイロードユニットの費用。
  • オプションの拡張データ保持のコストはストリームにかかったシャード時間によって決まります。 

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

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

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

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

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

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

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

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

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

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