我想要對 Amazon Elastic Container Service (Amazon ECS) 叢集中停止的 Windows 任務進行疑難排解。
解決方法
注意: 如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,則請參閱對 AWS CLI 進行錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
若要對已停止任務進行疑難排解,請使用 AWS 管理主控台或 AWS CLI 以檢視已停止的任務錯誤。或者,使用 DescribeTasks 取得關於已停止任務的資訊。
重要: 您只能在任務失敗後的 1 小時內,存取 DescribeTasks 所提取之關於已停止任務的資訊。若要保留這些資料更長的時間,請使用 GitHub 網站上的 amazon-ecs-stopped-tasks-cwlogs 中的 AWS CloudFormation 範本。使用此範本,擷取 Amazon EventBridge 在任務停止時產生的 Amazon CloudWatch Logs。
針對您收到的錯誤完成下列疑難排解步驟。
常見的已停止任務錯誤
若要疑難排解常見的已停止任務錯誤 (例如容器執行個體運作狀態檢查問題),請參閱我的 Amazon ECS 任務為何停止?。
如果您收到 CannotPullContainerError: API 錯誤,則請參閱如何解決 Amazon ECS 中的 Amazon Elastic Container Registry (Amazon ECR) 錯誤「CannotPullContainerError: API error」?。
如果您收到 OutOfMemory 錯誤,請參閱如何在 Amazon ECS 中對 OutOfMemory 錯誤進行疑難排解?。
「鏈結中沒有有效的供應商」錯誤
如果您的執行個體沒有 ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE 設定,則您會收到錯誤類似於「CannotStartContainerError: Error response from daemon: failed to initialize logging driver: failed to create Cloudwatch log stream: NoCredentialProviders: no valid providers in chain」(CannotStartContainerError:來自常駐程式的錯誤回應:無法初始化記錄驅動程式:無法建立 Cloudwatch 日誌串流:NoCredentialProviders:鏈結中沒有有效的供應商)。
若要解決此問題,請確定您在容器執行個體上設定 ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE。範例 PowerShell 語法:
<powershell>
[Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", $TRUE, "Machine")
Initialize-ECSAgent -Cluster cluster-name -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]'
</powershell>
注意: 將 cluster-name 取代為您的叢集名稱。
「The container operating system does not match the host operating system」(容器作業系統與主機作業系統不符) 錯誤
如果主機作業系統 (OS) 與 Windows 容器執行個體的基本映像作業系統不符,則您會收到錯誤類似於「CannotStartContainerError: ResourceInitializationError: failed to create new container runtime task: failed to create shim task: hcs::CreateComputeSystem abcdxyz: The container operating system does not match the host operating system」(CannotStartContainerError:ResourceInitializationError:無法建立新的容器執行時期任務:無法建立墊片任務:hcs::CreateComputeSystem abcdxyz:容器作業系統與主機作業系統不符)。
若要解決此問題,請確認 AWS Fargate 或 Amazon Elastic Compute Cloud (Amazon EC2) 主機使用與容器執行個體相同的作業系統。
「無法擔任角色」錯誤
如果容器執行個體無法擔任 AWS Identity and Access Management (IAM) 角色,則您會收到錯誤類似於「Unable to assume the role "arn:aws:iam::abcdefxyz123:role/yyyyyyyy」(無法擔任角色"arn:aws:iam::abcdefxyz123:role/yyyyyyyy)。
執行下列命令,確保您在使用者資料指令碼中設定了**-EnableTaskIAMRole** 選項:
<powershell>
Import-Module ECSTools
Initialize-ECSAgent -Cluster 'windows' -EnableTaskIAMRole
</powershell>
請確定您符合 Windows 執行個體組態需求。
相關資訊
啟動設定 Amazon ECS Windows 容器執行個體以傳遞資料