アプリケーションを新しい Apache Flink バージョンにアップグレードする - Managed Service for Apache Flink

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

アプリケーションを新しい Apache Flink バージョンにアップグレードする

UpdateApplication アクションを使用して Flink アプリケーションをアップグレードできます。

UpdateApplication API は複数の方法で呼び出すことができます。

  • AWS マネジメントコンソールで既存の [設定] ワークフローを使用する。

    • AWS マネジメントコンソールのアプリページに移動します。

    • [設定] を選択します。

    • 新しいランタイムと起動元のスナップショット (復元設定とも呼ばれる) を選択します。最新のスナップショットからアプリケーションを起動するには、最新の設定を復元設定として使用します。Amazon S3 上にある、アップグレードされた新しいアプリケーション JAR/zip をポイントします。

  • AWS CLI update-application アクションを使用する。

  • CloudFormation (CFN) を使用する。

    • RuntimeEnvironment フィールドを更新します。以前は、CloudFormation がアプリケーションを削除して新しいアプリケーションを作成していたため、スナップショットやその他のアプリケーション履歴は失われていました。今後は、設置されている RuntimeEnvironment を CloudFormation が更新するようになり、アプリケーションは削除されません。

  • AWS SDK を使用する。

    • 選択したプログラミング言語については、SDK のドキュメントを参照してください。「UpdateApplication」を参照してください。

アップグレードは、アプリケーションが RUNNING 状態のとき、またはアプリケーションが READY 状態で停止しているときに実行できます。Amazon Managed Service for Apache Flink は、元のランタイムバージョンとターゲットランタイムバージョンの互換性を検証します。この互換性チェックは、RUNNING 状態のときに UpdateApplication を実行した時点、または READY 状態のときにアップグレードする場合は次の StartApplication の時点で、実行されます。

次の例では、AWS CLI を使用して UpgradeTest という名前の RUNNING 状態のアプリケーションを米国東部 (バージニア北部) の Flink 1.18 にアップグレードし、アップグレードされたアプリケーションを最新のスナップショットから起動する方法を示しています。

aws --region us-east-1 kinesisanalyticsv2 update-application \ --application-name UpgradeTest --runtime-environment-update "FLINK-1_18" \ --application-configuration-update '{"ApplicationCodeConfigurationUpdate": '\ '{"CodeContentUpdate": {"S3ContentLocationUpdate": '\ '{"FileKeyUpdate": "flink_1_18_app.jar"}}}}' \ --run-configuration-update '{"ApplicationRestoreConfiguration": '\ '{"ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"}}' \ --current-application-version-id ${current_application_version}
  • サービススナップショットを有効にしていて、最新のスナップショットからアプリケーションを続行する場合、Amazon Managed Service for Apache Flink は、現在の RUNNING アプリケーションのランタイムが選択したターゲットランタイムと互換性があることを確認します。

  • ターゲットランタイムの続行元となるスナップショットを指定した場合、Amazon Managed Service for Apache Flink は、ターゲットランタイムが指定されたスナップショットと互換性があることを確認します。互換性チェックが失敗した場合、更新リクエストは拒否され、アプリケーションは RUNNING 状態のまま変更されません。

  • スナップショットを使用せずにアプリケーションを起動するよう選択した場合、Amazon Managed Service for Apache Flink は互換性チェックを実行しません。

  • アップグレードしたアプリケーションに障害が発生したり、過渡的な UPDATING 状態で停止したりした場合は、「アプリケーションのアップグレードをロールバックする」セクションの指示に従って正常な状態に戻します。

[RUNNING 状態のアプリケーションのプロセスフロー]

次の図は、実行中のアプリケーションをアップグレードする場合に推奨するワークフローを示しています。アプリケーションがステートフルであり、スナップショットを有効にしていることを前提としています。このワークフローでは、更新する際に、更新前に Amazon Managed Service for Apache Flink によって自動的に作成された最新のスナップショットからアプリケーションを復元します。

次の例では、AWS CLI を使用して UpgradeTest という名前の READY 状態のアプリケーションを米国東部 (バージニア北部) の Flink 1.18 にアップグレードする方法を示しています。アプリケーションは実行中ではないため、アプリケーションを起動するためのスナップショットは指定されていません。スナップショットは、アプリケーション起動リクエストを発行するときに指定できます。

aws --region us-east-1 kinesisanalyticsv2 update-application \ --application-name UpgradeTest --runtime-environment-update "FLINK-1_18" \ --application-configuration-update '{"ApplicationCodeConfigurationUpdate": '\ '{"CodeContentUpdate": {"S3ContentLocationUpdate": '\ '{"FileKeyUpdate": "flink_1_18_app.jar"}}}}' \ --current-application-version-id ${current_application_version}
  • READY 状態のアプリケーションのランタイムを任意の Flink バージョンに更新できます。Amazon Managed Service for Apache Flink は、アプリケーションを起動するまでチェックを一切実行しません。

  • Amazon Managed Service for Apache Flink は、アプリケーションを起動するために選択したスナップショットに対する互換性チェックのみ実行します。これらは、Flink 互換性テーブルに従って行われる基本的な互換性チェックです。スナップショットが作成された Flink バージョンと、ターゲットとする Flink バージョンのみをチェックします。選択したスナップショットの Flink ランタイムがアプリケーションの新しいランタイムと互換性がない場合、起動リクエストが拒否されることがあります。

[READY 状態のアプリケーションのプロセスフロー]

次の図は、READY 状態のアプリケーションをアップグレードする場合に推奨するワークフローを示しています。アプリケーションがステートフルであり、スナップショットを有効にしていることを前提としています。このワークフローでは、更新する際に、アプリケーション停止時に Amazon Managed Service for Apache Flink によって自動的に作成された最新のスナップショットからアプリケーションを復元します。