Запуск DAG Airflow с использованием AWS лямбда, вызванного из события S3 - PullRequest
0 голосов
/ 09 февраля 2020

Я думаю о создании рабочего процесса следующим образом:

У меня есть приложение, которое записывает почти 1000 CSV-файлов в папку MY_DIRECTORY в корзине s3 MY_BUCKET. Теперь я хотел бы проанализировать эти файлы из корзины s3 и загрузить в базу данных MySQL, используя Apache Airflow.

Из прочтения нескольких сообщений здесь: Airflow S3KeySensor - Как заставить его продолжать работать и Соединение Airflow s3 с использованием пользовательского интерфейса . Я думаю, что лучше всего вызвать мою Airflow DAG с использованием AWS лямбда, которая будет вызываться, как только файл попадет в папку s3.

Будучи новичком в Airflow и Lambda, я не понимаю, как настроить лямбду для запуска Airflow DAG. В связи с этим, если кто-нибудь даст несколько указаний, это будет очень полезно. Спасибо.

1 Ответ

2 голосов
/ 09 февраля 2020

Создайте DAG, которую вы хотите вызвать, а затем воспользуйтесь экспериментальными API-интерфейсами REST, предлагаемыми Airflow.

Вы можете прочитать о них здесь: 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 для чтения указанного вами файла.

...