连接到 AWS ECS 集群中正在运行的容器

Posted

技术标签:

【中文标题】连接到 AWS ECS 集群中正在运行的容器【英文标题】:Connect to a running container in AWS ECS Cluster 【发布时间】:2021-09-07 03:24:17 【问题描述】:

我的团队继承了一个 AWS ECS 集群,上面运行着多个链接容器,但没有源代码(是的,我知道...)。我们需要连接到其中一个正在运行的容器并在其中执行一些命令。这是我们尝试过的:

connecting to the container instance,但没有与集群关联的实例 using ECS EXEC with AWS Copilot 但不清楚我们如何在不访问用于部署的源代码的情况下连接到集群

我们还能如何连接到在 AWS ECS 上运行的容器?

更新:

我尝试按照示例here 使用 AWS CLI 访问容器,结果发现任务中未启用执行命令:

调用 ExecuteCommand 操作时发生错误(InvalidParameterException):执行命令失败,因为任务运行时未启用执行命令或执行命令代理未运行。等待并重试,或在启用执行命令的情况下运行新任务,然后重试。

现在是放弃的好时机吗?

【问题讨论】:

【参考方案1】:

如果在创建任务时未对任务启用 exec 命令,并且它在 Fargate 而不是 EC2 中运行,则无法像您尝试的那样连接到它。

docker 镜像在 ECR 中吗?您应该能够检查 ECS 任务定义以查看 Docker 映像的位置,然后将 Docker 映像下载到 EC2 服务器或您的本地计算机,此时您应该能够访问这些 Docker 映像的内容。

【讨论】:

是的,图像位于 AWS ECR 存储库中,我们确切地知道其中的内容,但问题是通过在其中一个容器内运行几个命令来修复当前部署。还有其他解决方法可以实现此修复,但比我上面尝试的要复杂得多。无论如何,谢谢你的回答! 您必须重新启动任务才能启用 ECS 执行功能。

以上是关于连接到 AWS ECS 集群中正在运行的容器的主要内容,如果未能解决你的问题,请参考以下文章

在单独的 docker 容器 (AWS ECS) 中连接到 MongoDB

Terraform 中的 ECS 服务如何连接到 AWS 自动缩放组

从 ECS 集群中的 docker nodejs EC2 容器连接到 Redis Elasticache 集群

无法连接到 ECS 中链接的 docker 容器

在 docker 容器输出中运行 AWS 粘合作业,“com.amazonaws.SdkClientException:无法连接到服务端点:”

如何使用 Fargate 在 AWS ECS 中正在运行的容器中运行命令