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

Airflow GoogleDriveToGCSOperator访问共享团队盘报错问题

问题根因

这个KeyError: 'id'报错和服务账号的权限配置无关,本质是GoogleDriveToGCSOperator默认调用Google Drive API时未开启共享盘(Team/Shared Drive)支持:默认的文件查询请求只会遍历个人「My Drive」范围,不会返回共享盘内的文件元数据,最终拿到的file_metadata为空,取id字段时直接触发键错误。

解决方法

根据你安装的apache-airflow-providers-google包版本选择对应方案:

  • 版本 >= 8.3.0(原生支持共享盘参数)
    新版本Operator已经暴露了共享盘相关的配置项,实例化任务时补上对应参数即可:
    upload_gdrive_to_gcs = GoogleDriveToGCSOperator(
        task_id="upload_gdrive_object_to_gcs",
        folder_id="my-folder-id-here",  # 替换为共享盘内目标文件夹的ID
        file_name="abc.txt",
        bucket_name="gdrive-testbucket",
        object_name="testfile.txt",
        gcp_conn_id='google_cloud_default',
        # 以下为访问共享盘必须补充的参数
        drive_id="your-shared-drive-id",  # 替换为目标文件夹所属共享盘的根ID
        corpora="drive",  # 指定查询范围为目标共享盘,而非默认的个人盘
        supports_all_drives=True,
    )
    
    注意drive_id是共享盘本身的ID,不是子文件夹ID:打开共享盘根目录时,URL中folders/后的第一段字符串就是共享盘ID。
  • 版本 < 8.3.0(无原生共享盘支持)
    老版本Operator没有暴露上述共享盘配置参数,优先选择升级provider包到最新稳定版解决,避免自定义代码带来的后续维护成本。如果暂时不能升级,可以自定义类继承原生GoogleDriveToGCSOperator,重写文件查询逻辑,在调用get_file_id、download_file方法时手动传入supports_all_drives=True、corpora='drive'、drive_id=<你的共享盘ID>三个参数,把查询范围覆盖到共享盘即可。
额外校验项

如果补完参数仍报错,逐一检查以下配置:

  • 服务账号已经被添加为目标共享盘的成员,下载场景下授予「查看者」及以上权限即可
  • 如果GCP连接中配置了服务账号模拟链,需要确认被模拟的账号同样拥有目标共享盘的对应访问权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:09:19