如何使用应用程序或网络负载均衡器来调用 API Gateway 私有 API?
我想将自己的 Amazon API Gateway 私有 API 设置为负载均衡器后面的目标。然后,我想使用 AWS 账户从应用程序或网络负载均衡器访问自己的私有 API。
简短描述
若要使用 Amazon Direct Connect 或 Amazon Route 53 访问您的私有 API,请参阅如何调用私有 API。您还可以使用接口 VPC 端点访问另一个 AWS 账户中的 API Gateway 私有 REST API。
以下解决方法使用 Amazon Virtual Private Cloud(Amazon VPC)端点弹性网络接口 IP 地址。使用此 IP 地址,您可以将私有 API 作为目标添加到负载均衡器中。
**重要事项:**API Gateway 不支持私有 API 的自定义域名。解决方法是,您可以调用该域并将其连接到负载均衡器。然后,使用以下设置来调用私有 API。
解决方法
创建 Amazon VPC 端点
1. 打开 Amazon VPC 控制台。
2. 选择端点,然后选择创建端点。
**注意:**如果您已经在 VPC 中使用 API execute-api 设置了任何 Amazon VPC 端点,请关闭私有 DNS。
-
在服务处,选择 com.amazonaws.com.your-region.execute-api。
-
在 VPC 处,选择您的 Amazon VPC。
5. 在 子网 处,选择不同可用区(AZ ID)中的两个子网,然后选择创建端点。
- 选择您的端点,选择子网,然后复制 IP 地址。
有关更多信息,请参阅为 API Gateway execute-api 创建接口 VPC 端点。
创建私有 REST API 并授予 Amazon VPC 端点权限
-
打开 API Gateway 控制台,然后选择创建 API。
-
在 REST API 处,选择构建。
-
在设置中,输入以下信息:
在 API 名称处,输入 API 的名称。
在端点类型处,选择私有。
在端点 ID处,输入您创建的端点 ID。
4. 选择创建 API。
5. 在导航窗格中,选择资源策略。
6. 在资源策略编辑器中,粘贴以下策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID/*/*/*", "Condition": { "StringNotEquals": { "aws:SourceVpce": "vpce-081234d1ad408e" } } }, { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID/*/*/*" } ] }
**注意:**将 vpce-081234d1ad408e 替换为您的 VPC 端点 ID。将 arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID 替换为您的 API 的 ARN。
7. 选择保存。
有关更多信息,请参阅使用 API Gateway 控制台创建私有 API。
创建或导入 Amazon Certificate Manager 公共证书
创建应用程序负载均衡器或网络负载均衡器
您既可以创建应用程序负载均衡器,也可以创建网络负载均衡器。
创建目标组
1. 打开 Amazon Elastic Compute Cloud(Amazon EC2)控制台。
2. 在导航窗格中的负载均衡中,选择负载均衡器,然后选择目标组。
3. 选择创建目标组。
-
在目标类型处,选择 IP 地址。
-
在目标组名称处,输入一个名称。
应用程序负载均衡器
在协议处,选择 HTTPS。
在端口处,选择 443。
在 VPC处,选择您的 VPC。
在运行状况检查路径处,输入 200,403,使 VPC 端点在目标组中显示为正常 。
网络负载均衡器
在协议处,选择 TLS。
在端口处,选择 443。
在 VPC处,选择您的 VPC。
6. 选择下一步。
- 在指定 IP 中,输入您在创建接口 Amazon VPC 端点部分中复制的 IP 地址,然后选择添加 IPv4 地址。
8. 选择创建目标组。
配置负载均衡器
-
打开 EC2 控制台。
-
在导航窗格中,选择负载均衡器,然后选择创建负载均衡器。
应用程序负载均衡器
在方案处,根据您的配置选择面向互联网或内部。
在协议处,选择 HTTPS。
在 VPC 和子网处,选择您的 VPC 和子网。
网络负载均衡器
在方案处,根据您的配置选择面向互联网或内部。
在协议处,选择 TLS。
在 VPC 和子网处,选择您的 VPC 和子网。
在安全政策处,选择默认政策 ELBSecurityPolicy-TLS(推荐)。
在默认 SSL/TLS 证书处,选择 From ACM。
选择选择证书下拉菜单,然后选择您的证书。
3. 选择创建负载均衡器。
注意:负载均衡器目标位于 VPC 端点创建的弹性网络接口的 IP 地址中。若要找到这些弹性网络接口,请选择您的 VPC 端点,然后打开子网选项卡。
在 Amazon Route 53 公共或私有托管区中创建记录
然后,创建 CNAME 记录并将其与您的应用程序或网络负载均衡器关联。
测试
对于公共负载均衡器,您可以从本地计算机发出 curl 请求。
对于私有负载均衡器,请在负载均衡器的一个子网中启动新的 EC2 实例。然后,发出类似于以下请求的 curl 请求:
curl -v https://{custom-domain-name}/<stage-name>/<resource-path> -H 'Host: <api-id>.execute-api.<region>.amazonaws.com'
-或-
curl -v https://{custom-domain-name}/<stage-name>/<resource-path> -H 'x-apigw-api-id:{api-id}'
成功的请求将返回一个 200 OK 响应代码。失败的请求将返回一个 403 Forbidden 响应代码或 DNS resolution 错误。如果您遇到任何问题,请参阅排除负载均衡器的故障。
相关信息
如何通过 Direct Connect 连接来连接到私有 API Gateway?
如何排除连接到 API Gateway 私有 API 端点时出现的故障?
相关内容
- AWS 官方已更新 3 个月前
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 5 个月前