使气流从S3读取并发布到松弛状态?

时间:2019-09-27 13:41:29

标签: amazon-s3 airflow slack airflow-scheduler

我有一个要求我的气流作业从S3读取文件并将其内容发布到松弛的条件。

背景

当前,气流作业具有一个S3键传感器,它等待将文件放置在S3位置,如果该文件未在规定的时间内出现,它将失败并将错误消息推送到松弛状态。

现在需要做什么

如果气流作业成功,则需要检查另一个S3位置,如果文件存在,则将其内容推入松弛状态。

这种用例是否可以通气?

1 个答案:

答案 0 :(得分:1)

您已经确定工作流程的第一步必须是S3KeySensor

对于后续步骤,根据您..it needs to check another S3 location and if file there exists,..的含义,go可以通过以下方式进行处理

  1. 第1步

    a。如果另一个S3位置上的文件也应该在某个时间出现,那么您当然需要另一个S3KeySensor

    b。否则,如果预计该另一个文件在那里(或不存在,但是不必等待某个时间出现),我们将使用{{1的check_for_key(..)函数来检查该文件是否存在}}(可以在简单的S3_Hook的{​​{1}} /您用于步骤2的任何其他自定义运算符中完成)

  2. 第2步

    现在,可以确定第二个文件位于预期的位置(否则我们就不会走这么远了)。现在,您只需要使用read_key(..)函数来读取该文件的内容。之后,您可以使用python_callable的{​​{3}}功能将内容推送到Slack。您可能会想使用call(..)(当然可以),但是仍然要从S3读取文件并将内容发送到Slack应当合并为一项任务。因此,最好使用通用的SlackApiOperator

  3. 在通用PythonOperator中执行这些操作