

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

# 在 Amazon ECS 最佳化 AMI 上更新 Amazon ECS 容器代理
<a name="agent-update-ecs-ami"></a>

若您使用的是 Amazon ECS 最佳化 AMI，您有幾個選項可取得最新版本的 Amazon ECS 容器代理程式 (以下顯示的順序為建議順序)：
+ 終止容器執行個體，並啟動最新版本的 Amazon ECS 最佳化 Amazon Linux 2 AMI (以手動方式或使用最新 AMI 更新您的 Auto Scaling 啟動組態)。這可提供全新的容器執行個體，以及最新已測試和驗證的 Amazon Linux、Docker、`ecs-init` 和 Amazon ECS 容器代理程式的版本。如需詳細資訊，請參閱[Amazon ECS 最佳化 Linux AMI](ecs-optimized_AMI.md)。
+ 使用 SSH 連線到執行個體，將 `ecs-init` 套裝服務 (及其相依性) 更新到最新版本。此操作可提供 Amazon Linux 儲存庫中目前經過測試及驗證的 Docker 和 `ecs-init` 版本，以及最新版 Amazon ECS 容器代理程式。如需詳細資訊，請參閱[若要更新 Amazon ECS 最佳化 AMI 上的 `ecs-init` 套件](#procedure_update_ecs-init)。
+ 透過主控台或使用 AWS CLI AWS SDKs，使用 `UpdateContainerAgent` API 操作更新容器代理程式。如需詳細資訊，請參閱[使用 `UpdateContainerAgent` API 操作更新 Amazon ECS 容器代理程式](#agent-update-api)。

**注意**  
代理更新不適用於 Windows 容器執行個體。我們建議您啟動新的容器執行個體，以更新您 Windows 叢集中的代理版本。<a name="procedure_update_ecs-init"></a>

**若要更新 Amazon ECS 最佳化 AMI 上的 `ecs-init` 套件**

1. 透過 SSH 登入您的容器執行個體。

1. 使用以下命令更新 `ecs-init` 套裝服務。

   ```
   sudo yum update -y ecs-init
   ```
**注意**  
`ecs-init` 套件和 Amazon ECS 容器代理程式會立即更新。但是，直到 Docker 常駐程式重新啟動前，都不會載入較新版本的 Docker。將執行個體重新開機，或在執行個體上執行下列命令，以重新啟動：  
Amazon ECS 最佳化 Amazon Linux 2 AMI：  

     ```
     sudo systemctl restart docker
     ```
Amazon ECS 最佳化 Amazon Linux AMI：  

     ```
     sudo service docker restart && sudo start ecs
     ```

## 使用 `UpdateContainerAgent` API 操作更新 Amazon ECS 容器代理程式
<a name="agent-update-api"></a>

**重要**  
僅在 Amazon ECS 最佳化 AMI 的 Linux 變體上支援 `UpdateContainerAgent` API，但 Amazon ECS 最佳化 Amazon Linux 2 (arm64) AMI 除外。對於使用 Amazon ECS 最佳化 Amazon Linux 2 (arm64) AMI 的容器執行個體，請更新 `ecs-init` 套件以更新代理程式。針對在其他作業系統上執行的容器執行個體，請參閱「[手動更新 Amazon ECS 容器代理程式 (適用於非 Amazon ECS 最佳化 AMI)](manually_update_agent.md)」。如果您正在使用 Windows 容器執行個體，我們建議您啟動新的容器執行個體，以更新您 Windows 叢集中的代理程式版本。

當您透過主控台或使用 AWS CLI AWS SDKs 請求代理程式更新時，`UpdateContainerAgent`API 程序就會開始。Amazon ECS 會比對您目前的代理程式版本與最新可用的代理程式版本，判斷是否可執行更新。若無法取得更新 (例如若代理已在執行最近的版本)，便會傳回 `NoUpdateAvailableException`。

上圖顯示更新程序中的階段如下：

`PENDING`  
有可用的代理更新，並已啟動更新程序。

`STAGING`  
代理已開始下載代理更新。若代理無法下載更新，或更新的內容不正確或已損毀，則代理會傳送失敗的通知，且更新的狀態會轉換成 `FAILED` 狀態。

`STAGED`  
代理下載已完成並已驗證代理內容。

`UPDATING`  
`ecs-init` 服務已重新啟動，並使用最新版本的代理。若代理程式因為某些原因無法重新啟動，則更新會轉換為 `FAILED` 狀態；否則，代理程式會通知 Amazon ECS 更新已完成。

**注意**  
代理更新不適用於 Windows 容器執行個體。我們建議您啟動新的容器執行個體，以更新您 Windows 叢集中的代理版本。

**若要在主控台的 Amazon ECS 最佳化 AMI 上更新 Amazon ECS 容器代理程式**

1. 開啟主控台，網址為 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)。

1. 從導覽列中選擇註冊外部執行個體所在的區域。

1. 在導覽窗格中，選擇 **Clusters** (叢集)，然後選取叢集。

1. 在 **Cluster : *name*** (叢集：名稱) 頁面上，選擇 **Infrastructure** (基礎基礎設施) 索引標籤。

1. 在**容器執行個體**下，選取要更新的執行個體，然後選擇**動作**、**更新代理程式**。