amazon-web-services - AWS 中托管的无服务器解决方案设计
问题描述
我正在 AWS 中设计一个网站解决方案,其中仅包含 2 个站点:主仪表板以图表(索引站点)显示公司数据和每个公司的单个页面。
先决条件:
- 无服务器。
- 基于按需流量的高性价比解决方案。
- 一切都可以公开访问。不需要登录。
- 使用 JS 的 HTML 网站。
- 数据每天更改 1 次。
功能:
主仪表板(JS 中的图表)读取动态数据(最近 30 个报告)。可以从文件中读取数据:txt、json 或数据库:dynamoDB。由于必须公开访问,我认为使用数据库不是一个
好策略。公司页面。用户可以公开发表评论和评分。
您个人将如何设计此解决方案?
我的第一种方法是:仪表板站点从 txt 文件中读取数据,公司站点使用 DynamoDB 来保存/显示评论和评级。
解决方案
我建议您使用某种“编排框架”在 AWS 中启动此类服务。或者,您可以为此手动编写和管理 Cloudformation 模板。
您也不应该担心将这些组件中的每一个保存在单独的 git 存储库中。如有必要,您还可以为每个组件使用不同的编程语言。这将使您不仅可以将其设计为“无服务器”,而且还可以利用 AWS 在该领域大力推进的微服务架构。
这个例子应该让你快速入门:https ://serverless.com/examples/aws-node-single-page-app-via-cloudfront/
应用程序的静态部分(HTML + JS)应该依赖 API 来收集数据。
这些 API 可以是带有 API 网关的 Lamba 函数。这将允许您安全地连接到数据库而不必担心安全性。
此示例应该快速启动您的 API 部分:https ://serverless.com/examples/aws-node-rest-api-with-dynamodb-and-offline/
考虑到 Lambda、S3 和 DynamoDB 定价的运作方式(大型免费套餐),这很可能对前 50K 每月访问者左右免费运行,每个每月 50K 访问者增量约为 2-3EUR p/m。
推荐阅读
- javascript - Javascript 编辑器和 console.log
- mysql - 如何将一个值扫描为空而不处理它?
- scala - Scala - List[MyObject] -> Map[Long, List[Long]]
- c# - 从 Azure Function HttpTrigger 返回错误详细信息
- java - 如果 ChangeListener 检测到更改,则更改 ComboBox 样式
- python - 生成以 k 为界且加起来为 n 的固定长度数字序列
- php - 如何从 Windows 7 中恢复 Bitnami Stack php 应用程序
- c - strtok(NULL, "\n") 是做什么的?
- c++ - 为什么错误:重新定义;y0 之前的定义是“功能”?
- sql - SQL Server 昨天计数