Как упомянуть формат файлов .csv и .json в файле config.json в облачных функциях для запуска DAG - PullRequest
1 голос
/ 30 октября 2019

Я использую облачные функции для запуска Airflow DAG, когда файл помещается в облачное хранилище.

Он работал для файла .csv, но мое требование - облачная функция должна запускать DAG, когда файл любого типа(скажем, файл .json) помещается в облачное хранилище.

Я дал такую ​​конфигурацию, как,

index.js:

  'use strict';

   const fetch = require('node-fetch');
    const FormData = require('form-data');

    var config = require('./config.json');

   exports.triggerGCSDag = function triggerGCSDag(data,context) {

   const PROJECT_ID = config.PROJECT_ID;
   const CLIENT_ID = config.CLIENT_ID;
   const WEBSERVER_ID = config.WEBSERVER_ID;

   const USER_AGENT =config.USER_AGENT;
   const BODY = {'conf': JSON.stringify(data)};
   const file = data;

   const file_format=config.file_format;  
   const folder_array=config.folder_name;
   const DAG_ARRAY=config.DAG_NAME; 
   .
   .
   .

Но DAG не запускается всякий раз, когдаФайл .json или csv, помещенный в облачное хранилище.

Пожалуйста, помогите мне настроить config.json для формата файлов csv и json, чтобы cf запускал Airflow DAG

1 Ответ

0 голосов
/ 31 октября 2019

Вы можете использовать событие finalize как триггер для своей функции, затем вы можете использовать данные триггера, чтобы определить, является ли загруженный файл файлом .csv или .json или любым другим типом файла. Вы можете увидеть, как использовать данные триггера в документации Storage Triggers .

. Вы можете использовать эту функцию в качестве примера.

Эта функция отвечает "goog", еслифайл имеет желаемое расширение, и с «not goog», если есть какое-либо другое расширение. Вы можете найти ответ в журналах вашей функции.

Теперь вам просто нужно добавить свою логику для запуска потока воздуха внутри условного.

  exports.helloGCS = (data, context) => {
  const file = data;
  console.log(`File: ${file.name}`);
  if(file.name.includes('.csv') || file.name.includes('.json')){
  console.log('goog');
  } else {
   console.log('not goog');
  }
  };
...