当前位置: 首页 > 知识库问答 >
问题:

如何用localstack s3endpoint编程设置Airflow 1.10日志记录?

孙凌
2023-03-14

在尝试为本地和kubernetes dev环境设置airflow日志记录到LocalStackS3存储桶时,我遵循airflow文档记录到s3。为了给出一点上下文,localstack是一个本地AWS云堆栈,其中包含在本地运行的s3在内的AWS服务。

我将以下环境变量添加到我的airflow容器中,类似于此其他堆栈溢出日志,以尝试记录到我的本地s3桶中。这是我为所有气流容器添加到docker-compose.yaml中的内容:

       - AIRFLOW__CORE__REMOTE_LOGGING=True
       - AIRFLOW__CORE__REMOTE_BASE_LOG_FOLDER=s3://local-airflow-logs
       - AIRFLOW__CORE__REMOTE_LOG_CONN_ID=MyS3Conn
       - AIRFLOW__CORE__ENCRYPT_S3_LOGS=False

我还向airflow.cfg添加了我的localstack s3信条

[MyS3Conn]
aws_html" target="_blank">access_key_id = foo
aws_secret_access_key = bar
aws_default_region = us-east-1
host = http://localstack:4572    # s3 port. not sure if this is right place for it 
from airflow.hooks import S3Hook
s3 = S3Hook(aws_conn_id='MyS3Conn')
s3.load_string('test','test',bucket_name='local-airflow-logs')

但我得到botocore.exceptions.noCredentialSerror:无法定位凭据

无论如何,需要编程设置,而不是手动设置。

我能够使用一个独立的Python脚本(通过boto显式输入AWS凭据)访问bucket,但它需要作为Airflow的一部分工作。

我可以单独使用boto在localstack中检查和写入我的s3 bucket。此外,curl http://localstack:4572/local-mochi-airflow-logs从airflow容器返回桶的内容。和AWS-endpoint-url=http://localhost:4572 s3 ls返回无法连接到endpointURL:“http://localhost:4572/”

从docker中运行的airflow中记录到LocalStackS3存储桶还需要哪些其他步骤?

共有1个答案

蒋默
2023-03-14

我认为您应该对endpoint使用localhost而不是localstack,例如host=http://localhost:4572

在Airflow 1.10中,您可以在每个连接的基础上覆盖endpoint,但不幸的是,它一次只支持一个endpoint,因此您需要为所有使用该连接的AWS钩子更改它。要覆盖它,编辑相关的连接,并在“extra”字段中放入:

{"host": "http://localhost:4572"}

我相信这会解决的?

 类似资料:
  • 本文向大家介绍如何在Linux上设置Rsyslog远程日志记录,包括了如何在Linux上设置Rsyslog远程日志记录的使用技巧和注意事项,需要的朋友参考一下 每个Linux发行版都带有一些日志记录系统,用于记录系统活动。这在系统故障排除期间可能会有所帮助。Rsyslog是一个开放源代码,并且在系统日志处理速度方面可谓飞速发展。它可用于几种主要的Linux发行版,包括基于Debian和Red Ha

  • 如何在Spring启动应用程序中以编程方式配置日志记录? 使用xml或属性文件不够灵活,无法满足我的需要。 更新:我想实现以下目标: 每个环境我所拥有的是: 伐木。数量root=[INFO,DEBUG,…] 没有XML、Groovy和其他我真的不想处理的格式的重复。 归根结底,这实际上是为了实现与Spring JavaConfig对beans一样的日志记录灵活性。XML或其他文件格式太过静态,需要

  • 我有一个多线程Java应用程序,每个线程都是一个扩展基类的类。其中一个线程偶尔会给基类中的一个方法大量机器生成的数据,而其他线程只给出少量的人类类型数据。我想在比机器数据更高的日志级别上记录这些人类类型的消息,但是由于基类是所有线程的一部分,我无法在代码中区分出来。 一种解决方案是通知扩展类中的基类在不同的级别上登录,但是我必须将这些知识硬编码到应用程序中,这很难看。 我想做的是通过我的logba

  • 我想更改我的Quarkus应用程序的日志记录级别。 如何从配置文件或运行时执行此操作?

  • 这是一个很简单的问题,但我找不到信息。 (可能我对Java框架的知识严重缺乏) 如何使用application.properties设置日志级别? 和日志文件位置等?

  • 本文向大家介绍如何配置Spring Boot应用程序日志记录?相关面试题,主要包含被问及如何配置Spring Boot应用程序日志记录?时的应答技巧和注意事项,需要的朋友参考一下 Spring Boot附带了对Log4J2,Java Util Logging和Logback的支持。它通常预先配置为控制台输出。可以通过仅在application.properties文件中指定logging.leve