动态气流EMR连接

时间:2019-05-02 15:55:42

标签: python airflow

我有一个Airflow DAG,它创建一个EMR集群,然后在该集群上运行SSHOperator任务。现在,我正在将EMR群集的主公共DNS硬编码为Airflow SSH连接。创建EMR群集时,DAG是否可以动态填充此DNS,因此我不必手动更新连接?

2 个答案:

答案 0 :(得分:0)

深入研究Airflow CLI之后,我发现可以创建/删除新连接。在构建EMR集群以添加Airflow连接之后,我添加了一个bash运算符。

airflow connections --delete --conn_id aws_emr

airflow connections --add --conn_id aws_emr --conn_type SSH --conn_host publicDNS --conn_login username --conn_extra {"key_file":"file.pem"}

答案 1 :(得分:0)

您可以使用气流 xcom 变量将值从一个任务传递给另一任务。在您的用例中,您可以通过XCOM变量将EMR DNS值从EMR创建任务传递到SSH任务。

Airflow Xcom concepts

将数据推送到xcom:

context['ti'].xcom_push(key="xcom_key", value="DNS_NAME")

从xcom中提取数据:

context['ti'].xcom_pull(key="xcom_key", task_ids="EMR_Task")