You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cloud Composer下Airflow调用BigQuery建表报accessDenied Drive权限错误

问题诱因
  1. 核心原因是Airflow任务调用BigQuery时,请求的OAuth作用域未包含Google Drive的访问权限。即便你已经为Composer服务账号授予了Google Sheet的编辑权限,BigQuery访问绑定Drive资源的外部表时,要求请求必须携带Drive的访问作用域才能获取合法的访问凭证,否则就会抛出权限不足的报错。
  2. 相同SQL在BigQuery编辑器中可正常执行,是因为个人账号登录Google Cloud控制台时默认已经授予了BigQuery和Google Drive的访问作用域,无需额外配置即可正常访问绑定Sheet的外部表。
解决方案
  • 为Composer环境配置Drive访问作用域:进入Google Cloud控制台的Composer管理页面,修改对应环境的Airflow配置,在oauth_scopes配置项中添加https://www.googleapis.com/auth/drive,配置修改后需要重启Composer环境生效。
  • 在DAG的BigQuery操作算子中显式指定OAuth作用域,以常用的BigQueryExecuteQueryOperator为例,配置参考如下:
from airflow.providers.google.cloud.operators.bigquery import BigQueryExecuteQueryOperator

create_table_task = BigQueryExecuteQueryOperator(
    task_id="create_anagraphics_final",
    sql="""CREATE OR REPLACE TABLE `test-prod.REZ_TEST.ANAGRAPHICS_FINAL` AS
(
WITH 
    COD_ART_NOT_2021 AS (SELECT *
                          FROM `test-prod.PRZ_TEST.ANAGRAPHICS_2020`
                          WHERE CodArt NOT IN (SELECT CodArt
                                               FROM `test-prod.PRZ_TEST.ANAGRAPHICS_2021`
                                               WHERE Ricorsivita IS NOT NULL
                                               ORDER BY CodArt ASC))

SELECT CodArt, BusinessUnit, AnagraficaERP, AnagraficaCGD, Ricorsivita, ServiceType, EBT, 2021 AS Year
FROM `test-prod.PRZ_TEST.ANAGRAPHICS_2021`
WHERE Ricorsivita IS NOT NULL
UNION ALL 
SELECT *, 2020 AS Year
FROM COD_ART_NOT_2021
);""",
    use_legacy_sql=False,
    # 显式指定BigQuery和Drive的访问作用域
    oauth_scopes=[
        "https://www.googleapis.com/auth/bigquery",
        "https://www.googleapis.com/auth/drive"
    ],
    dag=dag
)
  • 确认执行任务的服务账号一致性:检查算子是否配置了服务账号模拟参数,确保实际执行BigQuery任务的账号,就是你已经授予Google Sheet编辑权限的Composer Worker服务账号。

内容的提问来源于stack exchange,提问作者Kla1998

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:06:03