加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – Airflow参数传递

发布时间:2020-12-15 22:35:54 所属栏目:安全 来源:网络整理
导读:如果可能的话,我有一个简单的工作,我想在Airflow流程下移动.就目前而言,我有一串bash脚本访问服务器并下载最新版本的文件,然后对该文件执行各种下游操作. exec ./somescript.sh somefileurl 我想知道的是:每次我需要运行此过程时,如何将URL传递给此文件?
如果可能的话,我有一个简单的工作,我想在Airflow流程下移动.就目前而言,我有一串bash脚本访问服务器并下载最新版本的文件,然后对该文件执行各种下游操作.

exec ./somescript.sh somefileurl

我想知道的是:每次我需要运行此过程时,如何将URL传递给此文件?

似乎如果我尝试将bash脚本作为bash命令运行,如下所示:

download = BashOperator(
task_id='download_release',bash_command='somescript.sh',# params={'URL': 'somefileurl'},dag=dag)

我无法传递bash脚本所需的一个参数.否则,如果我尝试将bash脚本作为bash命令发送,bash_command='./somescript.sh {{ URL }}',params={'URL': 'somefileurl'},dag=dag)

程序试图在临时目录的上下文中执行脚本时收到执行错误.这会破坏脚本,因为它需要访问位于同一目录中的某些凭据文件,并且我希望保持相对文件位置不变…

思考?

更新:什么对我有用

download = BashOperator(
task_id='download_release',bash_command='cd {{ params.dir }} && ./somescript.sh {{ params.url }}',params={'url': 'somefileurl','dir': 'somedir'},dag=dag)

但是,我还没有实现任何参数传递.

解决方法

以下是将参数传递给BashOperator的示例:

templated_command = """
cd /working_directory
somescript.sh {{ dag_run.conf['URL'] }}
"""
download = BashOperator(
   task_id='download_release',bash_command=templated_command,dag=dag)

有关此问题的讨论,请参阅passing parameters to externally trigged dag. Airflow有两个示例DAG,用于演示:example_trigger_controller_dag和example_trigger_target_dag.另请参阅Airflow api reference on macros.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读