Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 如何以编程方式使用localstack s3端点设置Airflow 1.10日志记录?_Amazon S3_Kubernetes_Docker Compose_Airflow_Localstack - Fatal编程技术网

Amazon s3 如何以编程方式使用localstack s3端点设置Airflow 1.10日志记录?

Amazon s3 如何以编程方式使用localstack s3端点设置Airflow 1.10日志记录?,amazon-s3,kubernetes,docker-compose,airflow,localstack,Amazon S3,Kubernetes,Docker Compose,Airflow,Localstack,在尝试为本地和kubernetes开发环境设置localstack s3存储桶的气流日志记录时,我遵循以下步骤。给出一点上下文,是一个本地AWS云堆栈,其中包含本地运行的s3在内的AWS服务 我在气流容器中添加了以下环境变量,以尝试登录到本地s3存储桶。这是我为所有气流容器添加到docker compose.yaml的内容: - AIRFLOW__CORE__REMOTE_LOGGING=True - AIRFLOW__CORE__REMOTE_BASE_LOG_FO

在尝试为本地和kubernetes开发环境设置localstack s3存储桶的气流日志记录时,我遵循以下步骤。给出一点上下文,是一个本地AWS云堆栈,其中包含本地运行的s3在内的AWS服务

我在气流容器中添加了以下环境变量,以尝试登录到本地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
我还将我的localstack s3 creds添加到了
airflow.cfg

[MyS3Conn]
aws\u访问\u密钥\u id=foo
aws_secret_access_key=bar
aws_默认_地区=美国东部-1
主机=http://localstack:4572    #s3端口。不确定这是不是合适的地方
此外,我还安装了ApacheAirflow[hooks]和ApacheAirflow[s3],尽管根据实际情况还不清楚到底需要哪一个

我按照中的步骤尝试验证S3Hook是否可以写入我的localstack s3实例:

来自afflow.hook导入S3Hook
s3=s3挂钩(aws_conn_id='MyS3Conn')
s3.加载字符串('test','test',bucket\u name='local-afflow-logs')
但是我得到了
botocore.exceptions.NoCredentialsError:找不到凭据

将凭据添加到
/admin/connection/edit
下的airflow console后,如图所示: 这是新的异常,
botocore.exceptions.ClientError:调用PutObject操作时发生错误(InvalidAccessKeyId):您提供的AWS访问密钥Id在我们的记录中不存在。
返回。这可能与网络有关

无论如何,需要的是程序设置,而不是手动设置

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

通过将
MyS3Conn
添加到
afflow.cfg
中,是否有合适的方法为
S3Hook
设置主机/端口/凭据

基于,气流似乎还不支持自定义S3URL。但是,基于气流(父级),似乎可以设置端点url,包括端口,并且应该从
aiffort.cfg
读取

我能够单独使用boto在localstack中检查并写入s3存储桶。另外,
curlhttp://localstack:4572/local-mochi气流日志
返回气流容器中的铲斗内容。和
aws——端点url=http://localhost:4572 s3 ls
返回
无法连接到端点URL:“http://localhost:4572/“


如果要从docker中运行的airflow登录到localstack s3 Bucket,还需要哪些其他步骤,以及是否支持自动设置

我认为应该使用
localhost
而不是
localstack
作为端点,例如
host=http://localhost:4572

在Airflow 1.10中,您可以在每个连接的基础上覆盖端点,但不幸的是,它一次只支持一个端点,因此您将使用该连接更改所有AWS挂钩的端点。要覆盖它,请编辑相关连接,并在“额外”字段中输入:

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

我相信这会解决问题?

这有助于我与其他供应商解决问题。