首页 文章

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

提问于
浏览
2

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

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

  • 从Admin UI创建Airflow的S3连接(只需将 S3_CONN 设置为conn id, s3 作为类型 . 因为我的kubernetes集群在AWS上运行且所有节点都具有S3访问角色,所以应该足够了)

  • 设置Airflow配置如下 remote_base_log_folder = s3://aws-logs-xxxxxxxx-us-east-1/k8s-airflow remote_log_conn_id = S3_CONN encrypt_s3_logs = False

首先我尝试创建一个DAG,以便它在运行后立即引发异常 . 这个工作,日志可以在S3上看到 .

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

现在DAG看起来正常工作,一个集群启动,一旦它准备就绪,DAG标记为成功 . But I could see no logs on S3.

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

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

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

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

1 回答

  • 1

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

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

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

相关问题