我使用Docker镜像在我的kubernetes集群上部署了Airflow网络服务器,调度程序,工作人员和花。 气流版本为1.8.0。
现在我想将工作日志发送到S3和
S3_CONN
设置为
conn id,s3
作为类型。因为我的kubernetes集群正在运行
AWS和所有节点都具有S3访问角色,应该足够了)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就会被标记为成功。 但我看不到S3的日志。
工作人员和Web服务器上没有相关的错误日志,所以我甚至看不出可能导致此问题的原因。日志没有发送。
有没有人知道Airflow的远程日志记录是否有一些限制,除了官方文档中的这种描述? https://airflow.incubator.apache.org/configuration.html#logs
在Airflow Web UI中,本地日志优先于远程日志。如果 无法找到或访问本地日志,远程日志将是 显示。请注意,日志只会在任务完成后发送到远程存储 完成(包括失败)。换句话说,远程日志用于运行 任务不可用。
我没有预料到,但是在成功的情况下,日志是否会被发送到远程存储?
答案 0 :(得分:1)
随气流一起安装的boto版本是2.46.1,该版本不使用iam实例角色。
相反,您必须为在S3_CONN
配置的额外字段中具有访问权限的IAM用户添加访问密钥和密码
像这样:
{"aws_access_key_id":"123456789","aws_secret_access_key":"secret12345"}