amazon-s3 - 用于 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 而没有任何限制?
解决方案
我不是 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/。
推荐阅读
- assembly - 处理对 MARS 读取整数系统调用的非数字用户输入?
- swift - NSPredicate 用于过滤 Realm 3 中的基元字段数组
- c# - 无法将文件上传到 Azure 存储 C#?
- windows - ETL 文件合并失败 (0x80070070) (标志: 0x0000011f)
- python - python在列表中搜索值
- node.js - 如何设置 Travis CI 以使用链接(本地)包?
- python - 不和谐和机器人制作:我似乎无法让我的机器人发布网络解析材料
- javascript - 嵌套的 ES6 承诺 - 未捕获外部 func 错误
- python - Python SQL 数据导入 - 数据导入到数据库过程中去掉了反斜杠
- python - 使用 Py_SetPath() 和 Py_GetPath() 后的 Python C API free() 错误