使用MWAA在Airflow运行BigQuery查询时遇Drive凭证权限拒绝问题
问题与解决方法:MWAA Airflow执行依赖Google Sheet的BigQuery查询报403权限错误
问题描述
执行依赖Google Sheet的BigQuery查询时触发权限错误:
google.api_core.exceptions.Forbidden: 403 Access Denied: BigQuery BigQuery: Permission denied while getting Drive credentials.
已完成的配置:
- 基于管理员服务账号配置了可用的Google Cloud Airflow连接
- 服务账号已获得目标Google Sheet的访问权限
- Airflow连接作用域已添加
https://www.googleapis.com/auth/drive - 重新生成并更新了服务账号JSON密钥文件
可能的操作失误及解决方法
1. 检查BigQuery服务账号的Drive权限
BigQuery读取Sheet数据时会调用自身的服务账号,需确保该账号拥有Drive访问权限:
- 进入Google Cloud控制台IAM页面,找到
service-<项目编号>@gcp-sa-bigquery.iam.gserviceaccount.com - 为该账号添加
Drive File Reader或Drive Viewer角色
2. 确认Airflow连接配置已生效
MWAA更新连接配置后,Worker节点需重新加载配置才能生效:
- 在MWAA控制台的"环境"页面重启Worker节点
- 进入Airflow UI的「Admin > Connections」,查看对应Google Cloud连接的
Extra字段,确认scope已包含https://www.googleapis.com/auth/drive
3. 验证Google Sheet的共享设置
即使服务账号有Drive权限,仍需确保Sheet已共享给该账号:
- 打开目标Google Sheet,点击右上角「共享」
- 添加服务账号邮箱(JSON密钥中
client_email字段的值),授予「查看者」权限
4. 确认密钥文件已正确更新
重新生成JSON密钥后,需确保MWAA使用的是最新版本:
- 检查Airflow连接的「Keyfile Path」或「Keyfile JSON」字段,确认内容已更新
- 若用Secret Manager存储密钥,需确保Secret内容已更新,且MWAA服务账号有权读取该Secret
5. 检查Drive API是否启用
在Google Cloud控制台API库中,确认Drive API已启用:
- 搜索「Drive API」,查看状态为「已启用」,若未启用则点击「启用」
内容的提问来源于stack exchange,提问作者nolwww
相关产品推荐
相关产品推荐

