Meh*_*ran 38 amazon-web-services aws-api-gateway
这对我来说根本没有意义.创建新的API网关时,您可以指定它是区域优化还是边缘优化.但是,再次,当您为API网关创建自定义域名时,您可以在两者之间进行选择.
最糟糕的是,你可以混合搭配!您可以为边缘优化的API网关提供区域自定义域名,这对我来说绝对毫无意义!
为什么这两个可以分别进行区域/边缘优化?我什么时候想让它们中的每一个都进行区域/边缘优化?
Mic*_*bot 103
为什么这两个可以分别进行区域/边缘优化?
区域和边缘优化是部署选项.这两个选项都没有改变AWS基础架构如何处理API的基本要求,一个请求到达API网关服务的核心,或者最终如何访问API网关后面的服务 - 请求最初如何到达AWS和被传递到API网关核心以供执行.更多关于此,下面.
使用自定义域名时,会在第二个端点上再次部署所选API阶段,这就是您必须选择第二种部署类型的原因.
每个端点都具有其部署类型的特征,无论是区域还是边缘优化.如果使用自定义域名部署API,则本身的原始部署类型不会影响API的行为,并且随后使用该自定义域名进行访问 - 它们是独立的.
通常,如果使用自定义域名部署API,则不会继续使用为主API创建的部署端点(例如xxxx.execute-api.{region}.amazonaws.com
),因此初始选择无关紧要.
我什么时候想让它们中的每一个都进行区域/边缘优化?
如果您使用的是自定义域名,那么,如上所述,当您使用自定义域时,整个API的原始部署选择不会产生进一步的影响.
边缘优化端点最初是唯一可用的选项.如果您没有任何基于您的选择的东西,这个选择通常是合理的选择.
此选项通过AWS"Edge Network"(即CloudFront网络)路由传入请求,其中包含100多个全局边缘位置.这不会改变API网关核心最终处理您的请求的位置 - 它们最终仍在同一区域内处理 - 但请求从世界各地路由到最近的AWS边缘,并且它们从那里运行的网络上运行通过AWS到达您部署API的区域.
如果API Gateway阶段的客户端是全局分散的,并且您只在单个区域中部署API,则可能需要进行边缘优化部署.
边缘优化配置往往会为您提供更好的全局响应能力,因为它可以减少网络往返的影响,并且传输质量不受公共互联网中许多变幻莫测的影响,因为请求覆盖范围最小在从Internet跳到AWS网络之前可能的距离.TCP握手和TLS通过短距离(从客户端到边缘)与连接的浏览器/客户端协商,边缘网络维护可以重用的保持连接,所有这些通常对您有利...但是,当您的客户始终(或通常)在同一区域内的AWS基础架构内调用API时,此优化会成为相对损害,因为请求需要跳转到边缘网络然后再返回到核心区域网络.
如果您的API网关阶段的客户端位于AWS内部并且位于您部署API的同一区域内(例如,当该区域内的EC2中的其他系统调用API时),那么您很可能需要区域端点.区域端点通过较少的AWS基础架构路由请求,确保在同一区域内来自EC2的请求时,最小延迟和减少的抖动.
作为通过边缘网络路由的副作用,边缘优化端点还提供了一些您可能会觉得有用的额外请求标头,例如CloudFront-Viewer-Country: XX
尝试识别构成API的客户端的地理位置的两位数国家/地区代码请求.区域端点没有这些标头.
作为一般规则,除非您找到不这样做的理由,否则请使用边缘优化.
有什么理由不去?如上所述,如果您或其他人在同一AWS区域内调用API,您可能需要一个区域端点.边缘优化端点可以在更高级或更复杂的配置中引入一些边缘情况副作用,因为它们集成到基础架构的其余部分中.对于边缘优化部署,您可以做一些事情,或者如果您执行以下操作,则不是最佳选择:
如果您将CloudFront用于与API网关无关的其他站点,并且为通配符备用域名配置了CloudFront *.example.com
,则不能使用该通配符域中的子域,例如api.example.com
,在边缘优化的端点上使用自定义域名,因为API网关代表您向边缘网络提交请求,以便在通过CloudFront到达时声明对该子域的所有请求,并且CloudFront拒绝此请求,因为它与API网关一起使用时表示不受支持的配置,即使CloudFront在其他一些情况下支持它.
如果要提供在多个区域中响应相同自定义域名的冗余API,并使用Route 53基于延迟的路由将请求传递到离请求者最近的区域,则不能使用边缘优化的自定义来执行此操作域,因为第二个API网关区域将无法在边缘网络上声明该子域的流量,因为边缘网络对于任何给定的域名(子域)只需要1个目标.此配置可以使用区域端点和Route 53 LBR实现,或者可以通过使用您自己的CloudFront分配利用边缘网络来实现,Lambda @ Edge可以根据呼叫者的位置选择目标端点,以及API网关区域部署.请注意,如果您需要支持调用方的IAM身份验证,则无法通过任何方式实现此目的,因为调用方需要在签名和提交请求之前知道目标区域.
如果您希望将API用作集成多个资源的大型站点的一部分,则部署在CloudFront后面,并使用路径路由到不同的服务 - 例如,/images/*
可能路由到S3存储桶,/api/*
可能会路由到您的API网关stage(以及*
其他所有内容)可能会路由到EC2中的弹性负载均衡器 - 然后您不希望使用边缘优化的API,因为这会导致您的请求在边缘网络中循环两次(增加延迟)并导致一些标题值丢失.此配置不会中断,但不是最佳配置.为此,需要一个区域终点.
归档时间: |
|
查看次数: |
8656 次 |
最近记录: |