Broken DAG: [/airflow/dags/a.py] Can#39;t decrypt `extra` params for login=None, FERNET_KEY configuration is missing(损坏的DAG:[/AIRFLOW/DAGS/a.py]无法解密登录=NONE的`Extra‘参数,缺少Fernet_key配置)
问题描述
我在没有Fernet_key的情况下启动了气流。一旦我意识到这一点,我做了以下事情: https://airflow.apache.org/configuration.html#connections
pip install apache-airflow[crypto]
from cryptography.fernet import Fernet
fernet_key= Fernet.generate_key()
print(fernet_key)
获取密钥并将其放在airflow.cfg
中,然后调用airflow initdb
,但仍显示错误。
我做错了什么?
当我这样做时:
airflow webserver -D
我得到:
File "/usr/local/lib/python2.7/dist-packages/airflow/models.py", line 713, in extra_dejson
if self.extra:
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/attributes.py", line 293, in __get__
return self.descriptor.__get__(instance, owner)
File "/usr/local/lib/python2.7/dist-packages/airflow/models.py", line 632, in get_extra
return fernet.decrypt(bytes(self._extra, 'utf-8')).decode()
File "/usr/lib/python2.7/dist-packages/cryptography/fernet.py", line 101, in decrypt
raise InvalidToken
日志表明此代码有问题:
def get_conn(conn_id, session=None):
conn = (session.query(Connection)
.filter(Connection.conn_id == conn_id)
.first())
return conn
def my_python_function():
conn = get_conn('s3connection')
key_id = conn.extra_dejson.get('aws_access_key_id')
secret_key = conn.extra_dejson.get('aws_secret_access_key')
default_region = conn.extra_dejson.get('region_name')
return key_id,secret_key,default_region
推荐答案
使用FERNET,Airflow加密后端数据库中其连接的所有密码。
在您的情况下,Airflow后端正在使用以前的fernet密钥,并且您已经生成了一个密钥,您已使用该密钥创建了新连接。
我的建议是做以下几件事 第一,airflow resetdb
这将有助于删除后端数据库中的所有现有记录。
然后,
airflow initdb
这会将后端初始化为Fresh。
然后启动Airflow Web服务器和计划程序
airflow web server -p {port}
airflow scheduler
然后在UI中创建S3的新连接(在Extra-{"aws_access_key_id":"_your_aws_access_key_id_","AWS_SECRET_ACCESS_KEY":"_Your_AWS_SECRET_ACCESS_KEY_"}中)
现在您应该能够按照-Airflow s3 connection using UI
中的解决方案测试S3文件监视器这篇关于损坏的DAG:[/AIRFLOW/DAGS/a.py]无法解密登录=NONE的`Extra‘参数,缺少Fernet_key配置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:损坏的DAG:[/AIRFLOW/DAGS/a.py]无法解密登录=NONE的`Extra‘参数,缺少Fernet_key配置
基础教程推荐
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01