amazon-web-services - 无法从外部访问正在运行的 EC2 Dockerized 映像
问题描述
问题
我无法从 EC2 实例外部访问正在运行的 docker 映像。
我试过的
- 我在 ECS 中创建了一个集群,一个具有相关任务定义的服务和一个 Application Load Balancer。
- 当任务执行时,我可以在任务中看到来自 Docker 映像的日志:
- 我还看到相关的 EC2 实例正在运行。当我 ssh 进入实例时,我可以看到 docker 映像正在运行,正如预期的那样:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
af20230498fb <ecr-id>.dkr.ecr.eu-central-1.amazonaws.com/app-be:latest "docker-entrypoint.s…" 11 minutes ago Up 11 minutes 0.0.0.0:32805->5001/tcp ecs-app-task-definition-26-app-be-fcf9ffc3f9dadf80d401
5d59c2b2bcaa amazon/amazon-ecs-agent:latest "/agent" 2 hours ago Up 2 hours (healthy) ecs-agent
当我这样做时:
> curl 0.0.0.0:32805/status
{"message":"OK","timestamp":1598871064086}
但是,当尝试从外部访问同一端点时,无论是从 EC2 实例的公共 IP 还是 Application Load Balancer DNS,都会超时。
另外:Application Load Balancer 的 /status 的运行状况检查也失败了,因此任务每 15 分钟重新启动一次。
感谢任何帮助,如果我犯了新手错误,请提前道歉,因为我对 AWS 没有太多经验。
解决方案
您是否配置了 EC2 的安全组或启动 EC2 的 VPC 的 NACL?
我看到您在任务中公开了端口 5001,所以在 SG 中,您应该打开该端口
推荐阅读
- r - 使用从 R 中的向量创建的名称分配给对象
- sql - SQL获取所有合格用户
- javascript - 如何将大流转换为 gzip 压缩的 base64 字符串
- mysql - 选择城市相同的用户
- visual-studio-code - VSCode 语言服务器插件不会激活
- typescript - 在 Vue.JS 中使用 TypeScript 时如何从导入中删除 .vue 扩展名?
- javascript - php 包括,通过 javascript 替代 - 网络和科尔多瓦测试
- docker - 如何从 .Net Core 中的 docker 容器将日志发送到 Graylog
- bash - 使用 bash 脚本从树莓派到 mac 的 scp 文件
- .net - .NET CORE 身份验证策略或