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

如何在AWS SAM模板中将API集成配置为非代理Lambda而非默认Lambda代理

SAM模板配置Lambda非代理集成及映射规则实现方法

核心配置逻辑

SAM默认生成的API Gateway Lambda集成为代理模式,要切换为非代理模式,需要显式定义AWS::Serverless::Api资源,不能使用隐式自动生成的API实例,同时在API的路径配置中指定集成类型为非代理、添加对应的请求/响应映射规则。

完整配置示例

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
  # 显式定义API Gateway资源
  MyNonProxyApi:
    Type: AWS::Serverless::Api
    Properties:
      StageName: prod
      DefinitionBody:
        swagger: '2.0'
        info:
          title: Non-proxy Lambda API
        paths:
          /test:
            post:
              # 配置非代理集成
              x-amazon-apigateway-integration:
                type: aws
                uri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyLambdaFunction.Arn}/invocations
                httpMethod: POST
                # 配置请求映射模板
                requestTemplates:
                  application/json: |
                    {
                      "body": $input.json('$'),
                      "queryParams": {
                        "foo": "$input.params('foo')"
                      },
                      "headerParams": {
                        "Content-Type": "$input.params('Content-Type')"
                      }
                    }
                # 配置响应映射规则
                responses:
                  default:
                    statusCode: 200
                    responseTemplates:
                      application/json: |
                        $input.json('$.payload')
              # 配置方法级别的响应状态码
              responses:
                '200':
                  description: 成功响应

  # Lambda函数定义
  MyLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: src/
      Handler: app.handler
      Runtime: python3.9
      Events:
        ApiEvent:
          Type: Api
          Properties:
            # 关联上面显式定义的非代理API
            RestApiId: !Ref MyNonProxyApi
            Path: /test
            Method: post

关键配置说明

  • 集成类型切换:x-amazon-apigateway-integration下的type设置为aws即为Lambda非代理集成,对应代理模式的aws_proxy
  • 请求映射配置:requestTemplates字段下可以按请求Content-Type定义不同的映射规则,自定义传递给Lambda的事件结构
  • 响应映射配置:responses字段下配置Lambda返回值到API Gateway响应的转换规则,同时可以指定响应头、状态码等参数

注意事项

  • 非代理模式下不会自动透传全量请求信息,需要的请求参数、头、路径变量都要手动在请求映射模板中声明
  • Lambda不需要返回代理模式要求的固定格式(包含statusCode、body、headers的结构),返回内容可以完全自定义,再通过响应映射模板转换为客户端需要的格式

内容的提问来源于stack exchange,提问作者Muhammad Ali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:39:03