AWS S3 Angular应用程序通过Route 53地址调用ECS任务



我正在尝试将Angular客户端和Spring Boot服务器应用程序部署到AWS。我成功地将服务器应用程序作为ECS任务启动,使用服务发现来防止在每次任务重启时更改Angular应用程序代码中的服务器ip地址。所以我在Angular应用程序中设置了Router 53 DNS,指的是上面提到的任务,而不是任务的公共IP作为服务器应用程序的URL,但这种方法不起作用。当我把任务的实际公共IP作为服务器URL时,一切都很好。Angular应用程序已部署到AWS S3。

问题示例:

find() {
return this.http.get<>(http://127.0.0.1:8080 + '/all);
}

解决方案示例:

find() {
return this.http.get<>(http://test-service.test:8080 + '/all);
}

其中test-service.test是Route 53记录。

这种方法可能吗?如果没有,你能给我建议其他解决方案吗?

我希望这个问题足够清楚。如果您需要更多详细信息,请告诉我。

谢谢!

我认为您需要解决两个独立的问题。

  1. 如何公开应用程序服务器?你这样做是行不通的,因为FQDN是私有的。因此,你要么将应用服务器放在ALB(提供静态公共FQDN(后面,要么购买一个域并创建一个公共区域来公开你的任务(这可能有效,但任务是短暂的,你需要继续追逐它们才能在域中注册/注销(。

  2. 你如何指向应用程序服务器的端点(ALB或R53域或你选择的任何暴露它的域?(。您可以将端点烘焙到Angular环境中(但随后端点将静态链接到JS编译的代码中(,也可以使用Angular提供的工具来参数化端点。您可以创建一个名为env.js的文件以及包含应用服务器端点的index.html文件。这意味着,当从S3中提供JS时,您可以配置env.js文件以包括您的应用程序服务器端点,并且您的浏览器将动态指向它(无需重新编译Angular应用程序。完整的操作方法在这里。

是的,这种方法是可能的,但为了工作,你必须在53号公路上有一个公共托管区,这意味着你必须购买一个公共域。

我假设您已经创建了一个私有托管区。私有托管区可以在专有网络内用于DNS解析,但不能通过公共互联网。

最新更新