使用从S3事件调用的AWS Lambda触发Airflow DAG

时间:2020-02-09 14:32:29

标签: amazon-s3 aws-lambda airflow

我正在考虑建立如下工作流程:

我有一个应用程序,它将近1000个csv文件写入s3存储桶MY_BUCKET中的文件夹MY_DIRECTORY。现在,我想从s3存储桶中解析这些文件,并使用Apache Airflow加载到MySQL数据库中。

通过阅读Airflow S3KeySensor - How to make it continue runningAirflow s3 connection using UI上的几篇文章,我认为最好使用AWS lambda触发我的Airflow DAG,一旦文件放到s3文件夹中就会被调用。

作为Airflow和Lambda的新手,我不知道如何设置lambda来触发Airflow DAG。在这方面,如果有人请给我一些指导,那将非常有帮助。谢谢。

1 个答案:

答案 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中使用钩子读取您指定的文件。