JAc*_*k28 8 amazon-web-services amazon-cloudfront aws-api-gateway api-gateway
我对API Gateway和CloudFront如何协同工作感到困惑.最终,我希望能够将自定义标头和值视为我的缓存键的一部分.我知道这可以通过白名单来完成(如果我使用的是CloudFront).
所以当我提出以下要求时:
GET/pagesRead/4 Some-Header:fizz
例如,返回'29页'
然后有一篇帖子将id 4更新为'45页'
如果我提出这个请求
GET/pagesRead/4 Some-Header:buzz
它现在将返回'45页'
但我正在使用API网关,显然它在幕后拥有自己的CloudFront.有没有办法可以配置API网关使用其"幕后"CloudFront将我的自定义标题列入白名单?这甚至需要做吗?
根据这个文档:https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-caching.html,似乎我可以在API网关中启用API缓存,它会考虑我的标题作为缓存键的一部分.
我理解正确吗?如果我想要的只是我的标题是缓存键的一部分,那么API网关中的"启用API缓存"和在API网关之上添加CloudFront实例以及在CloudFront中列入白名单之间有什么区别?
更新:
但是在GET上,我从缓存中获取过时的数据.
GET/pagesRead/4 test-header:buzz
Mic*_*bot 11
不同之处在于API Gateway实际上并未使用CloudFront缓存.CloudFront确实为所有API网关API边缘优化的API端点¹提供了一些前端服务,但基于以下内容,缓存似乎不是其中之一:
API Gateway通过创建专用缓存实例来启用缓存.
...和...
您不应使用
X-CacheCloudFront响应中的标头来确定您的API是否从API网关缓存实例提供.https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-caching.html
可以在您创建的CloudFront分配后面级联Edge优化的API网关端点,但这并非没有一些不便之处.由于您正在通过更多系统,因此延迟会有所增加.鉴于配置,CloudFront-Is-*-Viewer和CloudFront-Viewer-Country标头以及客户端IP的任何概念都将无效,因为API网关部署将看到位于其前面的其他CloudFront分配的属性,而不是真实客户端的属性. X-Forwarded-For仍然是正确的,但必须小心处理,因为它将包含一个必须正确处理的额外跳.
对于要将API Gateway置于自己的CloudFront分配之后的应用程序,请使用其中一个新的区域端点来部署API阶段.
它会将我的标题视为缓存键的一部分.
您必须根据引用的文档显式配置缓存键,但是,API网关缓存将根据该标头的值以及缓存键中的其他属性缓存响应.
¹ 边缘优化端点.API Gateway现在有两种不同的端点.原始设计现在称为边缘优化,新选项称为区域设计.区域端点不使用CloudFront的前端服务,并且在从同一AWS区域内的EC2访问时可能提供较低的延迟.在推出新的区域功能时,所有现有端点都被归类为边缘优化.使用区域端点时,CloudFront-*请求中不会显示标头,除非您使用自己的CloudFront分配并将这些标头列入白名单以转发到源.
| 归档时间: |
|
| 查看次数: |
7148 次 |
| 最近记录: |