Node.js 如何让AWS S3 bucket中的Angular应用程序调用AWS Elastic Beanstalk中的API服务
我将一个网站转移到AWS,该网站在一台服务器上安装Angular,在另一台服务器上安装Nodejs/Express,并在RDB中使用PostgreSQL数据库。这非常有效,目前正在运行,但在可扩展性和可用性方面并不理想 因此,我将要提供的数据从通过CloudFront访问并使用WebHook更新的S3存储桶移动到我的GitHub repo中。这一切似乎都很有效 我使用Elastic Beanstalk创建了Nodejs/Express,并再次使用WebHook从GitHub repo更新了它。在部署时仍然有一些问题需要解决,但我认为这些问题将是次要的(这意味着它们将在以后咬我) 我似乎不知道如何允许Angular to do API调用Elastic Beanstalk中的负载平衡器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更新了它。在
- 我是否仍然使用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中添加行为和起源规则之后,它似乎像一个符咒一样工作