无服务器和 AWS:API 网关覆盖阶段到缓存方法
Serverless and AWS: API Gateway Override Stage to Cache Method
我将无服务器框架与 AWS 一起使用,我在我的阶段启用了缓存并将阶段 MethodSettings -> Enable Caching 设置为 false,这样所有方法都不会缓存。我想为特定方法启用缓存,并看到我可以覆盖控制台中的阶段设置。需要设置什么配置值才能让我从无服务器 CF 模板执行此操作?
更新:
我在 serverless.yml
中完成了以下操作
ApiGatewayStage:
Type: "AWS::ApiGateway::Stage"
Properties:
CacheClusterEnabled: true
CacheClusterSize: "1.6"
MethodSettings:
- ResourcePath: "/*"
HttpMethod: "*"
CachingEnabled: false
- ResourcePath: "/~1events~1{eventId}~1geo~1{ipAddress}"
HttpMethod: "*"
CacheDataEncrypted: true
CacheTtlInSeconds: ${self:provider.environment.API_GATEWAY_CACHE_TTL}
CachingEnabled: true
我希望他将所有方法的缓存设置为 false,然后覆盖舞台上的给定资源以启用缓存。
我的问题是 ResourcePath 的编码不正确。以上是正确的:
ResourcePath: "/~1events~1{eventId}~1geo~1{ipAddress}"
但是,我编写的用于自动执行此操作的脚本在初始斜杠后没有第一个 ~1
。我没有注意到这一点,直到我把它打印出来并盯着它看……太久了。
我将无服务器框架与 AWS 一起使用,我在我的阶段启用了缓存并将阶段 MethodSettings -> Enable Caching 设置为 false,这样所有方法都不会缓存。我想为特定方法启用缓存,并看到我可以覆盖控制台中的阶段设置。需要设置什么配置值才能让我从无服务器 CF 模板执行此操作?
更新:
我在 serverless.yml
ApiGatewayStage:
Type: "AWS::ApiGateway::Stage"
Properties:
CacheClusterEnabled: true
CacheClusterSize: "1.6"
MethodSettings:
- ResourcePath: "/*"
HttpMethod: "*"
CachingEnabled: false
- ResourcePath: "/~1events~1{eventId}~1geo~1{ipAddress}"
HttpMethod: "*"
CacheDataEncrypted: true
CacheTtlInSeconds: ${self:provider.environment.API_GATEWAY_CACHE_TTL}
CachingEnabled: true
我希望他将所有方法的缓存设置为 false,然后覆盖舞台上的给定资源以启用缓存。
我的问题是 ResourcePath 的编码不正确。以上是正确的:
ResourcePath: "/~1events~1{eventId}~1geo~1{ipAddress}"
但是,我编写的用于自动执行此操作的脚本在初始斜杠后没有第一个 ~1
。我没有注意到这一点,直到我把它打印出来并盯着它看……太久了。