针对 API Gateway 中的 HTTP API 创建私有集成 - Amazon API Gateway

针对 API Gateway 中的 HTTP API 创建私有集成

私有集成使您能够与 VPC 中的私有资源(如 Application Load Balancer 或基于 Amazon ECS 容器的应用程序)创建 API 集成。

您可以使用私有集成公开 VPC 中的资源,以便 VPC 外部的客户端访问。您可以使用 API Gateway 支持的任何授权方法来控制对 API 的访问。

要创建私有集成,您必须首先创建 VPC 链接。要了解有关 VPC 链接的更多信息,请参阅 设置针对 API Gateway 中的 HTTP API 的 VPC 链接

创建 VPC 链接后,您可以设置私有集成,以连接到 Application Load Balancer、Network Load Balancer 或注册到 AWS Cloud Map 服务的资源。

要创建私有集成,所有资源必须归同一AWS账户所有(包括负载均衡器或 AWS Cloud Map 服务、VPC 链接和 HTTP API)。

默认情况下,私有集成流量使用 HTTP 协议。如果您要求私有集成流量使用 HTTPS,则可以指定 tlsConfig。要使用 AWS Management Console执行此操作,请在创建私有集成时,选择高级设置,然后输入安全服务器名称。

注意

对于私有集成,API Gateway 在对后端资源的请求中包括 API 终端节点的阶段部分。例如,对 API 的 test 阶段的请求在对私有集成的请求中包含 test/route-path。要从对后端资源的请求中删除阶段名,请使用参数映射覆盖 $request.path 的请求路径。

使用 Application Load Balancer 或 Network Load Balancer 创建私有集成

在创建私有集成之前,您必须创建 VPC 链接。要了解有关 VPC 链接的更多信息,请参阅 设置针对 API Gateway 中的 HTTP API 的 VPC 链接

要创建与 Application Load Balancer 或 Network Load Balancer 的私有集成,请创建 HTTP 代理集成,指定要使用的 VPC 链接,并提供负载均衡器的侦听器 ARN。

使用以下命令创建私有集成,该私有集成通过 VPC 链接连接到负载均衡器。

aws apigatewayv2 create-integration --api-id api-id --integration-type HTTP_PROXY \ --integration-method GET --connection-type VPC_LINK \ --connection-id VPC-link-ID \ --integration-uri arn:aws:elasticloadbalancing:us-east-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/0467ef3c8400ae65 --payload-format-version 1.0

使用 AWS Cloud Map 服务发现创建私有集成

在创建私有集成之前,您必须创建 VPC 链接。要了解有关 VPC 链接的更多信息,请参阅 设置针对 API Gateway 中的 HTTP API 的 VPC 链接

为了与 AWS Cloud Map 集成,API Gateway 使用 DiscoverInstances 来识别资源。您可以使用查询参数来定位特定资源。已注册资源的属性必须包括 IP 地址和端口。API Gateway 在从 DiscoverInstances 返回的运行状况良好的资源之间分发请求。如需了解详情,请参阅 AWS Cloud Map API 参考中的 DiscoverInstances

注意

如果您使用 Amazon ECS 填充 AWS Cloud Map 中的条目,则必须将您的 Amazon ECS 任务配置为通过 Amazon ECS 服务发现使用 SRV 记录,或者开启 Amazon ECS Service Connect。有关更多信息,请参阅《Amazon Elastic Container Service 开发人员指南》中互连服务

要使用 AWS Cloud Map 创建私有集成,请创建 HTTP 代理集成,指定要使用的 VPC 链接,并提供 AWS Cloud Map 服务的 ARN。

使用以下命令创建私有集成,该私有集成通过 AWS Cloud Map 服务发现来标识资源。

aws apigatewayv2 create-integration --api-id api-id --integration-type HTTP_PROXY \ --integration-method GET --connection-type VPC_LINK \ --connection-id VPC-link-ID \ --integration-uri arn:aws:servicediscovery:us-east-2:123456789012:service/srv-id?stage=prod&deployment=green_deployment --payload-format-version 1.0