在Airflow GUI之外创建连接

时间:2017-06-22 18:40:01

标签: amazon-web-services airflow airbnb apache-airflow

我想在不与Airflow GUI交互的情况下创建S3连接。是否可以通过airflow.cfg或命令行?

我们正在使用AWS角色,并且以下连接参数适用于我们: {" aws_account_id":" XXXX"" role_arn":" YYYYY"}

因此,在GUI上为S3手动创建连接正在运行,现在我们希望自动化此过程并希望将其添加为Airflow部署过程的一部分。有什么工作吗?

4 个答案:

答案 0 :(得分:5)

您可以使用气流CLI。遗憾的是,不支持编辑连接,因此您必须在部署过程中删除和添加,例如:

airflow connections -d --conn_id 'aws_default'
airflow connections -a --conn_id 'aws_default' --conn_uri 'aws:' --conn_extra '{"region_name": "eu-west-1"}'

答案 1 :(得分:3)

URI的查询部分将转换为JSON并复制到连接的额外字段中,因此您可以执行以下操作:

GKSession

看起来很傻,但是应该可以。参见Connection

答案 2 :(得分:1)

我在查看S3_hook.py

后能够弄清楚

例如:

export AIRFLOW_CONN_S3_DEFAULT={"aws_account_id":"99999999","role_arn":"bbbbb"}

下面:

  • “S3_DEFAULT”是此处的连接ID
  • 传递AWS账号和role_arn并创建环境变量。

答案 3 :(得分:0)

可能已经晚了,但是documentation中有一个关于此的部分:

  

在Airflow管道中引用连接时,conn_id应该是不带前缀的变量名称。例如,如果conn_id命名为postgres_master,则环境变量应命名为AIRFLOW_CONN_POSTGRES_MASTER(请注意,环境变量必须全部为大写)。 Airflow假定从环境变量返回的值采用URI格式(例如postgres:// user:password @ localhost:5432 / master或s3:// accesskey:secretkey @ S3)。