

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

# 將您的應用程式升級至新的 Apache Flink 版本
<a name="upgrading-application-new-version"></a>

您可以使用 [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) 動作來升級 Flink 應用程式。

您可以透過多種方式呼叫 `UpdateApplication` API：
+ 在 上使用現有的**組態**工作流程 AWS 管理主控台。
  + 前往 上的應用程式頁面 AWS 管理主控台。
  + 選擇**設定**。
  + 選取您要從中開始的新執行期和快照，也稱為還原組態。使用最新的設定作為還原組態，從最新的快照啟動應用程式。指向 Amazon S3 上新升級的應用程式 JAR/zip。
+ 使用 AWS CLI [update-application](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kinesisanalyticsv2/update-application.html) 動作。
+ Use CloudFormation (CFN)。
  + 更新 [RuntimeEnvironment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalyticsv2-application.html#cfn-kinesisanalyticsv2-application-runtimeenvironment) 欄位。先前， CloudFormation 刪除應用程式並建立新的應用程式，導致您的快照和其他應用程式歷史記錄遺失。現在會 CloudFormation 更新您的 RuntimeEnvironment，而不會刪除您的應用程式。
+ 使用 AWS SDK。
  + 如需您選擇的程式設計語言，請參閱 SDK 文件。請參閱 [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)。

您可以在應用程式處於 `RUNNING` 狀態或應用程式處於停止`READY`狀態時執行升級。Amazon Managed Service for Apache Flink 會驗證原始執行時間版本與目標執行時間版本之間的相容性。當您在 `RUNNING` 狀態執行 [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) 時，或在`READY`處於 狀態時升級時，會在下一個 [StartApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StartApplication.html) 執行此相容性檢查。

## 升級處於 `RUNNING` 狀態的應用程式
<a name="upgrading-running"></a>

下列範例顯示使用 將`RUNNING`狀態為 的應用程式升級至美國東部 （維吉尼亞北部） 的 `UpgradeTest` Flink 1.18， AWS CLI 並從最新的快照啟動升級的應用程式。

```
            
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`狀態，請遵循 [復原應用程式升級](rollback.md)區段中的指示以返回運作狀態。

**執行狀態應用程式的處理流程**

![\[下圖代表在執行時升級應用程式的建議工作流程。我們假設應用程式具有狀態，且您已啟用快照。對於此工作流程，更新時，您可以從 Amazon Managed Service for Apache Flink 在更新之前自動拍攝的最新快照還原應用程式。\]](http://docs.aws.amazon.com/zh_tw/managed-flink/latest/java/images/in-place-update-while-running.png)


## 升級處於 **READY** 狀態的應用程式
<a name="upgrading-ready"></a>

下列範例顯示使用 將`READY`狀態為 的應用程式升級至美國東部 （維吉尼亞北部） 的 `UpgradeTest` Flink 1 AWS CLI.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 相容性資料表的基本相容性](https://nightlies.apache.org/flink/flink-docs-master/docs/ops/upgrading/#compatibility-table)檢查。他們只會檢查拍攝快照的 Flink 版本，以及您要鎖定的 Flink 版本。如果所選快照的 Flink 執行時間與應用程式的新執行時間不相容，則啟動請求可能會被拒絕。

**就緒狀態應用程式的處理流程**

![\[下圖代表在就緒狀態時升級應用程式的建議工作流程。我們假設應用程式具有狀態，且您已啟用快照。對於此工作流程，更新時，您可以從應用程式停止時 Amazon Managed Service for Apache Flink 自動拍攝的最新快照還原應用程式。\]](http://docs.aws.amazon.com/zh_tw/managed-flink/latest/java/images/in-place-update-while-ready.png)
