我有一个气流DAG,它创建一个EMR集群,然后在该集群上运行SSHOperator任务。现在,我正在把EMR集群的主公共DNS硬编码成一个气流SSH连接。在创建EMR集群时,我的DAG是否可以动态填充这个DNS,这样我就不必手动更新连接了吗?
发布于 2019-05-02 16:36:09
在深入了解气流之后,CLI发现创建/删除新连接是可能的。在构建EMR集群之后,我添加了一个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"}
发布于 2019-05-02 16:39:54
您可以使用气流xcom变量将值从一个任务传递到另一个任务。在使用过程中,可以通过XCOM变量将EMR值从EMR创建任务传递到SSH任务。
将数据推送到xcom:
context['ti'].xcom_push(key="xcom_key", value="DNS_NAME")从xcom中提取数据:
context['ti'].xcom_pull(key="xcom_key", task_ids="EMR_Task")https://stackoverflow.com/questions/55956160
复制相似问题