如何通过SAM模板定义仅含Mock响应的无Lambda API Gateway?
纯Mock集成API Gateway的SAM模板实现
你可以直接通过内嵌OpenAPI定义的AWS::Serverless::Api资源实现需求,无需关联Lambda函数、无需引入外部OAS文件,完整模板如下:
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: Mock API Gateway without Lambda Resources: MyMockApi: Type: AWS::Serverless::Api Properties: StageName: prod DefinitionBody: openapi: 3.0.1 info: title: MockHelloWorldApi version: '1.0' paths: /: get: responses: '200': description: 成功响应 content: application/json: schema: type: string x-amazon-apigateway-integration: type: mock requestTemplates: application/json: | { "statusCode": 200 } responses: default: statusCode: "200" responseTemplates: application/json: "\"hello world\"" Outputs: ApiEndpoint: Description: Mock API调用地址 Value: !Sub "https://${MyMockApi}.execute-api.${AWS::Region}.amazonaws.com/prod/"
关键配置说明
- 所有API规则直接内嵌在
DefinitionBody字段中,SAM会自动完成解析、创建、部署全流程,不需要额外维护外部配置文件 x-amazon-apigateway-integration的type显式指定为mock,无需配置任何后端服务、Lambda ARN等参数- 请求映射模板固定返回
{"statusCode": 200},直接命中默认200集成响应规则,不需要额外配置正则匹配、模型等规则 - 响应映射模板指定
application/json类型返回静态文本"hello world",和控制台手动配置的效果完全一致 - 模板不依赖Lambda、S3等额外资源,部署过程仅创建API Gateway相关资源
部署步骤
- 将上述模板保存为
template.yaml文件 - 首次部署执行
sam deploy --guided按照提示完成参数配置,后续更新直接执行sam deploy即可 - 部署完成后可直接从CloudFormation输出中拿到API调用地址,GET请求根路径即可得到
hello world响应
内容的提问来源于stack exchange,提问作者mud
相关产品推荐
相关产品推荐

