

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

# Managed Service for Apache Flink アプリケーションを作成する
<a name="how-creating-apps"></a>

このトピックには、Managed Service for Apache Flink アプリケーションの作成に関する情報が含まれています。

**Topics**
+ [Managed Service for Apache Flink アプリケーションコードをビルドする](#how-creating-apps-building)
+ [Managed Service for Apache Flink アプリケーションを作成する](#how-creating-apps-creating)
+ [カスタマーマネージドキーを使用する](#how-creating-apps-use-cmk)
+ [Managed Service for Apache Flink アプリケーションを起動する](#how-creating-apps-starting)
+ [Managed Service for Apache Flink アプリケーションを検証する](#how-creating-apps-verifying)
+ [Managed Service for Apache Flink アプリケーションのシステムロールバックを有効にする](how-system-rollbacks.md)

## Managed Service for Apache Flink アプリケーションコードをビルドする
<a name="how-creating-apps-building"></a>

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

アプリケーションコードに対してサポートされている最新バージョンの Apache Flink を使用することをお勧めします。Apache Flink アプリケーション用 Managed Service のアップグレードについては、[Apache Flink のインプレースバージョンアップグレードを使用する](how-in-place-version-upgrades.md) を参照してください。

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

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

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

「**Apache Beam**」を使用する Apache Flink アプリケーション用 Managed Service の作成については、 [Managed Service for Apache Flink アプリケーションに Apache Beam を使用する](how-creating-apps-beam.md) を参照してください。

### アプリケーションの Apache Flink バージョンを指定する
<a name="how-creating-apps-building-flink"></a>

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

```
mvn package -Dflink.version=2.2.0
```

以前のバージョンの Apache Flink でアプリケーションをビルドする方法については、「[以前のバージョン](earlier.md)」を参照してください。

## Managed Service for Apache Flink アプリケーションを作成する
<a name="how-creating-apps-creating"></a>

アプリケーションコードをビルドしたら、次の手順を実行して Managed Service for Apache Flink (Amazon MSF) アプリケーションを作成します。
+ 「**アプリケーションコードのアップロード**:」アプリケーションコードを Amazon S3 バケットにアップロードします。アプリケーションを作成する際は、アプリケーションコードの S3 バケット名とオブジェクト名を指定します。アプリケーションコードのアップロード方法を示すチュートリアルについては、「[チュートリアル: Managed Service for Apache Flink で DataStream API 使用の概要](getting-started.md) チュートリアル」を参照してください。
+ **Managed Service for Apache Flink アプリケーションを作成する**: 次のいずれかの方法を使用して Amazon MSF アプリケーションを作成します。
**注記**  
Amazon MSF は、デフォルトで を使用してアプリケーションを暗号化します AWS 所有のキー。 AWS KMS カスタマーマネージドキー (CMKs) を使用して新しいアプリケーションを作成し、キーを自分で作成、所有、管理することもできます。CMK の詳細については、「[Amazon Managed Service for Apache Flink のキー管理](key-management-flink.md)」を参照してください。
  + ** AWS コンソールを使用して Amazon MSF アプリケーションを作成する:** AWS コンソールを使用してアプリケーションを作成および設定できます。

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

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

    コンソールを使用してアプリケーションを作成する方法に関するチュートリアルについては、「[チュートリアル: Managed Service for Apache Flink で DataStream API 使用の概要](getting-started.md) チュートリアル」を参照してください。
  + **CLI を使用して Amazon MSF AWS アプリケーションを作成する:** CLI AWS を使用してアプリケーションを作成および設定できます。

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

    CLI を使用してアプリケーションを作成する場合、 `CreateApplication` アクションの `RuntimeEnvironment` パラメータを使用して、アプリケーションが使用する Apache Flink のバージョンを指定します。
**注記**  
既存のアプリケーションの `RuntimeEnvironment` を変更できます。この方法の詳細は、「[Apache Flink のインプレースバージョンアップグレードを使用する](how-in-place-version-upgrades.md)」を参照してください。

## カスタマーマネージドキーを使用する
<a name="how-creating-apps-use-cmk"></a>

Amazon MSF では、カスタマーマネージドキー (CMKs) は、 AWS Key Management Service () で作成、所有、管理するキーを使用してアプリケーションのデータを暗号化できる機能ですAWS KMS。Amazon MSF アプリケーションの場合、Flink [チェックポイント](how-fault.md)または[スナップショット](how-snapshots.md)の対象となるすべてのデータが、そのアプリケーション用に定義した CMK で暗号化されます。

アプリケーションで CMK を使用するには、まず[新しいアプリケーションを作成](#how-creating-apps-creating)してから、CMK を適用する必要があります。CMK の使用方法の詳細については、「[Amazon Managed Service for Apache Flink のキー管理](key-management-flink.md)」を参照してください。

## Managed Service for Apache Flink アプリケーションを起動する
<a name="how-creating-apps-starting"></a>

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

アプリケーションを起動するには、以下のいずれかの方法を使用します。
+ ** AWS コンソールを使用して Managed Service for Apache Flink アプリケーションを起動する:** コンソールのアプリケーションのページで**実行**を選択して、アプリケーションを実行できます AWS 。
+ ** AWS API を使用して Managed Service for Apache Flink アプリケーションを起動する:** [StartApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StartApplication.html) アクションを使用してアプリケーションを実行できます。

## Managed Service for Apache Flink アプリケーションを検証する
<a name="how-creating-apps-verifying"></a>

アプリケーションが動作していることを確認するには、次の方法があります。
+ 「**CloudWatch Logs の使用:**」CloudWatch Logs と CloudWatch Logs インサイトを使用して、アプリケーションが正しく実行されていることを確認できます。Apache Flink アプリケーション用 Managed Service で CloudWatch Logs を使用する方法については、「[Amazon Managed Service for Apache Flink でのロギングとモニタリング](monitoring-overview.md)」を参照してください。
+ **CloudWatch メトリクスを使用する**: CloudWatch メトリクスを使用して、アプリケーションのアクティビティ、またはアプリケーションが入力または出力に使用するリソース (Kinesis ストリーム、Firehose ストリーム、Amazon S3 バケットなど) のアクティビティを監視できます。CloudWatch メトリクスの保持の詳細については、Amazon CloudWatch ユーザーガイドの[「メトリクスの保持」](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html)を参照してください。
+ 「**出力ロケーションのモニタリング:**」アプリケーションが出力を特定のロケーション (Amazon S3 バケットやデータベースなど) に書き込む場合、そのロケーションに書き込まれたデータを監視できます。

# Managed Service for Apache Flink アプリケーションのシステムロールバックを有効にする
<a name="how-system-rollbacks"></a>

システムロールバック機能を使用すると、Amazon Managed Service for Apache Flink で実行中の Apache Flink アプリケーションの高可用性を実現できます。この設定をオプトインすると、`UpdateApplication` や `autoscaling` などのアクションでコードや設定のバグが発生したときに、サービスによってアプリケーションを、以前に実行されていたバージョンに自動的に戻すことができます。

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

## 仕組み
<a name="how-rollback-works"></a>

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

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

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

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

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

## 自動システムロールバックの一般的なシナリオを確認する
<a name="common-scenarios"></a>

次のシナリオは、自動システムロールバックが役立つケースを示しています。
+ **アプリケーションの更新:** メインメソッドを使用して Flink ジョブを初期化するときにバグがある新しいコードでアプリケーションを更新した場合、自動ロールバックで、以前に動作していたバージョンに復元できます。システムロールバックが役立つその他の更新シナリオは次のとおりです。
  + アプリケーションが [maxParallelism](https://docs.aws.amazon.com/managed-flink/latest/java/how-scaling.html#how-scaling-auto) よりも多い並列処理数で実行されるように更新された場合。
  + VPC アプリケーションのサブネットが正しくない状態で実行されるようにアプリケーションが更新され、Flink ジョブの起動中に失敗する場合。
+ **Flink バージョンのアップグレード:** 新しい Apache Flink バージョンにアップグレードし、アップグレードしたアプリケーションでスナップショットの互換性の問題が発生した場合、システムロールバックで以前の Flink バージョンに自動的に戻すことができます。
+ **AutoScaling:** スナップショットと Flink ジョブグラフの間でオペレーターの不一致があるため、アプリケーションがスケールアップしてもセーブポイントから復元する際に問題が発生する場合。

## システムロールバックにオペレーション API を使用する
<a name="operation-apis"></a>

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

`ListApplicationOperations`

この API は、`UpdateApplication`、`Maintenance`、`RollbackApplication` など、アプリケーションで実行されたすべてのオペレーションを逆の時系列で一覧表示します。`ListApplicationOperations` アクションの以下のリクエスト例では、アプリケーションに対する最初の 10 件のアプリケーションオペレーションが一覧表示されます。

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

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

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

`DescribeApplicationOperation`

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

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

トラブルシューティング情報については、「[システムロールバックのベストプラクティス](troubleshooting-system-rollback.md)」を参照してください。