在Airflow中创建到AWS ec2实例的SSH连接

2024-04-25 01:03:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个在AWS ec2实例上运行的常规ETL作业

工作流如下所示:

  1. 使用EC2StartInstanceOperator操作符调出ec2实例
  2. 使用包装在PythonOperator中的boto3函数查找公共IP。该操作员将IP推送到XCOM
  3. 使用公共IP建立SSH钩子,并使用SSHOperator运行远程命令
  4. 完成后使用EC2StopInstanceOperator停止ec2实例

上述问题包括:

  1. SSH钩子(airflow.providers.ssh.hooks.ssh.SSHHook在Airflow 2.0中)无法访问XCOM,只有操作员才能访问
  2. AWS ec2实例在两次运行之间不会被重新分配相同的公共IP,因此我必须在每次运行期间运行PythonOperator以查找公共IP

谢谢


Tags: 实例ipaws作业etlboto3ec2ssh
1条回答
网友
1楼 · 发布于 2024-04-25 01:03:59

您可以使用^{}remote_host参数设置要连接的主机。此设置“将替换ssh_hook中定义的或ssh_conn_id连接中预定义的远程_主机。”

remote_host参数是模板化的,因此您可以从XCOM using a template macro读取IP

相关问题 更多 >