如何解决创建新的 Amazon ECS 服务时出现的“Creation of service was not idempotent”(服务创建不是幂等的)错误?

1 分钟阅读
0

当我创建新的 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。或者,完成以下步骤:

  1. 打开 Amazon ECS 控制台
  2. 在导航窗格中,选择 Clusters(集群)。
  3. 选择您的集群。
  4. 选择 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 角色,请完成以下步骤以重新创建该角色:

  1. 要获取之前的 IAM 角色名称,请运行以下 describe-services 命令:
    aws ecs describe-services --cluster clustername --services servicename
    **注意:**请将 clustername 替换为您的集群名称,将 servicename 替换为服务名称。
  2. 使用相同的名称重新创建 IAM 角色。有关所需权限的信息,请参阅 Amazon ECS 的服务相关角色权限

**注意:**要查找有关删除角色的用户的信息,请查看 AWS CloudTrail DeleteRole 事件

创建具有不同名称的新服务

如果您仍然无法创建与已删除服务同名的新服务,请创建具有不同名称的新服务

相关信息

CreateService

AWS 官方
AWS 官方已更新 1 个月前