Airflow S3 ClientError - 禁止:使用 UI 的错误 s3 连接设置
Airflow S3 ClientError - Forbidden: Wrong s3 connection settings using UI
我在我的任务中使用 S3Hook 从 DigitalOcean 空间上的 s3 存储桶下载文件。下面是一个凭据示例,它与 boto3 完美配合,但在 S3Hook 中使用时会导致错误:
[s3_bucket]
default_region = fra1
default_endpoint=https://fra1.digitaloceanspaces.com
default_bucket=storage-data
bucket_access_key=F7QTVFMWJF73U75IB26D
bucket_secret_key=mysecret
这是我在 Admin->Connections 中填写连接表单的方式:
这是我在任务的 .log 文件中看到的内容:
ClientError: An error occurred (403) when calling the HeadObject operation: Forbidden
所以,我猜,连接形式是错误的。正确填充所有 S3 参数的正确方法是什么? (即密钥、秘密、存储桶、主机、区域等)
将 host
变量移动到 Extra 对我有用。
出于某种原因,如果自定义 S3 主机(与 AWS 不同,例如 DigitalOcean)不在 Extra 变量中,airflow 无法建立连接。
此外,region_name
可以从 Extra 中删除,以防像我这样。
为了在 Digital Ocean Spaces 上使用 Airflow 2.1.0,我必须在此处添加 aws_conn_id:
s3_client = S3Hook(aws_conn_id='123.ams3.digitaloceanspaces.com')
填写 Schema 作为存储桶名称、Login(密钥)和密码(secret),然后 UI 中的 Extra 字段包含区域和主机:
{"host": "https://ams3.digitaloceanspaces.com","region_name": "ams3"}
我在我的任务中使用 S3Hook 从 DigitalOcean 空间上的 s3 存储桶下载文件。下面是一个凭据示例,它与 boto3 完美配合,但在 S3Hook 中使用时会导致错误:
[s3_bucket]
default_region = fra1
default_endpoint=https://fra1.digitaloceanspaces.com
default_bucket=storage-data
bucket_access_key=F7QTVFMWJF73U75IB26D
bucket_secret_key=mysecret
这是我在 Admin->Connections 中填写连接表单的方式:
这是我在任务的 .log 文件中看到的内容:
ClientError: An error occurred (403) when calling the HeadObject operation: Forbidden
所以,我猜,连接形式是错误的。正确填充所有 S3 参数的正确方法是什么? (即密钥、秘密、存储桶、主机、区域等)
将 host
变量移动到 Extra 对我有用。
出于某种原因,如果自定义 S3 主机(与 AWS 不同,例如 DigitalOcean)不在 Extra 变量中,airflow 无法建立连接。
此外,region_name
可以从 Extra 中删除,以防像我这样。
为了在 Digital Ocean Spaces 上使用 Airflow 2.1.0,我必须在此处添加 aws_conn_id:
s3_client = S3Hook(aws_conn_id='123.ams3.digitaloceanspaces.com')
填写 Schema 作为存储桶名称、Login(密钥)和密码(secret),然后 UI 中的 Extra 字段包含区域和主机:
{"host": "https://ams3.digitaloceanspaces.com","region_name": "ams3"}