近期,部分谷歌云用户反映,在BigQuery中创建Python用户自定义函数(UDF)时遭遇失败,错误提示与IAM策略大小限制相关,且该问题仅在“US”多区域及“us-central1”单一区域中出现。这一现象引发开发者广泛关注,也暴露出谷歌云在跨区域服务一致性方面的潜在短板。
故障现象:Python UDF创建受阻,IAM限制异常
据多位用户报告,当尝试在BigQuery中通过CREATE FUNCTION语句定义Python UDF时,系统返回类似“IAM policy size exceeds the limit”的错误信息。通常情况下,IAM策略大小限制为32KB(字符数),但在此类操作中,即使策略内容远小于该阈值,任务依然被拒绝。更令人困惑的是,该故障仅出现在BigQuery的“US”多区域选址以及“us-central1”单一区域中,而在其他区域如“EU”、“asia-east1”等则运行正常。
用户尝试了多种常见排查手段,包括简化函数逻辑、拆分IAM角色绑定、检查IAM条件语句复杂度等,均未能解决问题。有开发者进一步测试发现,即便创建一个仅含单条返回语句的Python UDF,只要项目位于受影响区域,依然会触发相同的策略大小错误。这表明问题并非源于用户代码本身,而是平台侧在处理UDF创建请求时引入了额外的IAM策略评估开销。
技术根源:区域性IAM评估机制差异
基于谷歌云官方社区及内部反馈渠道的零星信息,故障根因初步指向BigQuery与IAM策略评估引擎之间的交互逻辑。在BigQuery中创建Python UDF时,系统需要动态生成一个临时的服务账号或资源链接,并自动为其附加相应的IAM策略,以确保函数能访问依赖的外部资源(如Cloud Storage中的文件或Pub/Sub消息)。然而,在US及us-central1区域,这一自动化过程疑似调用了某个过时的IAM策略格式化函数,导致策略实际大小被放大数倍,从而撞上了32KB的硬限制。
更值得关注的是,谷歌云内部不同区域可能采用了不同版本的IAM策略管理服务。US多区域由于历史原因承载了早期的大数据集群,其底层架构与现代区域存在差异,这可能是问题仅局限于特定区域的直接原因。此外,us-central1作为谷歌云最早的数据中心之一,其IAM策略评估链路可能存在未同步更新的组件,从而在与BigQuery Python UDF功能协同工作时产生冲突。
影响范围与用户应对
受影响的直接用户群体是那些BigQuery项目位于US或us-central1区域,且频繁使用Python UDF进行复杂数据处理或机器学习推理的开发团队。部分用户已因此中断了关键ETL流水线,不得不临时将Python UDF迁移至其他区域,或改用SQL UDF、JavaScript UDF作为替代方案。
谷歌云官方在近期更新了已知问题页面,确认了这一故障的存在,但尚未给出具体的修复时间表。社区中已有开发者提出临时绕过方案:在创建UDF之前,手动为BigQuery连接的服务账号添加一个极简的IAM条件,以减少自动生成的策略复杂度;或者将部分外部资源访问逻辑移至UDF外部,通过预先加载的数据集来规避IAM策略依赖。
行业观察:云服务区域性差异需警惕
本次事件再次提醒开发者,云服务虽然标榜“全球统一”,但在实际部署中,不同区域可能因基础设施版本、微服务部署策略、A/B测试等因素而产生非预期行为。对于依赖UDF等高级特性的用户,建议在项目初期即对跨区域兼容性进行测试,并建立备选区域预案。同时,当遇到区域特定故障时,积极通过官方支持渠道提交问题,利用反馈机制加速平台修复。
谷歌云团队表示,正在积极排查该问题,并将尽快推送修复补丁至受影响区域。在此期间,用户可优先考虑将新UDF创建任务转移至其他区域,或关注谷歌云状态面板获取最新动态。