gpt4 book ai didi

amazon-s3 - 通过环境变量创建 Airflow S3 连接的 URI 格式

转载 作者:行者123 更新时间:2023-12-05 00:57:46 26 4
gpt4 key购买 nike

我已阅读 creating an Airflow Connection via an environment variable 的文档我在 Debian9 上使用 Airflow v1.10.6 和 Python3.5。

上面的链接文档显示了 s3://accesskey:secretkey@S3 的示例 S3 连接据此,我定义了以下环境变量:

AIRFLOW_CONN_AWS_S3=s3://#MY_ACCESS_KEY#:#MY_SECRET_ACCESS_KEY#@S3

还有下面的函数

def download_file_from_S3_with_hook(key, bucket_name):
"""Get file contents from S3"""
hook = airflow.hooks.S3_hook.S3Hook('aws_s3')
obj = hook.get_key(key, bucket_name)
contents = obj.get()['Body'].read().decode('utf-8')
return contents

但是,当我调用该函数时,我收到以下错误:

Using connection to: id: aws_s3.
Host: #MY_ACCESS_KEY#,
Port: None,
Schema: #MY_SECRET_ACCESS_KEY#,
Login: None,
Password: None,
extra: {}
ERROR - Unable to locate credentials

当我根据 Airflow 的文档格式化 URI 时,它似乎将访问 key 作为主机,将 secret 访问 key 作为架构。

它显然在读取环境变量,因为它具有正确的 conn_id。它还具有我的访问 key 和 secret 的正确值,只是将其放在错误的字段下。

当我在 UI 中设置连接时,如果我将 Login 设置为我的访问 key 并将 Password 设置为我的 token ,则该功能将起作用。那么我如何格式化我的环境变量 URI 错误?

最佳答案

发现问题,s3://accesskey:secretkey@S3 是正确的格式,问题是我的 aws_secret_access_key 有一个特殊字符,必须是urlencoded。这解决了一切。

关于amazon-s3 - 通过环境变量创建 Airflow S3 连接的 URI 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59671864/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com