将 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 配置部署到网关,请执行以下操作:
验证下面的命令返回的项目 ID,以确保不会在错误的项目中创建网关。
gcloud config list project
如果需要更改默认项目,请运行以下命令并将 PROJECT_ID 替换为要在其中创建服务的 Google Cloud 项目 ID:
gcloud config set project PROJECT_ID
查看
gateway create
命令的相关帮助:gcloud api-gateway gateways create --help
运行以下命令将 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
会将信息输出到终端。完成后,您可以使用以下命令查看有关网关的详细信息:
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 gateways update 参考文档,或使用以下命令查看所有更新选项:
gcloud api-gateway gateways update --help
删除网关
使用以下 gcloud
命令删除现有网关:
gcloud api-gateway gateways delete GATEWAY_ID \ --location=GCP_REGION --project=PROJECT_ID