我無法為 Amazon Elastic Container Service (Amazon ECS) 叢集設定新的容量供應商或更新現有的容量供應商。
解決方法
當您為 ECS 叢集設定新的容量供應商或更新現有容量供應商時,會出現以下常見問題:
您使用 AWS CLI 建立 AWS Auto Scaling 群組容量供應者且您收到錯誤
當您使用 AWS CLI 建立容量供應商時,請檢閱 AWS CloudTrail 事件以檢查 CreateCapacityProvider API。以下是常見的 CapacityProvider API 錯誤:
- ClientException: 這些錯誤可能是由用戶端動作所造成的。用戶端動作代表 AWS Identity and Access Management (AWS IAM) 使用者使用動作或資源。但是,用戶端動作沒有使用該動作或資源所需的權限。此錯誤還能指明識別碼無效。
- UpdateInProgressException: 收到此錯誤的原因是您指定的容器執行個體上目前已有進行中的 ECS 容器代理程式更新。如果容器代理程式在過渡階段 (例如 PENDING 或 STAGING) 中斷連線,則更新可能會卡在該狀態。不過,當代理程式重新連線時,更新就會從之前停止的位置回復。
如需相關資訊,請參閱錯誤。
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請參閱AWS CLI 錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
您收到錯誤: 「指定的容量供應商已存在。若要變更現有容量供應商的組態,請更新容量供應商」
建立容量供應商時,請使用與先前使用的容量供應商名稱不同的名稱。或者,刪除具有該名稱的現有容量供應商,然後建立新的容量供應商。
若要檢視所有建立的容量提供者清單,請執行描述describe-capacity-providers AWS CLI 命令:
aws ecs describe-capacity-providers --query capacityProviders\[\].name --region example-region
輸出訊息類似下列內容:
[
"FARGATE",
"FARGATE_SPOT",
"ecs-capacityprovider-1"
]
若要刪除容量提供者,請執行刪除delete-capacity-provider AWS CLI 命令:
aws ecs delete-capacity-provider --capacity-provider ecs-capacityprovider-1 --region example-region
若要建立新的容量提供者,請執行create-capacity-provider AWS CLI 命令:
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"
您收到錯誤: 「指定的 Auto Scaling 群組 ARN 已由另一位容量供應商使用。請指定唯一的 Auto Scaling 群組 ARN,然後再試一次」
AWS Auto Scaling 群組和容量供應商必須具有一對一關係。請確定容量供應商僅與一個 AWS Auto Scaling 群組相關聯。確認群組僅與一個容量提供者相關聯。
您建立容量提供者策略並收到錯誤: 「指定的叢集處於忙碌狀態。叢集附件必須處於 UPDATE_COMPLETE 或 UPDATE_FAILED 狀態才能進行更新。請稍候,然後再試一次」
此錯誤會在幾分鐘後自動解決。錯誤解決之後,請嘗試再次更新容量提供者。或者,執行 describe-clusters AWS CLI 命令以檢視附件的目前狀態。然後,等到附件處於 UPDATE_COMPLETE 狀態為止:
aws ecs describe-clusters --clusters example-ARN --include ATTACHMENTS --query clusters\[\].attachmentsStatus --region example-region
完成的更新狀態輸出看起來類似如下:
[
"UPDATE_COMPLETE"
]
由於容量供應商的限制而收到錯誤
確認您的容量提供者符合下列條件:
- 您不能針對容量策略指定六個以上的容量供應商。
- 在叢集策略中使用 AWS Auto Scaling 群組容量供應商或 AWS Fargate 容量供應商。您不能使用這兩種類型的組合。
- 只有在您執行任務時,才支援容量供應商策略的基本值。
容量供應商已透過 CloudFormation 成功建立,但未顯示在主控台中
當您未將容量提供者與 CloudFormation 範本中的叢集相關聯時,就會發生這種情況。若要避免此問題,請在 CloudFormation 範本中使用下列程式碼片段,將容量提供者與叢集相關聯:
...
ECSCluster:
Type: 'AWS::ECS::Cluster'
Properties:
ClusterName: example-cluster
CapacityProviders:
- !Ref ECSCapacityProvider
...
相關資訊
適用於 EC2 啟動類型的 Amazon ECS 容量提供者
刪除 Amazon ECS 中的容量供應商時,如何解決 DELETE_FAILED 錯誤?