无服务器 AWS 上的全球无边界实施 website/app
Global borderless implementation website/app on Serverless AWS
我计划使用 AWS 托管一个全球网站,该网站的客户遍布世界各地。我们将有一个网站和应用程序,我们将使用无服务器架构。我也会考虑多区域的DynamoDB,让离区域较近的用户访问最近的数据库实例。
我的问题是关于实施未锁定到特定区域的解决方案的最佳设计,我们是无边界实施。我也在关注不同国家/地区的高流量和大量用户。
我正在看这个 https://aws.amazon.com/getting-started/serverless-web-app/module-1/ 但它需要我选择一个区域。我几乎需要一个带有多个 S3 存储桶的路由器,但不知道怎么做。例如,用户如何访问离他们所在地区最近的着陆页副本?移动应用程序用户如何调用他们所在地区的 lambda 函数?
如果您能指出我的帖子或文章或您的回复,我将不胜感激。
注意:如果 Google 云平台也是一个选项,您会感兴趣吗?
谢谢!
S3
无需设置 S3
存储桶 per-region,您可以设置 CloudFront 分配以在所有边缘位置提供单个存储桶的内容。
在 Create Distribution
过程中,select Origin Domain Name
下拉列表中的 S3 存储桶。
警告:更新存储桶内容时,您需要使 CloudFront 缓存失效,以便分发更新的内容。这没什么大不了的。
API 网关
设置 API 网关后,您可以选择 Edge-Optimized
或 Regional
。
在 Edge-Optimized
情况下,AWS 会自动通过边缘网络为您的 API 提供服务,但所有请求都会路由回其所在区域中的原始 API 网关实例。这是简单的选择。
在 Regional
情况下,您需要部署 API 的多个实例,每个区域一个。从那里,您可以在 Route 53 中进行 latency-based 路由设置。这是更难的选择,但更灵活。
注意:您始终可以在 Edge-Optimized
配置中开始开发,然后再重新部署到 Regional
配置。
DynamoDB/Lambda
DynamoDB 和 Lambda 是区域服务,但您可以将实例部署到多个区域。
对于 DynamoDB,您可以使用流函数设置 cross-region 复制。
虽然我没有实现过,AWS provides documentation on how to set up replication
注意:与 Edge-Optimized
API 网关一样,您可以开始在单个区域中开发 DynamoDB tables 和 Lambda 函数,然后扩展到 multi-regional部署。
更新
如评论中所述,DynamoDB 具有称为全局表的功能,它可以为您处理 cross-regional 复制。看起来相当简单——创建一个 table,然后从 Global Tables
选项卡管理其 cross-region 复制(从该选项卡,启用流,然后添加其他区域)。
欲了解更多信息,here are the AWS Docs
在撰写本文时,此功能仅在以下区域受支持:US West (Oregon)
、US East (Ohio)
、US East (N. Virginia)
、EU (Frankfurt)
、EU West (Ireland)
.我想当有足够多的客户在其他地区请求此功能时,它就会可用。
另请注意,您可以 运行 Lambda@Edge 函数来响应 CloudFront 事件。
lambda 函数可以在 运行 时检查 AWS_REGION
环境变量,然后调用(并转发请求详细信息)region-appropriate 服务(例如 API 网关).这意味着您还可以通过自己检查查询字符串 (YMMV),将 Lambda@Edge 用作 API 网关替代品。
我计划使用 AWS 托管一个全球网站,该网站的客户遍布世界各地。我们将有一个网站和应用程序,我们将使用无服务器架构。我也会考虑多区域的DynamoDB,让离区域较近的用户访问最近的数据库实例。
我的问题是关于实施未锁定到特定区域的解决方案的最佳设计,我们是无边界实施。我也在关注不同国家/地区的高流量和大量用户。
我正在看这个 https://aws.amazon.com/getting-started/serverless-web-app/module-1/ 但它需要我选择一个区域。我几乎需要一个带有多个 S3 存储桶的路由器,但不知道怎么做。例如,用户如何访问离他们所在地区最近的着陆页副本?移动应用程序用户如何调用他们所在地区的 lambda 函数?
如果您能指出我的帖子或文章或您的回复,我将不胜感激。
注意:如果 Google 云平台也是一个选项,您会感兴趣吗?
谢谢!
S3
无需设置 S3
存储桶 per-region,您可以设置 CloudFront 分配以在所有边缘位置提供单个存储桶的内容。
在 Create Distribution
过程中,select Origin Domain Name
下拉列表中的 S3 存储桶。
警告:更新存储桶内容时,您需要使 CloudFront 缓存失效,以便分发更新的内容。这没什么大不了的。
API 网关
设置 API 网关后,您可以选择 Edge-Optimized
或 Regional
。
在 Edge-Optimized
情况下,AWS 会自动通过边缘网络为您的 API 提供服务,但所有请求都会路由回其所在区域中的原始 API 网关实例。这是简单的选择。
在 Regional
情况下,您需要部署 API 的多个实例,每个区域一个。从那里,您可以在 Route 53 中进行 latency-based 路由设置。这是更难的选择,但更灵活。
注意:您始终可以在 Edge-Optimized
配置中开始开发,然后再重新部署到 Regional
配置。
DynamoDB/Lambda
DynamoDB 和 Lambda 是区域服务,但您可以将实例部署到多个区域。
对于 DynamoDB,您可以使用流函数设置 cross-region 复制。
虽然我没有实现过,AWS provides documentation on how to set up replication
注意:与 Edge-Optimized
API 网关一样,您可以开始在单个区域中开发 DynamoDB tables 和 Lambda 函数,然后扩展到 multi-regional部署。
更新
如评论中所述,DynamoDB 具有称为全局表的功能,它可以为您处理 cross-regional 复制。看起来相当简单——创建一个 table,然后从 Global Tables
选项卡管理其 cross-region 复制(从该选项卡,启用流,然后添加其他区域)。
欲了解更多信息,here are the AWS Docs
在撰写本文时,此功能仅在以下区域受支持:US West (Oregon)
、US East (Ohio)
、US East (N. Virginia)
、EU (Frankfurt)
、EU West (Ireland)
.我想当有足够多的客户在其他地区请求此功能时,它就会可用。
另请注意,您可以 运行 Lambda@Edge 函数来响应 CloudFront 事件。
lambda 函数可以在 运行 时检查 AWS_REGION
环境变量,然后调用(并转发请求详细信息)region-appropriate 服务(例如 API 网关).这意味着您还可以通过自己检查查询字符串 (YMMV),将 Lambda@Edge 用作 API 网关替代品。