Existe-t-il un moyen de passer un paramètre à:
airflow trigger_dag dag_name {param}
?
J'ai un script qui surveille un répertoire pour les fichiers - quand un fichier se déplace dans le répertoire cible, je veux déclencher le dag en passant en paramètre le chemin du fichier.
vous pouvez le passer comme ceci:
airflow trigger_dag --conf {"file_variable": "/path/to/file"} dag_id
Ensuite, dans votre dag, vous pouvez accéder à cette variable en utilisant le modèle comme suit:
{{ dag_run.conf.file_variable }}
Si cela ne fonctionne pas, le partage d'une version simple de votre dag pourrait aider à obtenir de meilleures réponses.
oui, vous pouvez. Votre Dag devrait avoir un Dag et une tâche Bask comme ceci:
from airflow.operators.bash_operators import BashOperator
args = {'start_date':datetime.now(),
'owner':'airflow',}
dag = DAG(
dag_id='param_dag',
default_args=args,
schedule_interval=None)
bash_task=BashOperator(
task_id="bash_task"
bash_command= 'bash ~/path/bashscript.sh {{ dag_run.conf["parameter"] if dag_run else "" }} ',
//bashscript your script you want to run and the dag_run.conf will hold the parameter you want to pass
dag=dag)
Maintenant, sur votre ligne de commande, tapez simplement la commande:
airflow trigger_dag dag_id --conf '{"parameter":"~/path" }'