当我创建新的 Amazon Elastic Container Service (Amazon ECS) 服务时,我收到以下错误: “服务创建不是幂等的。”
解决方案
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
当您创建与 Amazon ECS 数据库中的现有服务同名的服务时,会出现 not idempotent(非幂等)错误。要解决此错误,请执行以下操作。
确保不使用现有的集群名称
如果您尝试创建与现有集群同名的集群,则您会遇到以下错误之一:
“InvalidParameterException: 服务创建不是幂等的。”
-或-
“提供的请求无效: CreateService 错误: 创建服务不是幂等的。”
要解决此错误,请确保没有同名的现有服务。如果您最近删除了同名的服务,请验证该服务的状态是否为 DELETED(已删除)。
**注意:**即使您删除现有集群,也可能出现 not idempotent(非幂等)错误,因为该集群可能仍处于删除阶段。
如果服务处于 DEPROVISIONING(正在取消预置)状态,请检查服务中的任何任务是否卡在“正在取消预置”状态。要查看集群中所有任务的状态,请运行 DescribeTasks API。或者,完成以下步骤:
- 打开 Amazon ECS 控制台。
- 在导航窗格中,选择 Clusters(集群)。
- 选择您的集群。
- 选择 Tasks(任务)选项卡。
检查已删除服务的 UpdateService API 调用,以检查该服务是否仍处于活动状态。此外,请检查 Delete Service API 调用中是否包含“Service contains registered instances; delete the instances before deleting the service”(服务包含注册实例;请在删除服务之前删除实例)原因。如果 Delete Service API 中包含此原因,请删除实例。
重新创建已删除的 IAM 角色
如果您对任务使用 AWS Identity and Access Management (IAM) 角色,则必须先删除该任务,然后再删除该角色。IAM 角色必须在任务的整个生命周期内可用。这包括取消预置资源。
如果您先删除了 IAM 角色,请完成以下步骤以重新创建该角色:
- 要获取之前的 IAM 角色名称,请运行以下 describe-services 命令:
aws ecs describe-services --cluster clustername --services servicename
**注意:**请将 clustername 替换为您的集群名称,将 servicename 替换为服务名称。
- 使用相同的名称重新创建 IAM 角色。有关所需权限的信息,请参阅 Amazon ECS 的服务相关角色权限。
**注意:**要查找有关删除角色的用户的信息,请查看 AWS CloudTrail DeleteRole 事件。
创建具有不同名称的新服务
如果您仍然无法创建与已删除服务同名的新服务,请创建具有不同名称的新服务。
相关信息
CreateService