You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用TypeScript CDK为AWS API Gateway指定缓存键?

解决AWS CDK v2中API Gateway V1 REST API自定义缓存键的问题

针对你用aws-cdk-lib@2.182.0配置API Gateway V1 REST API缓存、将customerId路径参数设为缓存键的需求,正确做法是直接操作底层CloudFormation资源(CfnMethod)来配置——因为CDK的L2构造MethodOptions并未暴露缓存相关属性。

具体实现代码

import * as apigw from 'aws-cdk-lib/aws-apigateway';
import * as lambda from 'aws-cdk-lib/aws-lambda';
import { Duration } from 'aws-cdk-lib';

// 假设你已定义好methods(Resource对象)、lambda、requestAuthorizer、requestParamValidator等

// 添加GET方法
const getMethod = methods.addMethod('GET', new apigw.LambdaIntegration(lambda), {
  authorizer: requestAuthorizer,
  requestValidator: requestParamValidator,
  requestParameters: {
    'method.request.path.customerId': true,
  },
  methodResponses: [
    { statusCode: '200' },
    { statusCode: '404' },
    { statusCode: '401' },
  ],
});

// 获取对应的底层CfnMethod资源
const cfnGetMethod = getMethod.node.defaultChild as apigw.CfnMethod;

// 设置缓存键参数,启用方法级缓存
cfnGetMethod.addPropertyOverride('CacheKeyParameters', ['method.request.path.customerId']);
cfnGetMethod.addPropertyOverride('CachingEnabled', true);

关键说明

  1. 失败原因:CDK的L2构造Method的配置选项MethodOptions未包含cacheKeyParameters或CachingEnabled属性,必须通过底层CfnMethod设置这些CloudFormation原生属性。
  2. 方法级缓存启用:即使在部署阶段(deployOptions)开启了全局缓存,单个方法也需要显式设置CachingEnabled: true才会启用缓存。
  3. 缓存键格式:路径参数需用method.request.path.{paramName}格式,确保和requestParameters中声明的参数一致;若需多个缓存键,可在数组中添加多个对应格式的参数。

验证部署结果

部署完成后,在AWS控制台进入对应API的方法配置页面:

  • 切换到集成请求标签,找到缓存键参数,应能看到method.request.path.customerId已被添加。
  • 切换到方法请求标签,确认缓存已启用选项为开启状态。

内容的提问来源于stack exchange,提问作者Vinícius Santos de Pontes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 23:53:10