我如何使用应用程序负载均衡器或网络负载均衡器调用 API Gateway 私有 API?

2 分钟阅读
0

我想将我的 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. 选择端点,然后选择创建端点
  3. 输入以下信息:
    服务选择 com.amazonaws.com.your-region.execute-api
    对于 VPC,选择您的 Amazon VPC。
    对于子网,选择位于不同可用区 (AZ ID) 的两个子网。
    **注意:**如果您已经在 VPC 中使用 execute-api 设置了 Amazon VPC 端点,关闭私有 DNS。
  4. 选择创建端点
  5. 选择您的端点,选择子网,然后复制 IP 地址

有关更多信息,请参阅 API Gateway 中的私有 REST API

创建私有 REST API 并授予 Amazon VPC 端点权限

完成以下步骤:

  1. 打开 API Gateway 控制台,然后选择创建 API
  2. REST API 选择构建
  3. 设置中,输入以下信息:
    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 的 Amazon 资源名称 (ARN)
  7. 选择保存

创建或导入 Amazon Certificate Manager 公共证书

您可以申请公共证书,也可以导入证书

创建应用程序负载均衡器或网络负载均衡器

您可以创建应用程序负载均衡器,也可以创建网络负载均衡器

创建目标组

完成以下步骤:

  1. 打开 Amazon Elastic Compute Cloud (Amazon EC2) 控制台
  2. 在导航窗格中的负载均衡下,选择负载均衡器,然后选择目标组
  3. 选择创建目标组
  4. 输入以下信息:
    目标类型选择 IP 地址
    对于目标组名称,输入一个名称。
    应用程序负载均衡器
    协议处,选择 HTTPS
    端口处,选择 443
    VPC处,选择您的 VPC。
    对于运行状况检查路径,输入“/”,对于成功代码,输入 200,403,VPC 端点将显示正常
    网络负载均衡器
    协议处,选择 TLS
    端口处,选择 443
    VPC 处,选择您的 VPC。
  5. 选择下一步
  6. 对于指定 IP,输入您在创建接口 Amazon VPC 端点部分复制的 IP 地址。然后,选择添加 IPv4 地址
  7. 选择创建目标组

配置负载均衡器

完成以下步骤:

  1. 打开 EC2 控制台
  2. 在导航窗格中,选择负载均衡器,然后选择创建负载均衡器
    应用程序负载均衡器
    对于方案,根据您的配置选择面向互联网内部
    协议处,选择 HTTPS
    VPC子网处,选择您的 VPC 和子网。
    网络负载均衡器
    对于方案,根据您的配置选择面向互联网内部
    协议处,选择 TLS
    VPC子网处,选择您的 VPC 和子网。
    安全政策处,选择默认政策 ELBSecurityPolicy-TLS(推荐)
    默认 SSL/TLS 证书处,选择 From ACM
    选择选择证书,然后选择您的证书。
  3. 选择创建负载均衡器
    注意:负载均衡器目标位于 VPC 端点创建的弹性网络接口的 IP 地址中。若要找到这些弹性网络接口,请选择您的 VPC 端点,然后打开子网选项卡。

在 Amazon Route 53 公共或私有托管区中创建记录

创建公共托管区私有托管区。然后,创建 CNAME 或别名记录,并将它与您的应用程序或网络负载均衡器关联。

创建自定义域

在 API Gateway 控制台中创建自定义域。然后,将私有 Rest API 映射到自定义域下。

测试

对于公共负载均衡器,从您的本地计算机发出 curl 请求。对于私有负载均衡器,在您的负载均衡器的一个子网中启动一个新 EC2 实例。然后,发出类似于以下示例的 curl 请求:

curl -v https://{custom-domain-name}/<resource-path>

成功的请求将返回 200 OK 响应代码。失败的请求将返回 403 Forbidden 响应代码或 DNS resolution 错误。如果您遇到任何问题,请参阅对应用程序负载均衡器进行故障排除

相关信息

如何通过 Direct Connect 连接来连接到私有 API Gateway?

如何排查连接至 API Gateway 私有 API 端点时出现的问题?

使用 Amazon CloudWatch 指标监控 REST API 执行

在 API Gateway 中为 REST API 设置 CloudWatch 日志记录

AWS 官方
AWS 官方已更新 4 个月前