气流:无法将工作人员日志发送到S3

时间:2017-05-20 06:36:03

标签: docker amazon-s3 airflow apache-airflow

我使用Docker镜像在我的kubernetes集群上部署了Airflow网络服务器,调度程序,工作人员和花。 气流版本为1.8.0。

现在我想将工作日志发送到S3和

  1. 从管理界面创建Airflow的S3连接(只需将S3_CONN设置为 conn id,s3作为类型。因为我的kubernetes集群正在运行 AWS和所有节点都具有S3访问角色,应该足够了)
  2. 如下设置Airflow配置     remote_base_log_folder = s3://aws-logs-xxxxxxxx-us-east-1/k8s-airflow     remote_log_conn_id = S3_CONN     encrypt_s3_logs = False
  3. 首先我尝试创建一个DAG,以便它在运行后立即引发异常。这样可以在S3上看到日志。

    所以我进行了修改,以便DAG现在创建一个EMR集群并等待它准备就绪(等待状态)。为此,我重新启动了所有4个气流的docker容器。

    现在DAG看起来正常工作,群集已启动,一旦准备就绪,DAG就会被标记为成功。 但我看不到S3的日志。

    工作人员和Web服务器上没有相关的错误日志,所以我甚至看不出可能导致此问题的原因。日志没有发送。

    有没有人知道Airflow的远程日志记录是否有一些限制,除了官方文档中的这种描述? https://airflow.incubator.apache.org/configuration.html#logs

      

    在Airflow Web UI中,本地日志优先于远程日志。如果   无法找到或访问本地日志,远程日志将是   显示。请注意,日志只会在任务完成后发送到远程存储   完成(包括失败)。换句话说,远程日志用于运行   任务不可用。

    我没有预料到,但是在成功的情况下,日志是否会被发送到远程存储?

1 个答案:

答案 0 :(得分:1)

随气流一起安装的boto版本是2.46.1,该版本不使用iam实例角色。

相反,您必须为在S3_CONN配置的额外字段中具有访问权限的IAM用户添加访问密钥和密码

像这样: {"aws_access_key_id":"123456789","aws_secret_access_key":"secret12345"}