未找到具有公共 IP 地址的 Fargate 中运行的任务

ivy*_*tch 7 spring aws-fargate

我正在创建一个简单的 Spring API,它有一个返回一些数据的 get 调用。我将其放入 docker 容器中,并在本地主机上测试了该容器,它可以正常工作(localhost:8080/getbooks 返回书籍列表)。然后,我将此容器推送到 ECR 并使用任务在 Fargate 上运行它。

我的任务在 Fargate 的集群上列为“正在运行”。但是,当我尝试通过其公共 IP 地址(34.208.216.217:8080/getbooks)访问它时,请求超时。

我尝试在创建任务时将端口 8080 添加到安全组(允许每个人访问它),但这并没有解决任何问题。

这是我的任务详细信息的图片,我从其中获取公共 IP: https: //i.stack.imgur.com/VgE2r.jpg

我希望可以通过列出的公共 IP 访问正在运行的任务,但事实并非如此。

小智 21

您需要确保容器端口正确映射到主机端口,并且您已在安全组中列出主机端口。Fargate 似乎默认将您的主机端口映射为与容器端口相同,并在安全组端口 80 中创建自定义 TCP 端口。

简单的解决方案:

  1. 转到您在 Fargate 上运行的任务定义修订版,然后在 JSON 选项卡上,您将看到端口映射部分,其中列出了您的容器和主机端口。复制主机端口的端口号。
  2. 转到正在运行的任务的安全组,在入站规则的右上角,您可以编辑它们。添加两个自定义 TCP,一个用于源“0.0.0.0/0”,另一个用于“::/0”,将上面复制的端口号添加到每个新入站规则的端口部分中。保存这个。
  3. 使用“HTTP”而不是“HTTPS”在公共 IP 上访问您的应用程序,转发到主机端口,您应该会看到您的应用程序

  • 所有流量类型输入/输出的默认*安全组*不起作用。您必须明确指定要使用的端口。 (12认同)

Bre*_*een 1

尝试将应用程序设置修改为:

server.address=0.0.0.0
Run Code Online (Sandbox Code Playgroud)

并重新启动任务。任务正在启动,但可能绑定到 localhost,这在 Fargate 下无法工作。0.0.0.0 会告诉它绑定到任何 IP 地址。