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

将 VPC 终端节点与私有 REST API 关联或取消关联

当您将 VPC 终端节点与私有 API 关联时,API Gateway 会生成一个新的 Route53 ALIAS DNS 记录,您可以使用它来调用私有 API,就像执行边缘优化或区域性 API 一样,而无需覆盖 Host 标头或传递 x-apigw-api-id 标头。

生成的基本 URL 采用以下格式:

https://{rest-api-id}-{vpce-id}.execute-api.{region}.amazonaws.com/{stage}

将 VPC 终端节点与私有 REST API 关联或取消关联要求您更新 API 的配置。您可以使用 API Gateway 控制台、AWS CLI 或适用于 API Gateway 的 AWS 开发工具包执行此更改。由于 DNS 传播,更新操作可能需要几分钟才能完成。在这段时间内,您的 API 将可用,但新生成的 DNS URL 的 DNS 传播可能仍在进行中。如果几分钟后您的新 URL 仍无法在 DNS 中解析,可以尝试为您的 API 创建新部署

使用 AWS CLI 将 VPC 终端节点与私有 REST API 关联

要在创建 API 时关联 VPC 终端节点,请使用以下命令:

aws apigateway create-rest-api \ --name Petstore \ --endpoint-configuration '{ "types": ["PRIVATE"], "vpcEndpointIds" : ["vpce-0212a4ababd5b8c3e", "vpce-0393a628149c867ee"] }' \ --region us-west-2 { "apiKeySource": "HEADER", "endpointConfiguration": { "types": [ "PRIVATE" ], "vpcEndpointIds": [ "vpce-0212a4ababd5b8c3e", "vpce-0393a628149c867ee" ] }, "id": "u67n3ov968", "createdDate": 1565718256, "name": "Petstore" }

要将 VPC 终端节点与已创建的私有 API 关联,请使用以下 CLI 命令:

aws apigateway update-rest-api \ --rest-api-id u67n3ov968 \ --patch-operations "op='add',path='/endpointConfiguration/vpcEndpointIds',value='vpce-01d622316a7df47f9'" --region us-west-2

输出将与以下内容类似:

{ "name": "Petstore", "apiKeySource": "1565718256", "tags": {}, "createdDate": 1565718256, "endpointConfiguration": { "vpcEndpointIds": [ "vpce-0212a4ababd5b8c3e", "vpce-0393a628149c867ee", "vpce-01d622316a7df47f9" ], "types": [ "PRIVATE" ] }, "id": "u67n3ov968" }

使用 AWS CLI 将 VPC 终端节点与私有 REST API 取消关联

要从私有 API 取消关联 VPC 终端节点,请使用以下 CLI 命令:

aws apigateway update-rest-api \ --rest-api-id u67n3ov968 \ --patch-operations "op='remove',path='/endpointConfiguration/vpcEndpointIds',value='vpce-0393a628149c867ee'" --region us-west-2

输出将与以下内容类似:

{ "name": "Petstore", "apiKeySource": "1565718256", "tags": {}, "createdDate": 1565718256, "endpointConfiguration": { "vpcEndpointIds": [ "vpce-0212a4ababd5b8c3e", "vpce-01d622316a7df47f9" ], "types": [ "PRIVATE" ] }, "id": "u67n3ov968" }