Serverless框架应用能否复用预生成的API Gateway URL?
结论
完全可以实现。Serverless Framework支持直接挂载已存在的API Gateway实例,复用其原生默认URL新增接口,不需要为新应用分配独立URL,也不需要额外配置自定义域名。
操作步骤
- 先提取存量API Gateway的核心参数
从原有CloudFormation栈输出、或者API Gateway控制台获取3个必填值:- 存量API的ID:原生API URL格式为
https://{apiId}.execute-api.{region}.amazonaws.com/{stage},域名前缀第一段就是API ID - API根资源ID:即API根路径
/对应的资源唯一标识 - API部署所在区域、已经在用的阶段名(比如
prod、test)
- 存量API的ID:原生API URL格式为
- 修改项目根目录下的
serverless.yml配置,关闭框架默认自动创建新API Gateway的逻辑,绑定存量实例,核心配置片段如下:
provider: name: aws runtime: # 替换为项目实际使用的运行时,例如nodejs18.x、python3.10 region: # 替换为存量API所在区域,例如ap-northeast-1 stage: # 替换为存量API正在使用的阶段名,*必须和存量配置保持一致*,否则会创建新的部署阶段,无法直接通过原有路径访问新接口 apiGateway: restApiId: # 填入前面拿到的存量API ID restApiRootResourceId: # 填入前面拿到的根资源ID
- 给部署用的IAM账号/角色补全权限,确保其拥有该存量API Gateway的资源创建、方法配置、集成绑定、版本部署权限,否则部署过程会抛权限错误。
注意事项
- 配置新接口路径前,先拉取存量API下已有的所有接口路径清单,避免路径重名覆盖原有应用的接口配置,引发线上故障。
- 配置完成后正常执行
serverless deploy部署即可,新接口会直接挂载到原有API实例下,通过已有的原生URL访问,不会生成新的独立API地址。 - 存量API上已经配置的WAF防护、流量节流、认证鉴权、自定义域名映射规则会自动对新接口生效,无需重复配置。
内容的提问来源于stack exchange,提问作者Rory Hutchings
相关产品推荐
相关产品推荐

