AWS S3 和 AWS ELB 而不是 AWS Elastic beanstalk for SPA Angular 6 应用程序

AWS S3 and AWS ELB instead of AWS Elastic beanstalk for SPA Angular 6 application

我正在创建一个 Angular 6 前端应用程序。我的后端 api 是在 DotNet 中创建的。假设应用程序类似于 https://www.amazon.com/.

我的查询仅与 AWS 上的前端部分部署相关。我的门户网站上预计会有大量具有可变计数模式的用户。我想到了使用 AWS elastic beanstalk 作为 PAAS 网络服务器。

可以无限制地使用AWS S3/ELB代替PAAS beanstalk吗?

我不是 100% 确定将 Elastic Load Balancer 与 S3 组合在一起是什么意思。我想你可能对 ELB 的目的感到困惑,它是将请求分发到多个服务器,例如NodeJS 服务器,但不能与已经高度可用的 S3 一起使用。

为 Angular 应用提供服务时有多种选择:

  • 您可以使用 nodejs 应用程序提供文件,但除非您正在进行服务器端渲染(使用 Angular Universal),否则我不明白这一点,因为您是仅提供静态文件(当您使用 PHP 时不会被服务器拼接在一起的文件)。部署和维护服务器更加复杂,即使使用 Elastic Beanstalk,也可能很难获得与其他设置相同的性能(见下文)。

  • 我怀疑大多数人会做的是配置一个 S3 存储桶来托管和提供 Angular 应用程序 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html) 的静态文件。您基本上将域名配置为解析为 S3 存储桶的 url。这是非常便宜的,因为您不必为经常 运行 的服务器付费,而只需支付少量存储成本和与您的流量成正比的数据传输费用。

  • 您可以通过创建一个使用您的 S3 存储桶作为其来源(从中获取文件的位置)的 CloudFront 分配来进一步改进 S3 设置。当您配置您的域名以解析您的 CloudFront 分配时,而不是用户请求从 S3 存储桶(可能位于世界另一端的区域,因此速度较慢)获取文件,请求将被定向到最近的 "edge location" ,这将更接近您的用户,并检查文件是否首先缓存在那里。它基本上是您文件的全球内容交付网络。这比单独使用 S3 贵一点。见 https://aws.amazon.com/premiumsupport/knowledge-center/cloudfront-serve-static-website/.