Со следующим шаблоном SAM:
Resources:
MyApi:
Type: AWS::Serverless::Api
Properties:
StageName: Prod
CacheClusterEnabled: true
CacheClusterSize: '0.5'
MethodSettings:
- HttpMethod: GET
CacheTtlInSeconds: 120
ResourcePath: "/getData"
CachingEnabled: true
DefinitionBody:
swagger: 2.0
basePath: /Prod
info:
title: OutService
x-amazon-apigateway-policy:
Version: "2012-10-17"
Statement:
- Effect: Allow
Principal: "*"
Action: execute-api:Invoke
Resource:
- execute-api:/*/*/*
paths:
"/getData":
get:
x-amazon-apigateway-integration:
httpMethod: POST
type: aws_proxy
uri:
Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${OutLambda.Arn}/invocations
responses: {}
EndpointConfiguration: PRIVATE
Cors:
AllowHeaders: "'*'"
Теперь / getData принимает параметры запроса, например, - /getData?path=abcd/efgh
с ответом 1234
.
Когда я запускаю API с путем /getData?path=abcd/efgh
, это кэшируется правильно - отвечает 1234
.
Однако после того, как я запустил API с другими параметрами запроса - например, /getData?path=uvw/xyz
ожидает ответа 789
ответ, кэшированный для первого запроса, возвращается - 1234
.
Как я могу убедиться, что кэширование применяется к путям с параметрами запроса?
Пример последовательности выданных запросов и соответствующих ответов:
/getData?path=abcd/efgh
-> 1234
возвращается и кэшируется в 11: 01: 01
/getData?path=uvw/xyz
-> 789
возвращается и кэшируется в 11: 01: 02
/getData?path=abcd/efgh
-> 1234
возвращается из кэша в 11: 01: 20
/getData?path=uvw/xyz
-> 789
возвращается из кэша в 11: 01: 31
EDIT
Я пытаюсь использовать RequestParameters
и затем сопоставить их с CacheKeyParameters
, как объяснено в этих 2 статьях - https://medium.com/@dougmoscrop/i-set-up-api-gateway-caching-here-are-some-things-that-surprised-me-7526d954fbe6 & https://theburningmonk.com/2016/04/serverless-enable-caching-on-query-string-parameters-in-api-gateway/,, но обе они используют безсерверную платформу, которой я являюсь не могу понять, как это вписалось бы в мой шаблон