我正在使用docker-compose设置可扩展的气流集群。我基于此Dockerfile https://hub.docker.com/r/puckel/docker- airflow/
我的问题是将日志设置为从s3写入/读取。当dag完成后,我会收到这样的错误
*** Log file isn't local. *** Fetching here: http://ea43d4d49f35:8793/log/xxxxxxx/2017-06-26T11:00:00 *** Failed to fetch log file from worker. *** Reading remote logs... Could not read logs from s3://buckets/xxxxxxx/airflow/logs/xxxxxxx/2017-06- 26T11:00:00
我airflow.cfg像这样在文件中设置了一个新部分
airflow.cfg
[MyS3Conn] aws_access_key_id = xxxxxxx aws_secret_access_key = xxxxxxx aws_default_region = xxxxxxx
然后在“远程日志”部分中指定s3路径 airflow.cfg
remote_base_log_folder = s3://buckets/xxxx/airflow/logs remote_log_conn_id = MyS3Conn
我是否对此进行了正确设置并且存在错误?这里缺少成功的秘诀吗?
-更新
我尝试以URI和JSON格式导出,但似乎都无法正常工作。然后,我导出了aws_access_key_id和aws_secret_access_key,然后气流开始拾取它。现在我在工作日志中得到了他的错误
6/30/2017 6:05:59 PMINFO:root:Using connection to: s3 6/30/2017 6:06:00 PMERROR:root:Could not read logs from s3://buckets/xxxxxx/airflow/logs/xxxxx/2017-06-30T23:45:00 6/30/2017 6:06:00 PMERROR:root:Could not write logs to s3://buckets/xxxxxx/airflow/logs/xxxxx/2017-06-30T23:45:00 6/30/2017 6:06:00 PMLogging into: /usr/local/airflow/logs/xxxxx/2017-06-30T23:45:00
我也找到了此链接 https://www.mail- archive.com/dev@airflow.incubator.apache.org/msg00462.html
然后,我将其中一台工作器外壳(与Web服务器和调度程序分开),并在python中运行了这段代码
import airflow s3 = airflow.hooks.S3Hook('s3_conn') s3.load_string('test', airflow.conf.get('core', 'remote_base_log_folder'))
我收到此错误。
boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden
我尝试导出几种不同类型的AIRFLOW_CONN_环境,如连接部分https://airflow.incubator.apache.org/concepts.html此处所述,以及针对此问题的其他答案。
AIRFLOW_CONN_
s3://<AWS_ACCESS_KEY_ID>:<AWS_SECRET_ACCESS_KEY>@S3 {"aws_account_id":"<xxxxx>","role_arn":"arn:aws:iam::<xxxx>:role/<xxxxx>"} {"aws_access_key_id":"<xxxxx>","aws_secret_access_key":"<xxxxx>"}
我还导出了AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY,但均未成功。
这些凭证被存储在数据库中,因此一旦我将它们添加到UI中,工作人员就应该将其拾取,但是由于某种原因它们将无法写入/读取日志。
您需要通过气流UI设置s3连接。为此,您需要转到气流UI上的管理->连接选项卡,并为S3连接创建新行。
配置示例为:
康恩ID:my_conn_S3 康恩类型:S3 附加:{“ aws_access_key_id”:“ your_aws_key_id”,“ aws_secret_access_key”:“ your_aws_secret_key”}
康恩ID:my_conn_S3
康恩类型:S3
附加:{“ aws_access_key_id”:“ your_aws_key_id”,“ aws_secret_access_key”:“ your_aws_secret_key”}