【问题标题】:How to safely remove the active task in AWS?如何安全地删除 AWS 中的活动任务?
【发布时间】:2019-01-21 16:26:13
【问题描述】:
我有一个 NodeJS + Angular 5 应用程序,由 Code Fresh 构建并部署在 AWS 平台 S3、ECS、ECR、EC2 和负载均衡器上。
我注意到,我的
中有很多活动任务正在运行
任务定义名称:api
我想清理一下我的 AWS 账户。
如果我删除除 68 之外的其余任务可以吗?
如何检查其余部分是否未被使用?
【问题讨论】:
标签:
amazon-web-services
amazon-s3
amazon-ec2
aws-lambda
amazon-ecs
【解决方案1】:
我建议不要删除这些。它们不是您提到的“活动任务”,而是单个任务定义的修订版,这是服务如何运行任务的配置(定义容器详细信息、资源分配等)。
如果您熟悉 Git,您正在查看的那些修订类似于“提交”甚至“分支”,但不是针对整个代码库,仅类似于 100 行 JSON。您正在使用第 3 方部署自动化工具 (CodeFresh),它可能取决于回滚过程的这些修订,或者至少期望它们存在。可能不会,但我会谨慎行事。
任务定义不消耗任何资源,几乎不占用存储空间(AWS 甚至不对其收费。如果您想查看实际“正在运行的任务”
- 点击集群
- 选择任何具有多个“活动任务”的集群
- 然后您会看到一个服务列表,其中包含“所需”和“正在运行”任务的数量,我相信您可以通过点击查看其余的任务。
一个小故事,以说明我在这方面的谨慎...前几天晚上睡觉前,我在我的 AWS 帐户中进行了“清理”。我删除了一个没有运行活动服务的 ECS 集群;我制作的第一个集群。
1 分钟后 20 个网站/应用程序崩溃,整个帐户基础架构。我几乎没有意识到我已经通过“设置向导”创建了该集群,它使用 CloudFormaton 模板启动了整个 VCP、ELB 和所有底层资源。我曾在某个时候开始使用该 VPC 和相关资源作为我的新集群的主页。
删除集群后,它会回滚我的 CloudFormation 堆栈删除...足够好的底层网络资源使一切崩溃。
任务定义,是相当微不足道的一次性东西,但这就是我对空集群的看法。故事的寓意...
- 尽可能使用“删除端口”
- 如果您没有制作(全部),请不要在没有进行研究的情况下删除它。
如果我是你,我会向 CodeFresh 支持/论坛提出这个问题,以确保确定。同时,这些任务定义不会花费您任何费用,您甚至应该很少需要输入您正在查看的 UI/视图。
【解决方案2】:
是的,您可以安全地删除任务定义。
当您取消注册任务定义时,它会立即标记为 INACTIVE。引用 INACTIVE 任务定义的现有任务和服务继续运行而不会中断,并且引用 INACTIVE 任务定义的现有服务仍然可以通过修改服务的所需计数来扩大或缩小。 Source
查看正在使用的任务:
- 进入 ECS 集群。
- 选择您的集群。
- 在选定的集群中,选择任务。
- 您可以查看所有正在运行的任务以及它们正在使用的相应任务定义。
除了您在上述过程中看到的任务定义之外,您可以取消注册其余的任务定义。
取消注册任务定义:
- 打开 Amazon ECS 控制台https://console.aws.amazon.com/ecs/。
- 从导航栏中,选择包含您的任务定义的区域。
- 在导航窗格中,选择任务定义。
- 在“任务定义”页面上,选择包含要取消注册的一个或多个修订的任务定义名称。
- 在“任务定义名称”页面上,选中您要取消注册的每个任务定义修订左侧的框。
- 选择操作,取消注册。