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

Airflow使用PostgresToGoogleCloudStorageOperator访问GCS报403认证错误

问题排查及解决

Airflow官方有完整的GCS身份认证相关配置说明,你遇到的报错核心原因是Airflow没有成功读取到你配置的gcp_default连接对应的服务账号密钥,导致使用运行环境的默认身份发起请求,该身份没有目标GCS存储桶的写入权限,最终返回403错误。

1. 校验GCP连接配置正确性

  • 打开Airflow UI的连接管理页面,找到gcp_default连接:
    • 连接类型必须选择 Google Cloud Platform,不能使用HTTP、JSON等其他类型
    • 服务账号的密钥JSON内容需完整粘贴到「Keyfile JSON」字段,不要留空
    • 「Project Id」字段填写存储桶所属的GCP项目ID,确保和服务账号归属项目匹配
  • 注意不要填写「Keyfile Path」字段,除非你已经把密钥文件上传到了所有Airflow Worker和Scheduler节点的对应路径下

2. 修复过时Operator的兼容问题

你当前使用的airflow.contrib包下的Operator属于已废弃的旧版本组件,存在gcp_conn_id读取失效的已知bug,按以下方式替换:

  • 若使用Airflow 2.x版本,先安装对应依赖包:
pip install apache-airflow-providers-google apache-airflow-providers-postgres
  • 将DAG中的导入语句替换为稳定版Operator:
from airflow.providers.google.cloud.transfers.postgres_to_gcs import PostgresToGCSOperator
  • 代码中的Operator类名同步修改为PostgresToGCSOperator,原有参数保持不变即可

3. 确认服务账号权限

  • 登录GCP控制台,确认该服务账号在目标存储桶的权限配置中,至少被授予了roles/storage.objectCreator(存储对象创建者)权限
  • 确认存储桶没有配置禁止该服务账号写入的Bucket Policy规则

4. 生效配置

所有配置修改完成后,重启Airflow Scheduler和Worker服务,确保新配置和依赖加载生效,重新运行DAG即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:06:00