如何让 AWS S3 存储桶中的 Angular 应用对 AWS Elastic Beanstalk 中的服务进行 API 调用

How to have Angular app in AWS S3 bucket make API calls to service in AWS Elastic Beanstalk

我将一个网站转移到 AWS,该网站在一台服务器上有 Angular,在另一台服务器上有 Nodejs/Express,并在 RDB 中使用 PostgreSQL 数据库。这很好用,目前 运行 但在可扩展性和可用性方面不是很好。

因此,我已将 Angular 从通过 CloudFront 访问并使用 WebHook 更新到我的 GitHub 存储库的 S3 存储桶中提供服务。这一切似乎都很有效。

我有 Nodejs/Express 使用 Elastic Beanstalk 并再次使用 WebHook 从 GitHub 存储库更新。在部署时仍有一些项目需要解决,但我认为它们将是次要的(这意味着它们稍后会咬我)。

我似乎无法弄清楚的是允许 Angular 对 Elastic Beanstalk 中的负载均衡器进行 API 调用的方法。

我已经阅读了很多关于类似问题的文章,但 none 似乎非常适合给我一个答案。也许我只是看错了。任何帮助将不胜感激。


已编辑

在过去几天追逐了很多松鼠之后,我想我已经将问题缩小到 CloudFront 的配置问题。

我发现了几篇文章似乎可以解决这个问题,但它们没有用(或者我没有正确实施)。我试图创造一个起源,我试图创造一种行为。到目前为止没有任何效果。

我有任何人处理过这个问题或知道一篇可以帮助我的文章,我将不胜感激。

您可以从 Route53 为负载均衡器创建自定义域名 url。您需要创建一个 A 记录,其中 Alias 属性 设置为 yes 指向负载均衡器的 dns URL。

Amazon Route 53 also offers alias records, which are an Amazon Route 53-specific extension to DNS. You can create alias records to route traffic to selected AWS resources, including Amazon Elastic Load Balancing load balancers, Amazon CloudFront distributions, AWS Elastic Beanstalk environments, API Gateways, VPC interface endpoints, and Amazon S3 buckets that are configured as websites

希望这对您有所帮助。

参考:

问题 "Which DNS record types does Amazon Route 53 support?" https://aws.amazon.com/route53/faqs/

已解决

这个 的答案让我接近了我想去的地方,但它仍然没有回应我的所有电话。最后发现是数据库调用没有响应。我没有使用弹性 beantalk 设置数据库,因为我正在为生产设置做概念验证,因此数据库需要分开。最后发现我没有在数据库的安全组中添加规则来允许弹性 beanstalk 调用。添加该规则并在 CloudFront 中添加行为和来源规则后,它似乎很有魅力。