Managed Service for Apache Flink アプリケーションの作成 - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink は、以前は Amazon Kinesis Data Analytics for Apache Flink と呼ばれていました。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Managed Service for Apache Flink アプリケーションの作成

このトピックには、Apache Flink 用 Managed Service の作成に関する情報が含まれています。

Managed Service for Apache Flink アプリケーションコードの構築

このセクションでは、Managed Service for Apache Flink アプリケーションのアプリケーションコードの構築に使用するコンポーネントについて説明します。

アプリケーションコードに対してサポートされている最新バージョンの Apache Flink を使用することをお勧めします。Apache Flink アプリケーション用 Managed Service のアップグレードについては、 を参照してください。

アプリケーションコードは「Apache Maven」を使用してビルドします。Apache Maven プロジェクトは「pom.xml」ファイルを使用して、使用するコンポーネントのバージョンを指定します。

注記

Apache Flink 用 Managed Service は、最大 512 MB の JAR ファイルをサポートします。これより大きい JAR ファイルを使用すると、アプリケーションは起動に失敗します。

アプリケーションが Scala の任意のバージョンから Java API を使用できるようになっています。選択した Scala 標準ライブラリを Scala アプリケーションにバンドルする必要があります。

Apache Beam」を使用する Apache Flink アプリケーション用 Managed Service の作成については、 Apache Beams の使用 を参照してください。

Apache Flink Runtime バージョン 1.1.0 以降の Managed Service を使用する場合は、アプリケーションをコンパイルするときにアプリケーションが使用する Apache Flink のバージョンを指定します。-Dflink.version パラメータを使用して Apache Flink のバージョンを指定します。例えば、Apache Flink 1.19.1 を使用している場合は、以下を指定します。

mvn package -Dflink.version=1.19.1

以前のバージョンの Apache Flink を使用してアプリケーションを構築する方法については、「」を参照してください以前のバージョン

Managed Service for Apache Flink アプリケーションの作成

アプリケーションコードを作成したら、以下を実行して Managed Service for Apache Flink アプリケーションを作成します。

  • アプリケーションコードのアップロード:」アプリケーションコードを Amazon S3 バケットにアップロードします。アプリケーションを作成する際は、アプリケーションコードの S3 バケット名とオブジェクト名を指定します。アプリケーションコードのアップロード方法を示すチュートリアルについては、 開始方法 (DataStream API) チュートリアルの Apache Flink ストリーミング Java コードをアップロードする を参照してください。

  • Apache Flink アプリケーション用 Managed Service の作成」:以下のいずれかの方法を使用して Apache Flink アプリケーション用 Managed Service を作成します。

    • AWS コンソールを使用して Managed Service for Apache Flink アプリケーションを作成する: AWS コンソールを使用してアプリケーションを作成および設定できます。

      コンソールを使用してアプリケーションを作成すると、アプリケーションの依存リソース ( CloudWatch ログストリーム、IAM ロール、IAM ポリシーなど) が自動的に作成されます。

      コンソールを使用してアプリケーションを作成する場合、「Apache Flink 用 Managed Service - アプリケーションの作成」ページのプルダウンから選択して、アプリケーションが使用する Apache Flink のバージョンを指定します。

      コンソールを使用してアプリケーションを作成する方法に関するチュートリアルについては、「開始方法 (DataStream API)」チュートリアルの「アプリケーションの作成と実行 (コンソール)」を参照してください。

    • AWS CLI を使用して Managed Service for Apache Flink アプリケーションを作成する: AWS CLI を使用してアプリケーションを作成および設定できます。

      CLI を使用してアプリケーションを作成する場合は、アプリケーションの依存リソース ( CloudWatch ログストリーム、IAM ロール、IAM ポリシーなど) も手動で作成する必要があります。

      CLI を使用してアプリケーションを作成する場合、 CreateApplication アクションの RuntimeEnvironment パラメータを使用して、アプリケーションが使用する Apache Flink のバージョンを指定します。

      CLI を使用してアプリケーションを作成する方法に関するチュートリアルについては、 開始方法 (DataStream API) チュートリアルの アプリケーションの作成と実行 (AWS CLI) を参照してください。

    注記

    既存のアプリケーションの RuntimeEnvironment を変更できます。この方法の詳細は、Apache Flink のインプレースバージョンアップグレードを参照してください。

Managed Service for Apache Flink アプリケーションの起動

アプリケーションコードを作成し、S3 にアップロードし、Apache Flink アプリケーション用 Managed Service を作成したら、アプリケーションを起動します。Apache Flink 用 Managed Service アプリケーションの起動には、通常数分かかります。

アプリケーションを起動するには、以下のいずれかの方法を使用します。

  • AWS コンソールを使用して Managed Service for Apache Flink アプリケーションを起動する: AWS コンソールのアプリケーションのページで実行を選択して、アプリケーションを実行できます。

  • AWS API を使用して Managed Service for Apache Flink アプリケーションを起動します。 StartApplicationアクションを使用してアプリケーションを実行できます。

Managed Service for Apache Flink アプリケーションの検証

アプリケーションが動作していることを確認するには、次の方法があります。

  • CloudWatch ログの使用: CloudWatch Logs と Logs Insights CloudWatch を使用して、アプリケーションが正しく実行されていることを確認できます。Managed Service for Apache Flink アプリケーションで CloudWatch ログを使用する方法については、「」を参照してくださいロギングとモニタリング

  • CloudWatch メトリクスの使用: CloudWatch メトリクスを使用して、アプリケーションのアクティビティ、またはアプリケーションが入力または出力に使用するリソース (Kinesis ストリーム、Firehose ストリーム、Amazon S3 バケットなど) のアクティビティをモニタリングできます。 CloudWatch メトリクスの詳細については、「Amazon ユーザーガイド」の「メトリクスの使用 CloudWatch 」を参照してください。

  • 出力ロケーションのモニタリング:」アプリケーションが出力を特定のロケーション (Amazon S3 バケットやデータベースなど) に書き込む場合、そのロケーションに書き込まれたデータを監視できます。

Managed Service for Apache Flink アプリケーションのシステムロールバックの有効化

システムロールバック機能を使用すると、Amazon Managed Service for Apache Flink で実行中の Apache Flink アプリケーションの可用性を高めることができます。この設定を選択すると、 UpdateApplicationや などのアクションがコードや設定のバグにautoscaling陥ったときに、サービスがアプリケーションを自動的に以前の実行バージョンに戻すことができます。

注記

システムロールバック機能を使用するには、アプリケーションを更新してオプトインする必要があります。既存のアプリケーションは、デフォルトではシステムロールバックを自動的に使用しません。

仕組み

更新アクションやスケーリングアクションなどのアプリケーションオペレーションを開始すると、Amazon Managed Service for Apache Flink はそのオペレーションの実行を最初に試みます。コードのバグやアクセス許可の不足など、オペレーションが成功しない問題が検出されると、サービスは自動的にRollbackApplicationオペレーションを開始します。

ロールバックは、関連付けられたアプリケーションの状態とともに、正常に実行された以前のバージョンにアプリケーションを復元しようとします。ロールバックが成功すると、アプリケーションは以前のバージョンを使用して最小限のダウンタイムでデータの処理を続行します。自動ロールバックも失敗した場合、Amazon Managed Service for Apache Flink はアプリケーションを READYステータスに移行し、エラーの修正やオペレーションの再試行など、さらにアクションを実行できるようにします。

自動システムロールバックを使用するにはオプトインする必要があります。コンソールまたは API を使用して、この時点からアプリケーションのすべてのオペレーションで有効にできます。

次の UpdateApplicationアクションのリクエスト例では、アプリケーションのシステムロールバックを有効にします。

{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationSystemRollbackConfigurationUpdate": { "RollbackEnabledUpdate": "true" } } }

一般的なシナリオ

次のシナリオは、自動システムロールバックが有益な場所を示しています。

  • アプリケーションの更新: メインメソッドを使用して Flink ジョブを初期化するときにバグがある新しいコードでアプリケーションを更新すると、自動ロールバックによって以前の動作バージョンを復元できます。システムロールバックが役立つその他の更新シナリオは次のとおりです。

    • アプリケーションが更新され、maxParallelism よりも高い並列処理で実行される場合。

    • Flink ジョブの起動中に障害が発生する VPC アプリケーションのサブネットが正しくない状態で実行されるようにアプリケーションが更新された場合。

  • Flink バージョンのアップグレード: 新しい Apache Flink バージョンにアップグレードし、アップグレードされたアプリケーションにスナップショットの互換性の問題が発生すると、システムロールバックにより、以前の Flink バージョンに自動的に戻ることができます。

  • AutoScaling: スナップショットと Flink ジョブグラフのオペレータの不一致により、アプリケーションがスケールアップしてもセーブポイントからの復元に問題が発生する場合。

オペレーション APIs

可視性を高めるために、Amazon Managed Service for Apache Flink には、障害や関連するシステムロールバックの追跡に役立つアプリケーションオペレーションに関連する 2 つの APIs があります。

ListApplicationOperations

この API は、、、 などUpdateApplication、アプリケーションで実行されたすべてのオペレーションを逆の時系列MaintenanceRollbackApplicationで一覧表示します。次の ListApplicationOperationsアクションのリクエスト例では、アプリケーションの最初の 10 個のアプリケーションオペレーションを一覧表示します。

{ "ApplicationName": "MyApplication", "Limit": 10 }

次の のリクエスト例は、リストをアプリケーションの以前の更新にフィルタリングするListApplicationOperationsのに役立ちます。

{ "ApplicationName": "MyApplication", "operation": "UpdateApplication" }

DescribeApplicationOperation

この API は、該当する場合、障害の理由などListApplicationOperations、 にリストされている特定のオペレーションに関する詳細情報を提供します。次の DescribeApplicationOperationアクションのリクエスト例では、特定のアプリケーションオペレーションの詳細を一覧表示します。

{ "ApplicationName": "MyApplication", "OperationId": "xyzoperation" }

トラブルシューティング情報については、システムロールバックのベストプラクティスを参照してください。