Cloud Composer中BashOperator的curl命令路径报错求助
Cloud Composer中Airflow任务的正确路径方案
你遇到的路径问题源于Cloud Composer的文件系统挂载逻辑和本地Airflow的差异:
若仅需临时存储(任务运行期间可用,结束后自动清理),直接保留
/tmp/launches.json即可,这个路径在Cloud Composer的工作节点容器中默认存在且可写,当前命令无需修改就能正常执行。若需要持久化保存下载的文件(任务结束后数据不丢失),必须使用Cloud Composer挂载的GCS专属数据路径:
/home/airflow/gcs/data/launches.json。原因如下:/home/airflow/gcs/dags是专门存放DAG文件的目录,任务进程无写入权限,也不应在此存储任务生成的数据;/home/airflow/gcs/data是Cloud Composer默认挂载的任务数据存储目录,对应关联GCS桶内的data文件夹,文件会自动同步到GCS实现持久化。
修改后的持久化版本代码:
download_launches = BashOperator( task_id="download_launches", bash_command="curl -o /home/airflow/gcs/data/launches.json -L 'https://ll.thespacedevs.com/2.0.0/launch/upcoming'", # noqa: E501 dag=dag, )
默认配置下Cloud Composer的服务账号已拥有GCS桶的写入权限,无需额外配置。
内容的提问来源于stack exchange,提问作者VKarthik
相关产品推荐
相关产品推荐

