我正在尝试将所有现有的气流连接迁移到新的气流。
我正在查看 cli options airflow connections --help,它提供了一个列表选项,但没有提供导出/导入到/从 json 格式的选项。
有没有办法通过 cli/airflow ui 跨多个气流迁移连接?
bos*_*jak 10
您可以直接连接到 Airflow 元数据库并转储这些连接,然后将它们加载到单独的数据库中。但是,如果你想自动化这样的事情,你可以通过将它们转储到 CSV 文件来开始:
from airflow.utils import db
from airflow.models import Connection
import csv
outfile = open('myconnections.csv', 'w')
outcsv = csv.writer(outfile)
with db.create_session() as session:
connections = session.query(Connection).all()
conn_list = [
[getattr(c, column.name) for column in Connection.__mapper__.columns]
for c in connections
]
outcsv.writerows(conn_list)
outfile.close()
Run Code Online (Sandbox Code Playgroud)
之后,您可以手动或使用类似的脚本将其加载到新数据库中。
重要提示:如果您启用了加密,为这些连接存储的密码将被加密,当您将它们加载到新数据库时,您必须使用相同的 fernet 密钥,否则您将无法解密它们。
小智 7
这将允许您导出所有连接,以便可以通过 CLI ( https://airflow.apache.org/docs/stable/howto/connection/index.html#creating-a-connection-from -the-cli)。无论您现有的安装在哪里,都可以在 Python 中运行它:
from airflow.hooks.base_hook import BaseHook
for c in ['my', 'list', 'of', 'connections']:
conn = BaseHook.get_connection(c)
print("airflow connections --add \\ \n \
--conn_id '{conn_id}' \\ \n \
--conn_type '{conn_type}' \\ \n \
--conn_host '{conn_host}' \\ \n \
--conn_schema '{conn_schema}' \\ \n \
--conn_login '{conn_login}' \\ \n \
--conn_password '{conn_password}' \\ \n \
--conn_port '{conn_port}' \\ \n \
--conn_extra '{conn_extra}' \\".format(
conn_id=conn.conn_id,
conn_type=conn.conn_type,
conn_host=conn.host,
conn_schema=conn.schema,
conn_login=conn.login,
conn_password=conn.password,
conn_port=conn.port,
conn_extra=conn.extra,
))
Run Code Online (Sandbox Code Playgroud)
这也输出解密的密码。在 Airflow 1.10.12 上测试和工作。
| 归档时间: |
|
| 查看次数: |
3788 次 |
| 最近记录: |