跳至內容

如何確保 Amazon ECS 在部署期間使用最新的容器執行個體映像檔摘要?

1 分的閱讀內容
0

我更新了 Amazon Elastic Container Service (Amazon ECS) 服務以使用最新映像檔執行任務,但某些任務不使用新映像檔。或者,我的 Amazon ECS 任務失敗並且我收到 CannotPullContainerError 錯誤。

簡短說明

當您在 Amazon ECS 中更新映像檔時,您可能會收到下列錯誤訊息:

「CannotPullContainerError:提取映像檔資訊清單已重試 1 次:無法解析 ref account-id.dkr.ecr.us-east-1.amazonaws.com/test:latest@sha256:1ed47f24455xxxxxxxxx677: account-id.dkr.ecr.us-east-1.amazonaws.com/test:latest@sha256:1ed47f24455xxxxxxxxx677:找不到」

更新映像檔時,您也必須更新服務。根據預設,Amazon ECS 會將任務定義中指定的容器映像標籤解析為容器映像摘要。

對於執行和維護單一任務的服務,Amazon ECS 會使用該任務為任務容器建立映像檔摘要。對於執行和維護多個任務的服務,Amazon ECS 會使用服務排程器在部署期間啟動的第一個任務。若要更新任務定義中的映像檔標籤時更新映像檔摘要,請更新服務並使用強制執行新部署設定。

如需映像檔行為的詳細資訊,請參閱容器映像檔解析

解決方法

注意: 如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,則請參閱對 AWS CLI 進行錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

請確認服務使用最新的映像檔

若要確保服務使用最新的映像檔,請更新 Amazon ECS 服務,然後使用強制執行新部署選項。或者,執行下列 AWS CLI update-service 命令:

aws ecs update-service --cluster clustername --service servicename --force-new-deployment

注意:clustername 替換為您的叢集名稱,將 servicename 替換為您的服務名稱。

若要使用特定映像檔摘要,請更新任務定義,然後修改映像檔 URI 區段:

imageUri@imagedigest

"image": "accountid.dkr.ecr.region-name.amazonaws.com/image:latest@sha256:da04638bxxxxxxxxxx,"

解決「映像檔摘要不存在」錯誤

如果您收到 Image digest does not exist (映像檔摘要不存在) 錯誤,請檢查您是否刪除了該映像檔。

若要檢查映像檔摘要是否存在於 Amazon Elastic Container Registry (Amazon ECR) 儲存庫中,請執行 describe-images 命令:

aws ecr describe-images --repository-name repositoryname --region regionname --query 'sort_by(imageDetails,& imagePushedAt)[*]'

注意:storagename 替換為儲存庫名稱,將 storagename 替換為您的 AWS 區域。

此命令的輸出會顯示儲存庫中的所有映像檔。如果映像檔摘要不存在,請檢查 BatchDeleteImage API 呼叫的 AWS CloudTrail 事件記錄,以確定刪除影像的原因。若要檢查 Amazon ECR 生命週期原則是否可以刪除正在執行的任務所使用的映像檔,請檢查 CloudTrail 中的 PolicyExecutionEvent API 呼叫。

為了確保容器映像檔標籤不會變更,最佳做法是開啟標籤不變性功能。

注意: 在使用 CODE_DEPLOYEXTERNAL 部署控制器的服務中無法解析容器映像檔標籤。

若要更新映像檔摘要,請完成確認服務使用最新映像檔區段中的步驟。

停用版本一致性

您可能需要使用可變的容器映像檔標籤,例如 LATEST,而不是一致的映像檔。若要設定該設定,請更新容器定義,將 versionConsistency 設定為停用versionConsistency 預設為啟用。當您將值變更為停用時,Amazon ECS 不再將容器映像檔標籤解析為摘要。相反,Amazon ECS 會使用容器定義中的原始映像檔 URI 進行部署。

相關資訊

宣布 Amazon ECS 服務的軟體版本一致性

AWS 官方已更新 1 年前