如何将Airflow 2.1.3连接至MinIO S3并解决403访问报错
问题解答
1. MinIO Access Key/Secret Key 获取方式
你当前docker-compose部署的场景下,已经直接在environment变量中定义了密钥对:
MINIO_ROOT_USER的值就是Access Key,你这里为userMINIO_ROOT_PASSWORD的值就是Secret Key,你这里为password
如果是自定义创建非root权限的密钥,可登录MinIO控制台(默认端口9001),在「身份管理」-「访问密钥」模块自行生成新的密钥对。
2. 403报错原因及Airflow连接正确配置
你遇到的403错误核心原因是:Airflow的S3连接默认指向AWS官方S3服务,没有指定为你的本地MinIO地址,导致认证请求发错了目标地址。
正确的Airflow UI连接配置项:
- Conn Type:
S3 - Conn Id:自定义命名,例如
minio_s3,需和DAG代码中的参数对应 - Login:填写MinIO的Access Key,即你这里的
user - Password:填写MinIO的Secret Key,即你这里的
password - Extra:必须添加以下配置,指定MinIO的服务地址:
{"endpoint_url": "http://locals3:9000"}
注:原配置中的Host、Port字段可以留空,以Extra中的endpoint_url配置为准即可。
DAG测试代码修改
你代码中注释了aws_conn_id参数,默认会调用系统预置的aws_default连接,需要做对应修改:
sensor = S3KeySensor( task_id='check_s3_for_file_in_s3', bucket_key='test', bucket_name='airflow-data', aws_conn_id="minio_s3", # 替换为你自己定义的Conn Id timeout=18 * 60 * 60, poke_interval=120, dag=dag)
额外注意事项
- 请确认你的Airflow环境已安装
apache-airflow-providers-amazon依赖包,S3相关的传感器和算子都依赖该包 - 如果MinIO使用自签HTTPS证书,需要在Extra配置中额外添加
"verify": false跳过证书校验 - 确认
airflow-data桶中存在名为test的文件或前缀,否则传感器会一直处于等待状态,但该问题不会触发403报错
内容的提问来源于stack exchange,提问作者Marin
相关产品推荐
相关产品推荐

