在第二代Cloud Function中调用DocumentAI OCR任务遇403权限问题求助
第二代Cloud Function调用DocumentAI报403权限错误的排查与解决
遇到的错误信息:
raise exceptions.from_grpc_error(exc) from exc google.api_core.exceptions.PermissionDenied: 403 Your application is authenticating by using local Application Default Credentials. The documentai.googleapis.com API requires a quota project, which is not set by default. To learn how to set your quota project... [reason: "SERVICE_DISABLED" domain: "googleapis.com" metadata { key: "service" value: "documentai.googleapis.com" } metadata { key: "consumer"
可能的原因及解决步骤
1. Cloud Function默认服务账号缺乏DocumentAI权限
第二代Cloud Function默认使用[项目ID]@appspot.gserviceaccount.com作为运行服务账号,该账号可能未被授予调用DocumentAI的必要权限:
- 进入Google Cloud控制台的IAM页面,定位到该服务账号
- 为其添加
roles/documentai.apiUser(基础调用权限)或roles/documentai.editor(全操作权限)角色 - 若批量处理的PDF存储在GCS中,需同时为该账号添加
roles/storage.objectViewer权限,确保能读取源文件
2. Cloud Function所在项目未启用DocumentAI API
即便配额项目已启用API,Cloud Function运行所在的项目仍需单独启用DocumentAI服务:
- 进入Google Cloud控制台的API库,搜索
Cloud Document AI API - 确认当前Cloud Function所属项目已启用该API
3. 代码中手动加载本地凭据,覆盖了默认服务账号
若代码中使用google.auth.load_credentials_from_file()等方法手动加载本地密钥文件,会导致Cloud Function使用本地ADC而非默认服务账号,引发配额项目关联问题:
- 删除代码中手动加载凭据的逻辑,Cloud Function会自动使用自身的默认服务账号完成认证
4. DocumentAI处理器所在项目的权限限制
若DocumentAI处理器位于其他项目,需确保Cloud Function的服务账号被授权访问该处理器:
- 进入处理器所在项目的IAM页面,添加Cloud Function的服务账号,并授予
roles/documentai.apiUser角色 - 或在处理器的权限设置界面,配置允许外部账号访问该处理器
内容的提问来源于stack exchange,提问作者Julia Grobman
相关产品推荐
相关产品推荐

