Node.js 如何让AWS S3 bucket中的Angular应用程序调用AWS Elastic Beanstalk中的API服务

Node.js 如何让AWS S3 bucket中的Angular应用程序调用AWS Elastic Beanstalk中的API服务,node.js,amazon-web-services,amazon-s3,amazon-elastic-beanstalk,amazon-cloudfront,Node.js,Amazon Web Services,Amazon S3,Amazon Elastic Beanstalk,Amazon Cloudfront,我将一个网站转移到AWS,该网站在一台服务器上安装Angular,在另一台服务器上安装Nodejs/Express,并在RDB中使用PostgreSQL数据库。这非常有效,目前正在运行,但在可扩展性和可用性方面并不理想 因此,我将要提供的数据从通过CloudFront访问并使用WebHook更新的S3存储桶移动到我的GitHub repo中。这一切似乎都很有效 我使用Elastic Beanstalk创建了Nodejs/Express,并再次使用WebHook从GitHub repo更新了它。在

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

因此,我将要提供的数据从通过CloudFront访问并使用WebHook更新的S3存储桶移动到我的GitHub repo中。这一切似乎都很有效

我使用Elastic Beanstalk创建了Nodejs/Express,并再次使用WebHook从GitHub repo更新了它。在部署时仍然有一些问题需要解决,但我认为这些问题将是次要的(这意味着它们将在以后咬我)

我似乎不知道如何允许Angular to do API调用Elastic Beanstalk中的负载平衡器

  • 我是否仍然使用proxy.config.json?如果是,我应该指出什么?我试图在路由53中为api.myapp.com创建一个CNAME记录,指向负载平衡器DNS的值。那似乎不起作用

  • 我是否使用AWSAPI网关。我在这里尝试了一些不同的方法,但似乎没有成功。唯一可能的是,我需要定义每个API,如果可能的话,这将是我最后的选择

  • 这是不能做的吗

我读过很多关于类似问题的文章,但似乎没有一篇能给我答案。也许我只是看错了。任何帮助都将不胜感激


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

  • 我在route 53中有一条路径指向我的CloudFront,名为“dev.mydomain.com”,这条路径非常有效
  • 我在route 53中有一个路由指向我的Elastic Beanstalk负载平衡器“api.mydomain.com”
  • 我可以通过在浏览器(如“”)中输入url进行调用,它会返回信息以及cors标题。当我让应用程序进行与CloudFront从S3 bucket提供的调用相同的调用时,我得到“从源服务器“”访问位于“”的XMLHttpRequest已被CORS策略阻止:请求的资源上不存在“Access Control Allow origin”头。”并且确保响应头中没有CORS头
我发现有几篇文章似乎处理了这个问题,但它们没有起作用(或者我没有正确地实现它们)。我试着创造一个原点,我试着创造一种行为。到目前为止,一切都不起作用


我希望任何人都能处理这个问题,或者知道一篇有帮助的文章,我将不胜感激。

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

Amazon Route 53还提供别名记录,这是一条Amazon路线 53 DNS的特定扩展。您可以创建要路由的别名记录 到选定AWS资源的流量,包括Amazon弹性负载 平衡负载平衡器、Amazon CloudFront发行版、AWS Elastic Beanstalk环境、API网关、VPC接口端点和 配置为网站的Amazon S3存储桶

希望这有帮助

参考:


问题“Amazon Route 53支持哪些DNS记录类型?”在

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

Amazon Route 53还提供别名记录,这是一条Amazon路线 53 DNS的特定扩展。您可以创建要路由的别名记录 到选定AWS资源的流量,包括Amazon弹性负载 平衡负载平衡器、Amazon CloudFront发行版、AWS Elastic Beanstalk环境、API网关、VPC接口端点和 配置为网站的Amazon S3存储桶

希望这有帮助

参考:

上的问题“Amazon Route 53支持哪些DNS记录类型?”已解决 这个问题的答案让我接近了我想去的地方,但它仍然没有回应我所有的电话。最后发现是数据库调用没有响应。我没有用elastic beanstalk设置数据库,因为我正在为产品设置进行概念验证,所以数据库需要分开。最后我发现我没有在数据库的安全组中添加允许弹性beanstalk调用的规则。在添加该规则并在CloudFront中添加行为和起源规则之后,它似乎像一个符咒一样工作

解决 这个问题的答案让我接近了我想去的地方,但它仍然没有回应我所有的电话。最后发现是数据库调用没有响应。我没有用elastic beanstalk设置数据库,因为我正在为产品设置进行概念验证,所以数据库需要分开。最后我发现我没有在数据库的安全组中添加允许弹性beanstalk调用的规则。在添加该规则并在CloudFront中添加行为和起源规则之后,它似乎像一个符咒一样工作