连接到 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 集群
在 docker 容器输出中运行 AWS 粘合作业,“com.amazonaws.SdkClientException:无法连接到服务端点:”