当我从 AWS CloudFormation 堆栈中删除 Amazon ECS 集群时失败了,该怎么办?

2 分钟阅读
0

我的 Amazon Elastic Container Service(Amazon ECS)集群无法删除。

简短描述

Amazon ECS 集群无法删除,可能是因底层资源依赖项方面的问题所致。创建 Amazon ECS集群时,AWS CloudFormation 会创建 Auto Scaling 组、virtual private cloud 或负载均衡器等资源。这些资源都与您的集群关联,并且这些资源的存在可能会阻止删除集群。AWS CloudFormation 的其他问题也可能会阻止删除 Amazon ECS 集群。

**注意:**通过控制台首次运行体验(2015 年 11 月 24 日以后)创建的,或者通过集群创建向导创建的集群,有一个底层 AWS CloudFormation 堆栈。在集群删除过程中,堆栈 EC2ContainerService-yourClusterName 可能会遇到以下错误:

  • “vpc ‘vpc-1234567’ 存在依赖项,无法删除”
  • “由于‘资源 sg-123456 存在依赖对象’错误,安全组 sg-123456 无法删除”
  • "User: arn:aws:sts::1111222233334444:assumed-role/example-role/example-user is not authorized to perform: ecs:DeleteCluster on resource: arn:aws:ecs:Region:1111222233334444:cluster/example-cluster"

集群删除将会失败,并且 AWS CloudFormation 堆栈将进入“删除失败”状态。

如果您无法删除您的 ECS 集群,请完成以下步骤。

解决方法

**注意:**如果您在运行 AWS Command Line Interface (AWS CLI) 命令时遇到错误,请确保您运行的是最新版本的 AWS CLI

验证 AWS Identity and Access Management(IAM)权限

1.    打开 IAM console(IAM 控制台)。

2.    在导航窗格中,选择角色

3.    在 Roles(角色)页面中,输入错误消息中指定的 IAM 角色。您可以通过筛选到 DeleteCluster API 调用来查看 CloudTrail Events 中的错误消息。
**注意:**这是试图删除 Amazon ECS 集群的 IAM 角色或用户。

4.    选择 IAM 角色或用户。

5.    选择 Permissions(权限)选项卡。

检查权限策略是否包含 ecs: Delete* 权限。IAM 角色或用户需要此权限才能删除 ECS 集群。
如果缺少权限,请向 IAM 用户或角色授予所需的访问权限。有关更多信息,请参阅 AmazonECS_FullAccess

删除集群并跳过含有依赖项的资源

1.    打开 AWS CloudFormation 控制台

2.    要找到问题堆栈,对于筛选条件,选择活动,然后选择失败

3.    选择无法删除的问题堆栈。

4.    依次选择操作删除堆栈

5.    选中删除失败的资源旁的复选框。

6.    选择是,删除

**重要提示:**如果您无法删除某个资源,但仍需要删除堆栈,则选择保留该资源。您还可以使用 AWS CLI delete-stack 命令来保留资源。使用资源。

7.    删除 Amazon ECS 集群

删除保留的资源

以下示例演示了如何删除通常与底层 AWS CloudFormation 堆栈关联的资源。

安全组依赖项示例

在此例中,一个安全组的入站或出站规则引用了其他安全组。此依赖关系可以防止删除集群。

1.    要找到与您要删除的安全组关联的安全组,请运行以下 AWS CLI 命令:

aws ec2 describe-security-groups --filters Name=ip-permission.group-id,Values=[sg-xxxxxxxxx] --region us-east-1 | jq '.SecurityGroups[] .GroupId'

**注意:**jq 是命令行 JSON 处理器。

2.    清除您要删除的安全组的依赖项。

3.    删除安全组资源

VPC 依赖项示例

**注意:**常见的 VPC 依赖项包括 describe-internet-gatewaysdescribe-subnetsdescribe-instances

1.    要确定 VPC 的依赖资源,请运行以下 AWS CLI 命令。将 vpc-xxxxxxxxxx 替换为您的 VPC 值,然后将区 RegionId 替换为 AWS 区域代码

aws ec2 describe-subnets --filters "Name=vpc-id,Values=vpc-xxxxxxxx" --region RegionId | grep SubnetId

**注意:**对于其他依赖项,您可以运行类似的 describe_* 命令

2.    清除您要删除的 VPC 的依赖项。

3.    删除 VPC

有关更多信息,请参阅在尝试删除我的 Amazon VPC 时,我收到了一条依赖项错误。如何删除我的 Amazon VPC?


相关信息

删除堆栈失败

AWS 官方
AWS 官方已更新 1 年前