Docker环境下Boto3报The source profile "default" must have credentials错误怎么办
问题原因及解决方案
你遇到的问题基本是由配置错误、权限不匹配、挂载遗漏这几个常见原因导致的,按优先级排查即可:
1. Docker Compose配置存在语法错误+挂载遗漏
你给出的scheduler服务配置中存在两层重复的volumes字段,属于语法错误,会导致你写的挂载配置不生效,而且你仅给webserver服务添加了aws目录挂载,没有给实际运行任务的scheduler服务添加挂载:
# 错误的配置 scheduler: ... volumes: volumes: # 多余的嵌套字段,会导致配置失效 - ./database_utils:/database_utils
修正方法:
给两个服务都正确配置挂载:
services: webserver: ... volumes: - ./database_utils:/database_utils - ./aws:/home/airflow/.aws # 新增aws目录挂载 scheduler: ... volumes: # 删掉多余的内层volumes字段 - ./database_utils:/database_utils - ./aws:/home/airflow/.aws # 新增aws目录挂载
2. 宿主机凭证文件权限不匹配
官方Airflow 2.x镜像默认运行进程的用户是UID为50000的airflow用户,你进入容器验证时默认使用root用户,可以正常读取凭证文件,但实际运行Airflow服务的airflow用户没有读取权限。
修正方法:
先修改宿主机上凭证文件的权限,确保其他用户可读:
chmod 755 ./aws chmod 644 ./aws/credentials ./aws/config
再指定airflow用户进入容器验证,确认凭证正常:
docker exec -u airflow scheduler aws configure list
3. 环境变量/缓存残留问题
如果你使用环境变量传递凭证,可在DAG中打印环境变量确认是否被Airflow进程正常读取,同时要注意如果Airflow后台配置过AWS类型的连接,连接配置优先级会高于环境变量和本地凭证文件。
修改配置后建议彻底清理旧容器再重启,避免缓存影响:
docker-compose down -v docker-compose up --build -d
内容的提问来源于stack exchange,提问作者mrc
相关产品推荐
相关产品推荐

