

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

# 從現有 EMR Cluster/EMR-S 應用程式建立目標
<a name="emr-spark-upgrade-agent-target-cluster"></a>

如果您已有執行來源 Spark 版本的 EMR-EC2 叢集，您可以複製它來建立具有相同組態但已更新 EMR 發行版本的新叢集，以在升級程序期間執行驗證步驟。

## 步驟：
<a name="emr-spark-upgrade-agent-clone-cluster-steps"></a>

1. 登入 AWS 管理主控台 並開啟 Amazon EMR 主控台。

1. 在左側導覽窗格中，選擇 EC2 上的 EMR 下的叢集。

1. 從叢集清單中：
   + 視需要使用搜尋或篩選條件來尋找叢集。
   + 選取您要複製之叢集旁的核取方塊。
   + 複製選項會出現在清單頂端。選擇複製。
   + 如果叢集已設定步驟，請選擇包含步驟，然後繼續複製步驟和其他叢集設定。

1. 檢閱從原始叢集複製的新叢集設定。

1. 將 Amazon EMR 發行版本更新為目標版本。

1. 作為成本效益的最佳實務，請考慮在設定叢集時啟用自動擴展，以根據工作負載需求自動調整容量。

1. 當您對組態感到滿意時，請選取建立叢集以啟動新的叢集。

1. 等待叢集達到執行中狀態，並記下叢集 ID。在出現驗證更新應用程式的提示時，將此 ID 提供給客服人員。

1. 如果您想要從頭開始建立新叢集，請參閱 EMR 文件：[https：//https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html)。

## 將 EMR Serverless 應用程式複製到目標版本
<a name="emr-spark-upgrade-agent-clone-serverless"></a>

無法直接將 EMR Serverless 應用程式複製到具有不同 EMR 發行版本的新應用程式。反之，您可以使用 EMR Serverless SDK/CLI 或 主控台建立新的應用程式，並重複使用現有應用程式的組態。

以下是一些入門的協助程式 CLI 命令：

```
aws emr-serverless get-application --application-id XXX > old-config.json  
cat old-config.json | jq '{  
  name: (.application.name + "<suffix to differentiate name from old application>"),  
  releaseLabel: "<target EMR release version>",  
  type: .application.type,  
  initialCapacity: .application.initialCapacity,  
  maximumCapacity: .application.maximumCapacity,  
  autoStartConfiguration: .application.autoStartConfiguration,  
  autoStopConfiguration: .application.autoStopConfiguration,  
  tags: .application.tags,  
  architecture: .application.architecture,  
  runtimeConfiguration: .application.runtimeConfiguration,  
  monitoringConfiguration: .application.monitoringConfiguration  
}' > new-config.json  
aws emr-serverless create-application --cli-input-json file://new-config.json
```

**注意：**確保新應用程式的任務執行角色允許 EMR Serverless 擔任該角色。檢閱角色的信任政策。如果您重複使用舊應用程式中的相同任務執行角色，請更新信任政策以包含新應用程式，如下所示：

```
#Replace the old application id and new application id in the policy  
{  
    "Version": "2012-10-17",		 	 	  
    "Statement": [  
        {  
            "Sid": "ServerlessTrustPolicy",  
            "Effect": "Allow",  
            "Principal": {  
                "Service": "emr-serverless.amazonaws.com"  
            },  
            "Action": "sts:AssumeRole",  
            "Condition": {  
                "StringLike": {  
                    "aws:SourceArn": [  
                        "arn:aws:emr-serverless:us-east-1:<account>:/applications/<old application id>",  
                        "arn:aws:emr-serverless:us-east-1:<account>:/applications/<new application id>"  
                    ]  
                }  
            }  
        }  
    ]  
}
```