通过配置文件创建Airflow BigQuery连接时UI报错排查
Airflow BigQuery连接UI报错:AttributeError: 'str' object has no attribute 'get' 的解决方法
嘿,这个报错我之前也碰到过!问题的核心是你YML配置里的conn_extra被当成了普通字符串,但Airflow的UI在解析连接信息时,期望conn_extra是一个可以直接调用.get()方法的字典对象。
你看你现在的配置,conn_extra的值被单引号整个包裹起来了,变成了一个JSON格式的字符串:
conn_extra: '{ "extra__google_cloud_platform__key_path":"/usr/local/airflow/key.json", "extra__google_cloud_platform__project": "<project_name>", "extra__google_cloud_platform__scope": "https://www.googleapis.com/auth/cloud-platform"}'
当Airflow读取这个配置创建连接时,并没有自动把这个字符串解析成字典类型,导致UI在尝试用字典的.get()方法读取字段时,触发了AttributeError——毕竟字符串哪来的.get()方法呀!
正确的配置写法
把conn_extra改成YAML原生的字典格式就行,不需要额外加引号包裹:
gcp-conn: conn_type: google_cloud_platform conn_extra: extra__google_cloud_platform__key_path: "/usr/local/airflow/key.json" extra__google_cloud_platform__project: "<project_name>" extra__google_cloud_platform__scope: "https://www.googleapis.com/auth/cloud-platform"
修复步骤
- 先删掉已经创建的错误连接:可以直接在Airflow UI的「连接管理」页面手动删除,或者用Airflow CLI命令删除
- 用修改后的YML配置重新执行创建命令:
inv create-airflow-connections --env-file <yml_file>
- 再去Airflow UI里查看这个连接,就能正常加载页面啦!
内容的提问来源于stack exchange,提问作者Sohail Arif
相关产品推荐
相关产品推荐

