

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立 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 應用程式的最新支援版本用於您的應用程式程式碼。如需升級 Managed Service for Apache Flink 應用程式的相關資訊，請參閱[針對 Apache Flink 使用就地版本升級](how-in-place-version-upgrades.md)。

您可以使用 [Apache Maven](https://maven.apache.org/) 建置應用程式的程式碼。Apache Maven 專案使用 `pom.xml` 檔案來指定它使用的元件的版本。

**注意**  
Managed Service for Apache Flink 支援最大 512 MB 的 JAR 檔案。如果使用的 JAR 檔案大於此大小，應用程式將無法啟動。

應用程式現在可以使用任何 Scala 版本的 Java API。您必須將您選擇的 Scala 標準程式庫綁定到 Scala 應用程式。

如需建立使用 **Apache Beam** 之 Managed Service for Apache Flink 應用程式的相關資訊，請參閱[將 Apache Beam 與 Managed Service for Apache Flink 應用程式搭配使用](how-creating-apps-beam.md)。

### 指定應用程式的 Apache Flink 版本
<a name="how-creating-apps-building-flink"></a>

使用 Managed Service for Apache Flink 執行期 1.1.0 版及更新版本時，您可以指定您編譯應用程式時應用程式使用的 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) 來自行建立、擁有和管理金鑰，以建立新的應用程式。如需 CMKs 的詳細資訊，請參閱 [Amazon Managed Service for Apache Flink 中的金鑰管理](key-management-flink.md)。
  + **使用 AWS 主控台建立 Amazon MSF 應用程式：**您可以使用 AWS 主控台建立和設定應用程式。

    當您使用主控台建立應用程式時，也會為您建立應用程式的相依資源 (例如 CloudWatch Logs 串流、IAM 角色和 IAM 政策)。

    使用主控台建立應用程式時，您可以從 **Managed Service for Apache Flink - 建立應用程式**頁面的下拉式清單中選取版本，來指定應用程式使用的 Apache Flink 版本。

    如需如何使用 主控台建立應用程式的教學課程，請參閱教學[教學課程：開始使用 Managed Service for Apache Flink 中的 DataStream API](getting-started.md)課程。
  + **使用 CLI AWS 建立 Amazon MSF 應用程式：**您可以使用 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。如需使用 CMKs 的詳細資訊，請參閱 [Amazon Managed Service for Apache Flink 中的金鑰管理](key-management-flink.md)。

## 啟動 Managed Service for Apache Flink 應用程式
<a name="how-creating-apps-starting"></a>

建置應用程式的程式碼、將程式碼上傳至 S3，並建立 Managed Service for Apache Flink 應用程式之後，即可啟動應用程式。啟動 Managed Service Apache Flink 應用程式通常需要幾分鐘時間。

使用下列其中一種方法來啟動應用程式：
+ **使用 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 Insights 來驗證您的應用程式是否在正常執行。如需將 CloudWatch Logs 與 Managed Service for Apache Flink 搭配使用的相關資訊，請參閱[在 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 應用程式。選擇此組態可讓服務在 或 等動作`autoscaling`執行到程式碼`UpdateApplication`或組態錯誤時，自動將應用程式還原至先前執行的版本。

**注意**  
若要使用系統復原功能，您必須更新應用程式以選擇加入。根據預設，現有的應用程式不會自動使用系統復原。

## 運作方式
<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) 的平行處理執行。
  + 如果您的應用程式已更新為在啟動 Flink 任務期間導致失敗的 VPC 應用程式使用不正確的子網路執行。
+ **Flink 版本升級：**當您升級至新的 Apache Flink 版本，且升級的應用程式遇到快照相容性問題時，系統復原可讓您自動還原至先前的 Flink 版本。
+ **AutoScaling：**當應用程式擴展，但由於快照和 Flink 任務圖表之間的運算子不相符，從儲存點遇到還原問題時。

## 使用操作 APIs進行系統復原
<a name="operation-apis"></a>

為了提供更好的可見性，Amazon Managed Service for Apache Flink 有兩個與應用程式操作相關的 APIs，可協助您追蹤故障和相關的系統復原。

`ListApplicationOperations`

此 API 會依反向時間順序列出應用程式上執行的所有操作，包括 `RollbackApplication`、、 `UpdateApplication` `Maintenance`和其他操作。`ListApplicationOperations` 動作的下列範例請求會列出應用程式的前 10 個應用程式操作：

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

的下列範例請求`ListApplicationOperations`有助於篩選應用程式上先前更新的清單：

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

`DescribeApplicationOperation`

此 API 提供 列出之特定操作的詳細資訊`ListApplicationOperations`，包括故障原因，如適用。`DescribeApplicationOperation` 動作的下列範例請求會列出特定應用程式操作的詳細資訊：

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

如需故障診斷資訊，請參閱[系統復原最佳實務](troubleshooting-system-rollback.md)。