服务账号调用Google Analytics API异常触发配额超限错误
问题原因梳理
- 两个匿名配额分区的含义
Google Analytics API的日配额默认拆分为两个独立维度:
- 项目全局总配额:所有请求共享的上限,也就是你看到的5万次/日
- 单用户/客户端配额:每个请求标识的用户单独的配额上限,默认也是5万次/日
你看到的匿名分区,是因为请求未传递用户标识参数,所有未标识用户的请求都会被归入公共匿名池统一计数,只要同项目下有其他应用/服务调用GA API时也没传用户标识,就会和你的请求一起消耗匿名池配额,这就是你只发起少量请求就触发超限的核心原因。
服务账号日志为空的原因
默认Google Cloud不会全量采集API的请求日志,你需要手动开启GA API的审计日志采集,同时调整日志筛选规则,指定筛选服务账号主体才能看到对应请求,默认展示的是用户账号的操作日志,所以看不到服务账号的请求记录。同服务账号其他项目调用正常的原因
不同项目、不同API的配额规则、日志规则完全独立,你在其他项目调用的非GA API不受当前项目GA API的配额限制,所以运行正常。
解决方案
- 调整请求参数,新增
quotaUser字段:在调用client.request的params参数中加入quotaUser字段,值可以设为服务账号的唯一标识(比如服务账号邮箱的哈希值),该参数会将你的请求归入独立的用户配额维度,不会和匿名池的其他请求共享配额。 - 开启GA API审计日志:在IAM与管理页面的审计日志配置项中,搜索Google Analytics API,开启DATA_READ、DATA_WRITE类操作的日志采集,之后在日志浏览器中筛选主体为
serviceAccount:<你的服务账号邮箱>即可查看所有请求记录。 - 校验配额类型:报错提示的是每日写入次数超限,注意区分读请求配额和写请求配额,你看到的5万次配额可能是读请求上限,写请求的默认配额会更低,可在配额页面筛选写入类型的配额项确认数值。
- 排查同项目其他调用:确认当前项目下是否有其他未被记录的应用、服务也在调用GA API消耗配额。
内容的提问来源于stack exchange,提问作者goldylucks
相关产品推荐
相关产品推荐

