新しいプロジェクトでは、SQL アプリケーション用 Kinesis Data Analytics よりも Apache Flink Studio 用の新しいマネージドサービスを使用することをお勧めします。Apache Flink Studio 向けマネージドサービスは、使いやすさと高度な分析機能を兼ね備えているため、高度なストリーム処理アプリケーションを数分で構築できます。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Kinesis Data Analytics for SQL Applications: 仕組み
注記
2023 年 9 月 12 日以降、SQL 用 Kinesis Data Analytics をまだ使用していない場合、Kinesis Data Firehose をソースとして使用して新しいアプリケーションを作成することはできません。詳細については、「制限」を参照してください。
アプリケーションは、アカウントで作成できる Amazon Kinesis Data Analytics の主要なリソースです。AWS Management Console または Kinesis Data Analytics APIを使用して、アプリケーションを作成および管理できます。Kinesis Data Analytics は、アプリケーションを管理するための API オペレーションを提供します。API オペレーションのリストについては、「アクション」を参照してください。
Kinesis Data Analytics アプリケーションは、ストリーミングデータをリアルタイムで継続的に読み取り、処理します。SQL を使用して、入力ストリーミングデータを処理し、出力を生成するアプリケーションを作成します。次に、Kinesis Data Analytics は、設定した宛先に出力を書き込みます。次の図は、一般的なアプリケーションのアーキテクチャーです。

各アプリケーションには、名前、説明、バージョン ID、ステータスがあります。Amazon Kinesis Data Analytics は、最初にアプリケーションを作成するときに、バージョン ID を割り当てます。このバージョン ID は、アプリケーション設定の更新時に更新されます。たとえば、入力設定の追加、参照データソースの追加または削除、出力設定の追加または削除、またはアプリケーションコードの更新を行うと、Kinesis Data Analytics は現在のアプリケーションバージョン ID を更新します。Kinesis Data Analytics では、アプリケーションが作成され、最後に更新されたときのタイムスタンプも保持されます。
これらの基本プロパティに加えて、各アプリケーションは、以下で構成されます。
-
入力 — アプリケーションのストリーミングソース。Kinesis データストリームまたは Kinesis Data Firehose データ配信ストリームのいずれかをストリーミングソースとして選択できます。入力設定で、アプリケーション内入力ストリームにストリーミングソースをマッピングします。アプリケーション内ストリームは、
SELECT
およびINSERT SQL
オペレーションを実行できる、継続的に更新されるテーブルのようなものです。アプリケーションコードで、中間クエリ結果を保存するための追加のアプリケーション内ストリームを作成することもできます。オプションで、スループットを向上させるために単一のソースストリーミングを複数のアプリケーション内入力ストリームに分割できます。詳細については、「Limits」および「アプリケーション入力の設定」を参照してください。
Amazon Kinesis Data Analytics では、呼び出される各アプリケーションストリームにタイムスタンプ列が表示されます。タイムスタンプと ROWTIME 列この列は時間ベースウィンドウのクエリで使用できます。詳細については、「ウィンドウクエリ」を参照してください。
オプションでリファレンスデータソースを設定してアプリケーション内の入力データストリームを強化できます。これはアプリケーション内リファレンステーブルになります。リファレンスデータは S3 バケット内のオブジェクトとして保存する必要があります。アプリケーションが起動すると、Amazon Kinesis Data Analytics は Amazon S3 オブジェクトを読み取り、アプリケーション内テーブルを作成します。詳細については、「アプリケーション入力の設定」を参照してください。
-
アプリケーションコード — 入力を処理して出力を生成する一連の SQL ステートメント。アプリケーション内ストリームおよびリファレンステーブルに対して SQL ステートメントを書くことができます。また、JOIN クエリを作成してこれらのソース両方からのデータを結合できます。
Kinesis Data Analytics でサポートされている SQL 言語要素については、「Amazon Kinesis Data Analytics SQL リファレンス」を参照してください。
最もシンプルな形式のアプリケーションコードは、ストリーミング入力から選択して結果をストリーミング出力に挿入する単一の SQL ステートメントになります。また、1 つのフィードを出力して次の SQL ステートメントに入力する一連の SQL ステートメントになることもあります。さらに、入力ストリームを複数のストリームに分割するためのアプリケーションコードを書くことができます。その後、これらのストリームを処理するために追加のクエリを適用できます。詳細については、「アプリケーションコード」を参照してください。
-
出力 — アプリケーションコードでは、クエリ結果はアプリケーション内ストリームに送られます。アプリケーションコードでは、中間結果を保存する 1 つ以上のアプリケーション内ストリームを作成することもできます。その後、オプションでアプリケーション出力を設定してアプリケーション内ストリームのデータを永続化し、アプリケーション出力 (アプリケーション内出力ストリームともいいます) を外部宛先に保持します。外部送信先は、Kinesis Data Firehose 配信ストリームでも Kinesis データストリームでもかまいません。これらの宛先について、次の点に注意してください。
-
Amazon S3、Amazon Redshift、 OpenSearch またはアマゾンサービス (サービス) OpenSearch に結果を書き込むように Kinesis Data Firehose デリバリーストリームを設定できます。
-
アプリケーション出力を Amazon S3 や Amazon Redshift の代わりにカスタムデスティネーションに書き込むこともできます。そのためには、出力設定で Kinesis データストリームを宛先として指定します。次に、AWS Lambdaストリームをポーリングして Lambda 関数を呼び出すように設定します。Lambda 関数コードはストリームデータを入力として受け取ります。Lambda 関数コードでは、受信データをカスタム宛先に書き込むことができます。詳細については、「Amazon Kinesis Data Analytics AWS Lambda との併用」を参照してください。
詳細については、「アプリケーション出力の設定」を参照してください。
-
以下の点にも注意してください。
-
Amazon Kinesis Data Analytics には、ストリーミングソースからレコードを読み取り、アプリケーション出力を外部の宛先に書き込むためのアクセス権限が必要です。IAM ロールを使用してこれらの権限を付与します。
-
Kinesis Data Analytics は、各アプリケーションのアプリケーション内エラーストリームを自動的に提供します。特定のレコードの処理中にアプリケーションで問題 (たとえばタイプの不一致や到着の遅延など) が発生した場合、そのレコードはエラーストリームに書き込まれます。Kinesis Data Analytics がエラーストリームデータを外部の宛先に保持してさらに評価できるように指示するようにアプリケーション出力を設定できます。詳細については、「エラー処理」を参照してください。
-
Amazon Kinesis Data Analytics では、アプリケーションの出力レコードが設定された宛先に確実に書き込まれます。アプリケーションが中断された場合ても、配信モデルでは「少なくとも 1 回」処理を使用します。詳細については、「アプリケーション出力を外部宛先で永続化する配信モデル」を参照してください。