选择 API Gateway API 集成类型 - Amazon API Gateway

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

选择 API Gateway API 集成类型

您可以根据所使用的集成终端节点的类型以及希望如何与集成终端节点往返传输数据,来选择 API 集成类型。对于 Lambda 函数,您可以使用 Lambda 代理集成或 Lambda 自定义集成。对于 HTTP 终端节点,您可以使用 HTTP 代理集成,或者 HTTP 自定义集成。对于 AWS 服务操作,您只能使用非代理类型的 AWS 集成。API Gateway 还支持模拟集成,在这种情况下,API Gateway 用作集成终端节点来响应方法请求。

Lambda 自定义集成是‭AWS‬集成的特殊用例,其中集成终端节点对应于 Lambda 服务的函数调用操作

您可以采用编程方式,通过设置 Integration 资源中的 type 属性来选择集成类型。对于 Lambda 代理集成,该值为 AWS_PROXY。对于 Lambda 自定义集成以及所有其他 AWS 集成,这是 AWS。对于 HTTP 代理集成和 HTTP 集成,该值分别为 HTTP_PROXYHTTP。对于模拟集成,type 值为 MOCK

Lambda 代理集成支持通过单个 Lambda 函数来简化集成设置。设置很简单,并且可以随后端演变,而无需停用现有设置。出于这些原因,强烈建议使用 Lambda 函数集成。

相比之下,Lambda 自定义集成允许将配置的映射模板用于各种具有类似输入和输出数据格式要求的集成终端节点。设置会更为复杂,建议用于更高级的应用程序场景。

同样,HTTP 代理集成具有简化的集成设置,可以随后端演变,而无需停用现有设置。HTTP 自定义集成的设置更为复杂,但允许将配置的映射模板重新用于其他集成终端节点。

下表汇总了支持的终端节点类型:

  • AWS:这种类型的集成使得 API 可以公开 AWS 服务操作。在 AWS 集成中,您必须同时配置集成请求和集成响应,并设置从方法请求到集成请求以及从集成响应到方法响应的必需数据映射。

  • AWS_PROXY:这种类型的集成让 API 方法可以通过灵活、多功能和简化的集成设置与 Lambda 函数调用操作集成。这种集成依赖于客户端与集成的 Lambda 函数之间的直接交互。

    借助于这类集成,也称为 Lambda 代理集成,您无需设置集成请求或集成响应。API Gateway 将来自客户端的传入请求作为输入传递给后端 Lambda 函数。集成 Lambda 函数采用此格式的输入并解析来自所有可用源的输入,包括请求标头、URL 路径变量、查询字符串参数以及适用的正文。函数返回的结构遵守此输出格式

    这是通过 API Gateway 调用 Lambda 函数的首选集成类型,不适用于任何其他 AWS 服务操作,包括函数调用操作之外的 Lambda 操作。

  • HTTP:这种类型的集成允许 API 在后端中公开 HTTP 终端节点。借助于 HTTP 集成,也称为 HTTP 自定义集成,您必须同时配置集成请求和集成响应。您必须设置从方法请求到集成请求以及从集成响应到方法响应的必需映射。

  • HTTP_PROXY:HTTP 代理集成允许客户端使用单个 API 方法上的简化集成设置来访问后端 HTTP 终端节点。您无需设置集成请求或集成响应。API Gateway 将来自客户端的传入请求传递到 HTTP 终端节点,并将来自 HTTP 终端节点的传出响应传递到客户端。

  • MOCK:这种类型的集成允许 API Gateway 返回响应而不将请求进一步发送给后端。这对于 API 测试非常有用,因为它可用于测试集成设置而不会导致使用后端的收费,并可以实现协作开发 API。

    在协作开发中,团队可以通过使用 MOCK 集成,设置其他团队拥有的 API 组件的模拟,从而隔离其开发工作。它还可用于返回与 CORS 相关的标头以确保 API 方法允许 CORS 访问。事实上,API Gateway 控制台集成 OPTIONS 方法以通过模拟集成来支持 CORS。网关响应是模拟集成的其他示例。