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

Posted

技术标签:

【中文标题】如何使用 Fargate 在 AWS ECS 中正在运行的容器中运行命令【英文标题】:How can I run commands in a running container in AWS ECS using Fargate 【发布时间】:2019-01-05 08:15:41 【问题描述】:

如果我使用 EC2 在 AWS ECS 中运行容器,那么我可以访问正在运行的容器并执行任何命令。

即。 docker exec -it <containerid> <command>

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

【问题讨论】:

【参考方案1】:

更新(2021 年 3 月 16 日):

AWS announced 一项名为 ECS Exec 的新功能提供了执行到 Fargate 上正在运行的容器甚至在 EC2 上运行的容器的能力。此功能利用 AWS Systems Manager (SSM) 在客户端和目标容器之间建立安全通道。这篇来自亚马逊的详细博客 post 描述了如何使用此功能以及所有先决条件和配置步骤。

原答案:

使用 Fargate,您无法访问底层基础架构,因此 docker exec 似乎不可能。文档没有明确提到这一点,但亚马逊在Deep Dive into AWS Fargate presentation 中提到了这一点,在幻灯片 19 中提到了这一点:

一些注意事项:不能执行到容器中,或者访问底层 主持人(这也是好事)

在 ECS CLI github 项目中的 open issue 上也有一些讨论。

您可以尝试在容器内运行 SSH 服务器以获取访问权限,但我没有尝试过,也没有遇到任何这样做的人。这似乎也不是一个好方法,所以你被限制在那里。

【讨论】:

【参考方案2】:

AWS Fargate 是一项托管服务,不允许访问容器是有意义的。 如果您需要对容器进行故障排除,您始终可以提高在容器中运行的应用程序的日志级别。使用容器的最佳实践说

"Docker 容器实际上是不可变的。这意味着一个正在运行的 容器永远不会改变,因为如果您需要更新它, 最佳实践是使用更新版本的 您的应用程序并删除旧的。”

希望对你有帮助。

【讨论】:

【参考方案3】:

截至 2021 年 3 月 16 日,AWS 推出了 ECS Exec,可用于在 EC2 或 Fargate 中运行的容器上运行命令。 网址将在 https://aws.amazon.com/about-aws/whats-new/2021/03/amazon-ecs-now-allows-you-to-execute-commands-in-a-container-running-on-amazon-ec2-or-aws-fargate/

【讨论】:

你的意思是“没有”? 抱歉,感谢您的突出显示.. 将其更改为“有”

以上是关于如何使用 Fargate 在 AWS ECS 中正在运行的容器中运行命令的主要内容,如果未能解决你的问题,请参考以下文章

AWS ECS Fargate 和端口映射

AWS ECS Fargate - 任务未运行

AWS ECS Fargate ALB 错误(请求超时)

AWS ECS Fargate 上的 Jenkins 工作人员:并行运行几个作业

AWS CDK 并在现有 ALB 上创建 ECS/Fargate 服务。使用现有的监听器?

如何诊断 ECS Fargate 任务启动失败?