本页面介绍如何为您的 API 配置配额。概括来讲,步骤如下:
- 将关于配额的信息添加到您的 gRPC API 配置文件。
- 部署您的 gRPC API 配置文件。
- 部署 Extensible Service Proxy (ESP)。
要大致了解配额提供的功能,请参阅配额简介。
前提条件
首先,本页面假定您已完成以下操作:
- 配置 Cloud Endpoints。
- 部署 Endpoints 配置。
- 部署 API 后端。
- 将 API 配置为使用 API 密钥。要使 Endpoints 可以确定与调用应用关联的 Google Cloud 项目,则必须执行此操作。如需了解详情,请参阅共享受 API 密钥保护的 API。
向您的 gRPC API 配置文件添加配额
以下过程介绍了如何将所需设置添加到您的 gRPC API 配置文件以设置配额。为简单起见,本页面将 gRPC API 配置文件称为 api_config.yaml 文件。
请将以下三个部分添加到 api_config.yaml 文件:
metrics:一个命名指标,用于为向 API 发送的请求计数。您需要提供一个描述该计数器的名称。名称可以是类别,例如read-requests或write-requests。如果您要为特定方法定义配额,也许应在其中包括方法的名称,例如:echo-api/echo_requests。quota.limits:表示对命名指标的单一强制性限制。您可以在此处为已定义的指标配置允许的请求数。目前仅支持每个项目每分钟限制。quota.metric_rules:metric_rule会将方法映射到指标(多对多)。对方法的请求将为每个映射的指标分配一个计数器。将方法与指标相关联时,务必指定请求的耗费。您可以单独配置每个方法的耗费,从而让不同的方法以不同的速率消耗同一个命名指标。如果没有复杂的配额要求,则可以将每个指标的费用配置为 1。
如需配置 API 配额,请执行以下操作:
- 在文本编辑器中打开项目的
api_config.yaml文件。 在
apis字段后,在文件顶层(不缩进或嵌套)添加metrics字段。metrics: - name: "YOUR_METRIC_NAME" display_name: "YOUR_METRIC_DISPLAY_NAME" value_type: INT64 metric_kind: DELTA`- 将
YOUR_METRIC_NAME替换为描述 API 请求计数器的名称。 - 将
YOUR_METRIC_DISPLAY_NAME替换为 Endpoints > 服务 > 配额页面上显示的文本,以标识指标。 value_type字段必须是INT64。metric_kind字段必须是DELTA。
- 将
在与
metrics相同的层级添加quota字段,并以嵌套格式将limits字段添加在quota部分中。quota: limits: - name: "YOUR_LIMIT_NAME" metric: "YOUR_METRIC_NAME" unit: "1/min/{project}" values: STANDARD: VALUE_FOR_THE_LIMIT- 将
YOUR_LIMIT_NAME替换为用于描述该限制的名称。 - 将
YOUR_METRIC_NAME替换为先前定义的metric.name。 unit字段必须是"1/min/{project}"。这是用于表示每个项目每分钟限制的标识符。values字段必须包含STANDARD。- 将
VALUE_FOR_THE_LIMIT替换为一个整数值。 这是与使用方的 Google Cloud 项目关联的应用在一分钟内可发出的请求数。
- 将
(可选)定义额外的指标以及每个指标的限制。
在
limits部分后的quota下,以缩进格式添加一个metric_rules行。在metric_rules部分中,将先前定义的指标与某个方法相关联,如下所示:metric_rules: - metric_costs: YOUR_METRIC_NAME: YOUR_METRIC_COST selector: [METHODS]- 将
YOUR_METRIC_NAME替换为先前定义的metric.name。 - 将
YOUR_METRIC_COST替换为一个整数。对于每个请求,指标的请求计数器都会根据您为该耗费指定的数值递增。 对于
selector字段,您可以指定以下某种格式:- 如需将所有 API 中的所有方法与
metric_cost相关联,请使用selector: "*" - 如需将某个 API 中的所有方法与
metric_cost相关联,请使用selector: YOUR_API_NAME.* - 如需将某个 API 中的特定方法与
metric_cost相关联,请使用selector: YOUR_API_NAME.YOUR_METHOD_NAME
- 如需将所有 API 中的所有方法与
- 将
保存
api_config.yaml文件。
配额配置示例
以下三个示例展示了如何为 API 配置配额。
以下示例展示了如何配置 metric 字段:
metrics: # Define a metric for read requests. - name: "read-requests" display_name: "Read requests" value_type: INT64 metric_kind: DELTA`
以下示例展示了如何配置 quota 部分中的 quota 和 limits 字段:
metrics: # Define a metric for read requests. - name: "read-requests" display_name: "Read requests" value_type: INT64 metric_kind: DELTA quota: limits: # Define the limit or the read-requests metric. - name: "read-limit" metric: "read-requests" unit: "1/min/{project}" values: STANDARD: 1000
以下示例展示了如何配置 limits 部分后的 metrics 行:
metrics:
# Define a metric for read requests.
- name: "read-requests"
display_name: "Read requests"
value_type: INT64
metric_kind: DELTA
quota:
limits:
# Define the limit or the read-requests metric.
- name: "read-limit"
metric: "read-requests"
unit: "1/min/{project}"
values:
STANDARD: 1000
metric_rules:
- metric_costs:
"read-requests": 1
selector: *
部署 api_config.yaml 文件和 ESP
要使配额生效,您必须:
- 将
api_config.yaml文件部署到 Service Management,以更新 Endpoints 中的配置。如需了解详细步骤,请参阅部署 Endpoints 配置。 - 部署 ESP。如需了解详细步骤,请参阅部署 API 后端。