Google Cloud Document AI无法访问Firebase Storage存储桶——权限错误
问题概述
将Firebase Storage(使用project-id.firebasestorage.app新域名格式的存储桶)中的文档导入Google Cloud Document AI时,已为Document AI服务账号添加Storage Admin角色,但仍提示Does not have permissions [storage.objects.get]权限错误。
环境配置
- 项目:Blaze方案的Firebase项目
- 存储:
my-project.firebasestorage.app格式的Firebase Storage桶 - Document AI:欧盟区域处理器
- 文件:存储桶内的JPG测试图片
错误详情
{ "name": "projects/123456789/locations/eu/operations/11715819212458821437", "done": true, "result": "error", "response": {}, "metadata": { "@type": "type.googleapis.com/google.cloud.documentai.uiv1beta3.ImportDocumentsMetadata", "commonMetadata": { "state": "FAILED", "createTime": "2025-05-21T20:34:47.093036Z", "updateTime": "2025-05-21T20:34:47.093036Z", "resource": "projects/123456789/locations/eu/processors/processor-id/dataset" }, "importConfigValidationResults": [ { "inputGcsSource": "gs://my-project.firebasestorage.app/test_images/", "status": { "code": 7, "message": "Does not have permissions [storage.objects.get] in the bucket my-project.firebasestorage.app" } } ] }, "error": { "code": 3, "message": "Failed to import all documents.", "details": [] } }
疑问解答与解决步骤
1. Document AI与新格式Firebase Storage桶的兼容性
无已知兼容性问题。Firebase Storage的firebasestorage.app域名桶本质是标准Google Cloud Storage(GCS)桶,Document AI可以正常访问这类桶。
2. 是否需要额外Firebase特定权限
不需要。Firebase Storage的权限控制完全依赖GCP IAM体系,无需配置Firebase专属权限。但需确保IAM角色绑定的准确性与生效状态。
3. 存储桶路径格式是否正确
路径格式gs://my-project.firebasestorage.app/test_images/是正确的,无需修改。
具体排查与解决步骤
确认服务账号正确性
验证绑定权限的服务账号是否为Document AI的专属账号:service-[项目编号]@gcp-sa-prod-dai-core.iam.gserviceaccount.com,需确保项目编号与当前项目完全匹配,避免账号混淆。验证权限绑定层级
确保Storage Admin角色(roles/storage.admin)是直接添加在存储桶级别的IAM权限中,而非仅在项目级别添加(项目级权限虽理论生效,但桶级绑定更直接且不易受其他配置影响)。等待权限生效
GCP IAM权限变更通常需要5-10分钟才能完全同步,刚添加权限后立即测试可能出现权限未生效的情况,建议等待一段时间后重试。测试服务账号权限
使用gcloud命令模拟Document AI服务账号访问存储桶文件,验证权限是否实际生效:# 激活服务账号(需提前下载该账号的密钥文件) gcloud auth activate-service-account service-[项目编号]@gcp-sa-prod-dai-core.iam.gserviceaccount.com --key-file=service-account-key.json # 尝试复制桶内文件到本地 gsutil cp gs://my-project.firebasestorage.app/test_images/test.jpg ./若命令失败,说明权限绑定存在问题;若成功,则需检查Document AI导入配置是否存在拼写错误或其他配置问题。
检查文件ACL设置
确认存储桶内的目标文件未设置单独的ACL规则,阻止了Document AI服务账号的访问。可在GCS控制台查看文件的权限详情,确保服务账号拥有storage.objects.get权限。确认区域一致性
若Document AI处理器位于欧盟区域,建议Firebase Storage桶也设置为欧盟区域。跨区域访问虽理论支持,但可能因网络或隐性配置问题导致权限验证异常。
内容的提问来源于stack exchange,提问作者Kyrylo Petrenko

