当前位置: 首页 > 面试题库 >

设置s3以记录气流

谭敏学
2023-03-14
问题内容

我正在使用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像这样在文件中设置了一个新部分

[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此处所述,以及针对此问题的其他答案。

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”}



 类似资料:
  • 我使用AudioRecord类来记录通话过程中的语音。 我很高兴只录下拥有电话的人的声音(从麦克风)。在录音期间,我想做一些音频处理,但这是目前的主题。 Android有以下AudioSources选项: null 对于音频格式,我选择了AudioFormat.encoding_pcm_16bit,但它也有:-AudioFormat.encoding_default-AudioFormat.enc

  • 如何在JMeter 4.0中禁用日志记录。在执行任何JMeter脚本时,都需要根据定义的日志级别生成日志。 log4j2 中的配置应该是什么.xml,以便它不会生成任何日志?

  • 问题内容: 我想以自己的格式记录来自net / http的错误。在net / http包中,我找到了Server结构: 我想用自己的实现代替logger: 实施此方法的正确方法是什么? 更新: 我有以下配置的zap记录器: 它配置为以json格式编写。我希望以与zap相同的方式编写错误。我创建以下内容: 问题: 方法的主体应该是什么? 我应该检索io.Writer以便通过它吗?这该怎么做? 问题答

  • 根据Log4j 2手册: LoggerConfig(包括根LoggerConfig)可以配置属性,这些属性将添加到从ThreadContextMap复制的属性中。这些属性可以从应用程序、筛选器、布局等中引用,就像它们是线程上下文映射的一部分一样。 但是,我找不到怎么做。我尝试了以下方法: 使用此配置,ThreadContextMap将不会有任何“关注”键,并且状态记录器将输出: 尝试将属性属性属性

  • 我的域管理器是Office 365。 我希望它保留所有当前记录,但由于我的网站位于另一台服务器中,我已将“A”记录指向我的网站服务器IP。 我的问题是,我的网站DNS管理器是否会覆盖Office 365中的域管理器记录(Office 365管理域)?或者我的域管理器将忽略网站DNS管理器中设置的记录? 我这样问是因为我想保留Office 365中的所有电子邮件记录,并且只将我的域指向网站托管服务器

  • 我想使用S3托管通过Kotlin Spring Boot应用程序上载的文件。我按照说明使用了各种其他文档,并尝试了一些解决stackoverflow上类似问题的方法。我总是收到403错误。如何设置S3和IAM以便上载文件?我如何找出问题所在?任何帮助都将不胜感激。 我已经激活了访问日志记录,这需要很长时间,而且还没有对我有太大帮助,特别是因为生成日志需要45分钟。忽略状态为200的响应,日志中会出