Amazon API Gateway
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

x-amazon-apigateway-integration 对象

指定用于该方法的后端集成的详细信息。此扩展是 OpenAPI 操作对象的扩展属性。结果是 API Gateway 集成对象。

属性

属性名称 类型 描述
cacheKeyParameters string 数组 一个需要缓存值的请求参数列表。
cacheNamespace string 相关缓存参数的 API 特定的标记组。
connectionId string 私有集成的 VpcLink 的 ID。
connectionType string 集成连接类型。对于私有集成,有效值为 "VPC_LINK",否则为 "INTERNET"
credentials string

对于基于 AWS IAM 角色的凭证,指定一个适当的 IAM 角色的 ARN。若未指定,凭证将默认为基于资源的许可,该许可必须手动添加,以使 API 能访问相应资源。有关更多信息,请参阅使用资源策略授予许可。注意:使用 IAM 凭证时,请确保已对部署 API 的区域启用 AWS STS 区域终端节点以实现最佳性能。

contentHandling string 请求负载编码转换类型。有效值为 1) CONVERT_TO_TEXT,用于将二进制负载转换为 Base64 编码字符串,或者将文本负载转换为 utf-8 编码字符串,或者在无任何修改的情况下直接传递文本负载,以及 2) CONVERT_TO_BINARY,用于将文本负载转换为 Base64 解码的二进制大型对象,或者在无任何修改的情况下直接传递二进制负载。
httpMethod string 集成请求中使用的 HTTP 方法。对于 Lambda 函数调用,值必须是 POST
passthroughBehavior string 指定如何在无任何修改的情况下通过集成请求传递未映射内容类型的请求负载。支持的值有 when_no_templateswhen_no_matchnever。有关更多信息,请参阅 Integration.passthroughBehavior
requestParameters x-amazon-apigateway-integration.requestParameters 对象 指定从方法请求参数到集成请求参数的映射。支持的请求参数有 querystringpathheaderbody
requestTemplates x-amazon-apigateway-integration.requestTemplates 对象 指定的 MIME 类型请求负载的映射模板。
responses x-amazon-apigateway-integration.responses 对象 定义方法的响应,并指定从集成响应到方法响应的所需的参数映射或负载映射。
timeoutInMillis integer 集成超时介于 50 毫秒到 29000 毫秒之间。
type string

与指定后端的集成的类型。有效值为

  • httphttp_proxy:适用于与 HTTP 后端集成;

  • aws_proxy:适用于与 AWS Lambda 函数集成;

  • aws:适用于与 AWS Lambda 函数或其他 AWS 服务集成,例如 Amazon DynamoDB、Amazon Simple Notification Service 或 Amazon Simple Queue Service;

  • mock:适用于与 API Gateway 集成,而无需调用任何后端。

有关集成类型的更多信息,请参阅 integration:type

uri string 后端的终端节点 URI。对于 aws 类型的集成,此为一个 ARN 值。对于 HTTP 集成,此为 HTTP 终端节点的 URL,包括 httpshttp 方案。

x-amazon-apigateway-integration 示例

下面的示例将 API 的 POST 方法与后端的 Lambda 函数进行了集成。出于演示目的,假定 requestTemplates 中显示的示例映射模板和下面示例中的 responseTemplates 适用于以下 JSON 格式的负载:{ "name":"value_1", "key":"value_2", "redirect": {"url" :"..."} },以生成 { "stage":"value_1", "user-id":"value_2" } 的 JSON 输出或 <stage>value_1</stage> 的 XML 输出。

"x-amazon-apigateway-integration" : { "type" : "aws", "uri" : "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:012345678901:function:HelloWorld/invocations", "httpMethod" : "POST", "credentials" : "arn:aws:iam::012345678901:role/apigateway-invoke-lambda-exec-role", "requestTemplates" : { "application/json" : "#set ($root=$input.path('$')) { \"stage\": \"$root.name\", \"user-id\": \"$root.key\" }", "application/xml" : "#set ($root=$input.path('$')) <stage>$root.name</stage> " }, "requestParameters" : { "integration.request.path.stage" : "method.request.querystring.version", "integration.request.querystring.provider" : "method.request.querystring.vendor" }, "cacheNamespace" : "cache namespace", "cacheKeyParameters" : [], "responses" : { "2\\d{2}" : { "statusCode" : "200", "responseParameters" : { "method.response.header.requestId" : "integration.response.header.cid" }, "responseTemplates" : { "application/json" : "#set ($root=$input.path('$')) { \"stage\": \"$root.name\", \"user-id\": \"$root.key\" }", "application/xml" : "#set ($root=$input.path('$')) <stage>$root.name</stage> " } }, "302" : { "statusCode" : "302", "responseParameters" : { "method.response.header.Location" : "integration.response.body.redirect.url" } }, "default" : { "statusCode" : "400", "responseParameters" : { "method.response.header.test-method-response-header" : "'static value'" } } } }

注意,映射模板中 JSON 字符串的双引号 (") 必须是转义字符串 (\")。