Amazon Managed Service for Apache Flink
Apache Flink をフルマネージドで実行し、Kinesis Data Streams や MSK からのリアルタイムストリームデータを低レイテンシで処理 / 分析するサービス
概要
Amazon Managed Service for Apache Flink (旧 Kinesis Data Analytics) は、Apache Flink アプリケーションをフルマネージドで実行するストリーム処理サービスです。Java、Scala、Python で記述した Flink アプリケーションをデプロイするだけで、クラスターのプロビジョニング、スケーリング、パッチ適用、チェックポイント管理が自動化されます。Kinesis Data Streams、Amazon MSK、S3 などをソースおよびシンクとして使用し、イベントを処理します。
Flink アプリケーションのデプロイとスケーリング
AWS は 2023 年 8 月に、Amazon Kinesis Data Analytics の名称を Amazon Managed Service for Apache Flink に変更したと告知しています。Managed Flink にアプリケーションをデプロイするには、Flink アプリケーションの JAR ファイルまたは ZIP アーカイブを S3 にアップロードし、アプリケーション設定でエントリポイントクラスとランタイム環境を指定します。Apache Flink Studio を使えば、Apache Zeppelin ノートブック上でインタラクティブに SQL クエリを実行し、ストリームデータをリアルタイムで探索 / 分析することも可能です。スケーリングは KPU (Kinesis Processing Unit) 単位で行われ、開発者ガイドでは 1 KPU が 1 vCPU と 4 GB のメモリを提供すると記載されています (2026 年 10 月時点)。自動スケーリングでは、アプリケーションの CPU の使用率に応じて並列度が増減し、それに合わせて KPU 数も変わります。スケーリングの際はアプリケーションのスナップショットが取得され、新しい並列度でステートが復元されます。自動スケーリングで並列度が更新される間は、アプリケーションが一時的に停止します。並列度 (Parallelism) と KPU あたりの並列度 (ParallelismPerKPU) は、ソースのシャード数やパーティション数に合わせて調整します。
チェックポイントと状態管理
Flink のステートフル処理では、ウィンドウ集約やセッション管理などの中間状態をアプリケーション内に保持します。Managed Flink はこの状態を定期的にチェックポイントとして S3 に永続化し、障害発生時にチェックポイントから状態を復元して処理を再開します。既定の設定ではチェックポイント間隔は 60 秒で (2026 年 10 月時点)、設定の種類を CUSTOM にすると変更できます。間隔を短くするとチェックポイントの I/O オーバーヘッドが増加します。状態バックエンドには RocksDB (ディスクベース) があり、メモリに収まらない大きな状態をディスクに置きます。状態バックエンドの種類は、サポートケースで変更を依頼する Flink の設定に含まれます。セーブポイントはユーザーが明示的に取得するスナップショットで、アプリケーションのアップグレードやロジック変更時に状態を引き継ぐために使用します。Managed Flink ではスナップショット API でセーブポイントを取得し、新バージョンのアプリケーションをセーブポイントから起動することで、ステートフルなアプリケーションを、状態を引き継いだままアップグレードできます。
Kinesis / MSK とのソース / シンク統合
Managed Flink の入力ソースには、Kinesis Data Streams や Amazon MSK (Managed Streaming for Apache Kafka) があります。Kinesis ソースでは、Flink の Kinesis Consumer がシャードごとにデータを並列に読み取り、シャード数に合わせて Flink の並列度を設定すると、読み取りを並列に進めやすくなります。MSK ソースでは、Flink の Kafka Consumer がトピックのパーティションからデータを読み取ります。MSK の IAM 認証に対応しており、アクセスキーの管理が不要です。シンク (出力先) には、Apache Flink のシンクコネクターを使って、S3、Kinesis Data Streams、MSK、DynamoDB などに書き込めます。S3 シンクでは、Flink のバケッティング機能で時間やキーに基づいてファイルを分割し、下流の Athena クエリでパーティションプルーニングが効くようにデータを配置します。ウォーターマーク戦略の設定はイベントタイム処理の精度に直結し、遅延データの許容範囲 (Allowed Lateness) を適切に設定しないと、ウィンドウの計算結果が不正確になります。
参考資料 (AWS 公式)
本ページの一次情報は AWS 公式サイトと公式ドキュメントです。最新の仕様と料金は次の公式ページで確認できます。
本ページと公式ドキュメントの記述が食い違う場合は、公式ドキュメントを正としてください。