Amazon web services AWS体系结构-Web应用程序(图表)
我正在为一个web项目建立一个中型AWS基础设施。我可能想得太多了,因此想征求社区的意见。欢迎您的任何意见 请参见图示: 说明(从左到右):Amazon web services AWS体系结构-Web应用程序(图表),amazon-web-services,web,architecture,Amazon Web Services,Web,Architecture,我正在为一个web项目建立一个中型AWS基础设施。我可能想得太多了,因此想征求社区的意见。欢迎您的任何意见 请参见图示: 说明(从左到右): 我的域名托管在GoDaddy上,只需路由到Cloudfront即可全局缓存静态内容 Cloudfront将指向Route53,它负责根据地理最大值和/或延迟将用户路由到最近的区域 每个区域都有一个指向EC2实例的可用性负载平衡器(灾难回退的不同可用性区域) 从那里,每个EC2实例都写入一个MySQL数据库。静态内容从S3存储桶加载 此MySQL数据库跨可
非常感谢大家 在第6步之前,事情看起来是合理的。不需要找到最近的MySQL数据库,因为您的实例已经知道它在哪里——它是本地区的数据库 步骤7有问题,因为ELBs不能用于平衡RDS实例。但是,使用Aurora/MySQL,您可以获得一个集群“阅读器”端点主机名,该主机名带有一个短TTL,用于跨Aurora副本进行负载平衡。如果复制副本死亡,它将自动从DNS中删除 步骤8严格来说,不必使用API网关——实例可以通过Lambda API直接调用Lambda函数 此外,还有Lambda@Edge这允许直接从CloudFront触发Lambda函数——尽管如果您需要的Lambda函数大小较大(依赖项)或需要在VPC内运行,您必须级联其中两个——边缘函数(不在VPC中)调用区域函数(大型或在VPC中)--但这通常仍然比API网关便宜。边缘函数自动进行全局复制,并在距离处理单个请求的CloudFront Edge最近的区域运行,在任何给定的函数调用中,都可以通过检查
process.env.AWS\u region
来识别。边缘函数也可用于更改为内容提供服务的来源——因此,例如,如果您的函数看到它在欧盟地区被调用,它可以重写请求,以便CloudFront将S3请求发送到欧盟存储桶
如果您的站点位于域的顶点,例如
example.com
而不是www.example.com
,则您的域将需要托管在路由53中,而不是Go Daddy,因为DNS标准中的约束不允许CloudFront在顶点要求的动态行为。您仍然可以在他们那里注册您的域名,但不是由他们托管。非常感谢!这是巨大的投入。我想第7点和第8点现在已经清楚了。不过,我确实要跟进第6点。如果我删除了路由db读取请求的Route53,我的读取副本不是有多个端点吗?如果是这样,那就需要我更改代码,以便欧盟区域从欧盟读取副本终结点读取,对吗?代码可以从实例元数据服务中发现它正在运行的区域,从而知道要使用哪个终结点。谢谢Michael…将关闭您的电子邮件;-)