【问题标题】:How we can execute Bash script (which present in Compute engine VM) from GCP composer (DAG)?我们如何从 GCP 作曲家(DAG)执行 Bash 脚本(存在于计算引擎 VM 中)?
【发布时间】:2020-02-15 02:28:03
【问题描述】:

我有一个 sh 文件,它存在于 GCP 计算引擎 VM 实例中。在同一个服务帐户或同一个项目中,我想从 GCP 作曲家 DAG 执行该 bash 脚本。我们如何执行?

我找到了一个我不确定它是否正确的解决方案。 有一种使用“SSHExecuteOperator”的方法;然后我们需要创建 SSH 连接。当 Composer 和 VM 使用相同的服务帐户运行 shell 脚本时,我们还需要 KeyFile 吗?

【问题讨论】:

    标签: bash ssh google-cloud-platform google-compute-engine google-cloud-composer


    【解决方案1】:

    您可以这样做,ssh_conn_id 将在 Composer UI 中设置

    from datetime import timedelta, datetime
    import airflow
    from airflow import DAG
    from airflow.contrib.operators.ssh_operator import SSHOperator
    
    default_args = {
        'owner': 'airflow',
        'depends_on_past': False,
        'email': ['airflow@example.com'],
        'email_on_failure': False,
        'email_on_retry': False,
        'start_date': datetime.now() - timedelta(minutes=20),
        'retries': 1,
        'retry_delay': timedelta(minutes=5),
    }
    
    dag = DAG(dag_id='testing_stuff',
              default_args=default_args,
              schedule_interval='0,10,20,30,40,50 * * * *',
              dagrun_timeout=timedelta(seconds=120))
    
    t1_bash = """
    echo 'Hello World'
    """
    
    t1 = SSHOperator(
        ssh_conn_id=<<Connection Id in Composer UI>>,
        task_id='test_ssh_operator',
        command=t1_bash,
        dag=dag)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-11
      • 1970-01-01
      • 2020-06-07
      相关资源
      最近更新 更多