當我嘗試為我的 Amazon Elastic Container Service (Amazon ECS) 叢集設定新的容量供應商,或更新現有容量供應商時發生問題。
簡短描述
為 Amazon ECS 叢集設定新容量供應商,或更新現有容量供應商時,會出現以下一些常見問題:
- 當您使用 AWS Command Line Interface (AWS CLI) 建立 Auto Scaling 群組容量供應商時,會發生錯誤。
- 發生錯誤:已存在指定的容量供應商。如要變更現有容量供應商的組態,請更新容量供應商。
- 發生錯誤:已有另一個容量供應商使用指定的 Auto Scaling 群組 ARN。指定唯一的 Auto Scaling 群組 ARN,再重試一次。
- 當您建立容量供應商策略時發生錯誤:指定的叢集處於忙碌狀態。叢集附件必須是 UPDATE_COMPLETE 或 UPDATE_FAILED 狀態,之後才能進行更新。請稍候,並再試一次。
- 由於容量供應商具有某些限制,因此會發生錯誤。
- 透過 AWS CloudFormation 成功建立容量供應商,但並未顯示在主控台中。
解決方案
使用 AWS CLI 建立 Auto Scaling 群組容量供應商時發生錯誤
若要在您使用 AWS CLI 建立容量供應商時,針對此問題進行疑難排解,請檢視 AWS CloudTrail 事件,以檢查 CreateCapacityProvider API。以下是您使用 CapacityProvider API 時,可能會發生的一些錯誤:
- ClientException:這些錯誤通常是因客户端動作所引起。此客户端動作可能使用代表 AWS Identity and Access Management (IAM) 使用者的動作或資源,但該使用者並無使用動作或資源的許可。此錯誤還可能指定無效的識別符。
- UpdateInProgressException:由於您指定的容器執行個體上,正在進行目前的 Amazon ECS 容器代理程式更新,因此發生此錯誤。如果容器代理程式於過渡階段 (如「待完成」或「模擬」) 中斷連線,則更新流程可能會停滯在該狀態。但是,當代理程式重新連線時,它將恢復之前停止的狀態。
如需詳細資訊,請參閱錯誤。
**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請確保您使用的是最新版 AWS CLI。
發生錯誤:已存在指定的容量供應商。如要變更目前容量供應商的組態,請更新容量供應商
當您建立容量供應商時,請使用與之前的任何容量供應商不同的名稱。或者,您可以刪除該名稱的目前容量供應商,並建立新的容量供應商。
如要檢視您建立的所有容量供應商清單,請執行以下命令:
aws ecs describe-capacity-providers --query capacityProviders[].name --region example-region
輸出類似於以下內容:
[
"FARGATE",
"FARGATE_SPOT",
"ecs-capacityprovider-1"
]
如要刪除容量供應商,請執行以下命令:
aws ecs delete-capacity-provider --capacity-provider ecs-capacityprovider-1 --region example-region
針對範例輸出與更多選項,請參閲 delete-capacity-provider。
如要建立新的容量供應商,請執行以下命令:
aws ecs create-capacity-provider --name "example-capacity=provider" --auto-scaling-group-provider autoScalingGroupArn=arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111:autoScalingGroupName/MyAutoScalingGroup,managedScaling={status=ENABLED,targetCapacity=100,minimumScalingStepSize=1,maximumScalingStepSize=100},managedTerminationProtection=ENABLED
針對範例輸出與更多選項,請參閲 create-capacity-provider。
發生錯誤:已有另一個容量供應商使用指定的 Auto Scaling 群組 ARN。指定唯一的 Auto Scaling 群組 ARN,再重試一次
Auto Scaling 群組與容量供應商必須是一對一的關係。您可以將 Auto Scaling 群組連接到一個容量供應商,反之亦然。因此,請驗證您的容量供應商是否僅與一個 Auto Scaling 群組相關聯。
發生錯誤:指定的叢集處於忙碌狀態。叢集附件必須是 UPDATE_COMPLETE 或 UPDATE_FAILED 狀態,之後才能進行更新。請稍候並重試
此錯誤會在幾分鐘內自動解決。您可以稍後一段時間,並再重試一次,以更新容量供應商。您還可以執行以下 CLI 命令,以檢視附件的目前狀態,並稍候一段時間,直到附件呈現 UPDATE_COMPLETE 狀態。
aws ecs describe-clusters --clusters example-ARN --include ATTACHMENTS --query clusters[].attachmentsStatus --region example-region
輸出必須看起來類似與以下內容:
[
"UPDATE_COMPLETE"
]
由於容量供應商具有某些限制,因此會發生錯誤
在建立或更新容量供應商時,請記住以下限制:
- 您不能為容量策略指定六個以上的容量供應商。
- 您可以在叢集策略中使用 Auto Scaling 群組容量供應商,或是 AWS Fargate 容量供應商。您不能使用這兩種類型的組合。
- 只有在執行任務時,才支援容量供應商策略的基本值。
容量供應商已透過 CloudFormation 成功建立,但未顯示在主控台中
當您不將容量供應商與 CloudFormation 範本中的叢集相關聯時,即可能會發生此情況。
如要避免此問題,請使用 CloudFormation 程式碼片段,將容量供應商與叢集相關聯:
...
ECSCluster:
Type: 'AWS::ECS::Cluster'
Properties:
ClusterName: example-cluster
CapacityProviders:
- !Ref ECSCapacityProvider
...
相關資訊
Amazon ECS 容量供應商
Auto Scaling 群組容量供應商
刪除 Amazon ECS 中的容量供應商時,如何解決 DELETE_FAILED 錯誤?