我想为我的无服务器功能启用API网关的缓存,但是却很难理解在何处以及以何种方式进行操作。
我曾尝试在无服务器功能中设置queryStringParameters,但这会导致错误,还尝试将其添加到我的GLOBAL Api下,但没有运气(也希望避免在全局范围内这样做)
还检查了我在API网关中的资源,并为其中的RequestParams和QueryStringParams禁用了缓存。
模板
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Globals:
Api:
EndpointConfiguration: REGIONAL
CacheClusterEnabled: true
CacheClusterSize: "0.5"
MethodSettings:
- CachingEnabled: true
CacheDataEncrypted: true
CacheTtlInSeconds: 60
HttpMethod: "*"
ResourcePath: "/*"
Resources:
......
GetItem:
Type: 'AWS::Serverless::Function'
Properties:
Handler: GetItem.handler
Runtime: nodejs8.10
Timeout: 20
CodeUri: "codes"
Events:
GetItem:
Type: Api
Properties:
Path: /item/{itemCode}
Method: get
......
***********************************编辑*********** **********************
如果API网关不知道这些参数,那么它将在缓存https://forums.aws.amazon.com/thread.jspa?messageID=915838󟥾时忽略它
我试图将多个methodSetting条目添加到模板中,似乎CF不会忽略它,但结果仍然相同。另外,我不确定是否可以对queryStringParameters执行相同的操作。
- ResourcePath: "/~1item~1/~1{itemCode}"
CachingEnabled: true
CacheDataEncrypted: true
CacheTtlInSeconds: 60
HttpMethod: "*"
***********************************编辑*********** **********************
我希望有一种方法可以对每个资源(也称为“ AWS :: Serverless :: Function”)下的RequestParams和QueryParams进行缓存。
非常感谢您的帮助。
答案 0 :(得分:0)
目前,SAM框架不支持这样做。他们计划发布更新,以在以下链接上启用更多功能:https://github.com/awslabs/serverless-application-model/issues/1140
直到那时,我才能够提出在OS网关前面创建CloudFront分配的唯一解决方案,虽然有点浪费资源,但是效果很好。