我正在考虑建立如下工作流程:
我有一个应用程序,它将近1000个csv文件写入s3存储桶MY_BUCKET中的文件夹MY_DIRECTORY。现在,我想从s3存储桶中解析这些文件,并使用Apache Airflow加载到MySQL数据库中。
通过阅读Airflow S3KeySensor - How to make it continue running和Airflow s3 connection using UI上的几篇文章,我认为最好使用AWS lambda触发我的Airflow DAG,一旦文件放到s3文件夹中就会被调用。
作为Airflow和Lambda的新手,我不知道如何设置lambda来触发Airflow DAG。在这方面,如果有人请给我一些指导,那将非常有帮助。谢谢。
答案 0 :(得分:3)
创建要触发的DAG,然后利用Airflow提供的实验性REST API。
您可以在这里阅读有关它们的信息:https://airflow.apache.org/docs/stable/api.html
尤其要使用以下端点:
POST /api/experimental/dags/<DAG_ID>/dag_runs
您可以在中传递DAG的名称以正确触发它。此外,您可以显式传递DAG必须处理的文件名
curl -X POST \
http://localhost:8080/api/experimental/dags/<DAG_ID>/dag_runs \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-d '{"conf":"{\"FILE_TO_PROCESS\":\"value\"}"}'
然后在DAG中使用钩子读取您指定的文件。