首页 > 解决方案 > 用于 SPA Angular 6 应用程序的 AWS S3 和 AWS ELB,而不是 AWS Elastic beanstalk

问题描述

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

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

是否可以使用 AWS S3/ELB 代替 PAAS beanstalk 而没有任何限制?

标签: amazon-s3amazon-elastic-beanstalkaws-elb

解决方案


我不是 100% 确定您将弹性负载均衡器与 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。这非常便宜,因为您无需为持续运行的服务器付费,而只需支付少量存储成本以及与您的流量成正比的数据传输费用。

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


推荐阅读