You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

API Gateway使用x-api-key请求头时配额限制未生效问题排查

x-api-key导致Google API网关配额失效的原因

配置详情

配额与指标配置

x-google-management:
  metrics:
    - name: "read-requests"
      displayName: "Read requests"
      valueType: INT64
      metricKind: DELTA
  quota:
    limits:
      - name: "read-limit"
        metric: "read-requests"
        unit: "1/min/{project}"
        values:
          STANDARD: 3

API路径配置

paths:
  /v1/foo:
    get:
      summary: foo Data
      operationId: fooData
      x-google-backend:
        path_translation: APPEND_PATH_TO_ADDRESS
        address: ${PUB_API_FNC_URL}
      x-google-quota:
        metricCosts:
          "read-requests": 1

该API网关路径的后端为Cloud Function

问题描述

当请求中添加x-api-key请求头时,无论头中值是什么,配额限制均未生效;但不添加该请求头时,配额可正常工作。

补充细节:OpenAPI规范中未配置任何安全定义,且x-api-key未在配置中与任何项目显式关联。


原因分析

当请求携带x-api-key头时,Google API网关会默认将请求归属到该API密钥绑定的GCP项目,而非网关所在的默认项目。你的配额配置是以{project}为维度的按项目配额,但你既没为这个API密钥对应的项目设置配额限制,也没配置安全规则验证密钥有效性——这就导致网关跳过了默认项目的配额校验,直接放行请求。

具体逻辑:

  • 不带x-api-key时,请求归属网关所在项目,触发你配置的STANDARD配额规则(3次/分钟)。
  • 带x-api-key时,请求被归属到密钥关联的项目,而该项目无对应配额限制,因此配额校验失效,请求无限制通过。

另外,因为你没配置安全定义,网关不会验证x-api-key的合法性,哪怕是无效密钥,也会触发上述项目归属逻辑,导致配额不生效。


内容的提问来源于stack exchange,提问作者Alex Portnoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 19:35:57