将 API 部署到网关

前提条件

在 API Gateway 上部署 API 配置之前,请确保您已完成以下操作:

网关 ID 要求

下面显示的许多 gcloud 命令都要求您指定网关的 ID,格式为 GATEWAY_ID。API Gateway 对网关 ID 实施以下要求:

  • 长度不得超过 49 个字符。
  • 只能包含小写字母、数字或短划线。
  • 不能以短划线开头。
  • 不得包含下划线。

定义已部署的 API 配置的端点

将 API 配置部署到网关时,API Gateway 会在 gateway.dev 网域中为网关创建唯一的网址。然后,您的 API 客户端会使用以下形式的网址访问已部署的 API 配置:

https://GATEWAY_ID-HASH.REGION_CODE.gateway.dev

其中,GATEWAY_ID 是网关的名称,HASH 是您部署 API 时生成的唯一哈希代码,REGION_CODE 是您部署了网关的 GCP 区域的代码。

例如:

https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev

将 API 配置部署到网关

使用 Google Cloud CLI 将 API 配置部署到网关。部署 API 配置时,您需要指定 API 的名称。如果 API 尚不存在网关,则此命令也会创建网关。

如需将 API 配置部署到网关,请执行以下操作:

  1. 验证下面的命令返回的项目 ID,以确保不会在错误的项目中创建网关。

    gcloud config list project

    如果需要更改默认项目,请运行以下命令并将 PROJECT_ID 替换为要在其中创建服务的 Google Cloud 项目 ID:

    gcloud config set project PROJECT_ID
  2. 查看 gateway create 命令的相关帮助:

    gcloud api-gateway gateways create --help
  3. 运行以下命令将 API 配置部署到网关:

    gcloud api-gateway gateways create GATEWAY_ID \
      --api=API_ID --api-config=CONFIG_ID \
      --location=GCP_REGION --project=PROJECT_ID

    其中:

    • GATEWAY_ID 指定新网关的 ID。如果网关尚不存在,则此命令将创建该网关。
    • API_ID 指定与此网关关联的 API Gateway API 的 ID。
    • CONFIG_ID 指定部署到该网关的 API 配置的 ID。您必须在创建网关时指定 API 配置。
    • GCP_REGION 指定已部署网关的 GCP 区域。

    • PROJECT_ID 指定 Google Cloud 项目 ID。

    在创建网关时,gcloud 会将信息输出到终端。

  4. 完成后,您可以使用以下命令查看有关网关的详细信息:

    gcloud api-gateway gateways describe GATEWAY_ID \
      --location=GCP_REGION --project=PROJECT_ID

    此命令会返回以下内容:

    apiConfig: projects/PROJECT_ID/locations/global/apis/API_ID/configs/CONFIG_ID
    createTime: '2020-02-05T13:44:12.997862831Z'
    defaultHostname: my-gateway-a12bcd345e67f89g0h.uc.gateway.dev
    displayName: GATEWAY_ID
    name: projects/PROJECT_ID/locations/GCP_REGION/gateways/GATEWAY_ID
    serviceAccount:
      email: gateway-111111@222222-tp.iam.gserviceaccount.com
    state: ACTIVE
    updateTime: '2020-02-05T13:45:00.844705087Z'

    请记下 defaultHostname 属性的值。这是网关网址的主机名部分。如需访问部署到此网关的 API 配置,请使用以下形式的网址:

    https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev

Google Cloud CLI 支持许多选项,包括 gcloud 参考中描述的选项。此外,对于 API Gateway,您可以在创建网关时设置以下选项:

  • --async:立即将控制权归还给终端,而不等待操作完成。
  • --display-name=NAME:指定网关的显示名称,即界面中显示的名称。请勿在名称中使用空格。请改用连字符和下划线。默认值为 GATEWAY_ID
  • --labels=KEY1=VALUE1,KEY2=VALUE2,...:指定与网关关联的标签。

列出网关

如需列出特定项目的网关,请运行以下命令:

gcloud api-gateway gateways list --project=PROJECT_ID

此命令以如下形式返回输出:

GATEWAY_ID        LOCATION       DISPLAY_NAME     STATE     CREATE_TIME          UPDATE_TIME
my-gateway        us-central1    my-gateway       ACTIVE    2021-01-07T00:04:19  2022-05-21T00:33:46

如需列出特定项目和区域的网关,请运行以下命令:

gcloud api-gateway gateways list --location=GCP_REGION --project=PROJECT_ID

使用 filter 表达式列出与特定 API 关联的网关:

gcloud api-gateway gateways list \
  --filter="apiConfig:projects/PROJECT_ID/locations/global/apis/API_ID/*" \
  --project=PROJECT_ID

或者,使用此 filter 列出特定 API 配置的网关:

gcloud api-gateway gateways list \
  --filter="apiConfig:projects/PROJECT_ID/locations/global/apis/API_ID/configs/CONFIG_ID" \
  --project=PROJECT_ID

使用项目、区域和网关 ID 获取有关网关的详细信息,包括部署到网关的 API 配置的身份:

gcloud api-gateway gateways describe GATEWAY_ID \
  --location=GCP_REGION --project=PROJECT_ID

更新网关

更新网关以执行以下操作:

  • 将其他 API 配置部署到网关
  • 更新显示名称
  • 更新标签

使用以下 gcloud 命令更新现有网关,其中 UPDATE_OPTIONS 已替换为网关选项标志和要更新的值:

gcloud api-gateway gateways update GATEWAY_ID \
  UPDATE_OPTIONS --api=API_ID --location=GCP_REGION --project=PROJECT_ID  

例如,如需更新部署到网关的 API 配置,请运行以下命令:

gcloud api-gateway gateways update GATEWAY_ID \
  --api-config=NEW_CONFIG_ID --api=API_ID --location=GCP_REGION --project=PROJECT_ID 

其中,NEW_CONFIG_ID 指定要部署到网关的新 API 配置。

如需查看可用更新标志和参数的完整列表,请参阅 gcloud api-gateway Gates update 参考或使用以下命令查看所有更新选项:

gcloud api-gateway gateways update --help

删除网关

使用以下 gcloud 命令删除现有网关:

gcloud api-gateway gateways delete GATEWAY_ID \
  --location=GCP_REGION --project=PROJECT_ID

后续步骤