You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS CLI可正常使用但Boto3报错找不到profile3配置如何排查

问题根因

你遇到的ProfileNotFound报错,核心原因是运行Airflow Python脚本的进程读取到的AWS配置路径、权限或自定义Boto3封装逻辑存在问题,AWS CLI能正常运行不代表Airflow进程能拿到相同的环境配置:

  1. 官方apache/airflow镜像默认运行用户airflow的家目录为/opt/airflow,你将配置挂载到了/home/airflow/.aws,boto3默认会优先读取当前用户家目录下的.aws文件夹,如果没有正确配置环境变量就会找不到配置
  2. 你配置的AWS_CONFIG_FILE、AWS_SHARED_CREDENTIALS_FILE环境变量没有被Airflow进程正确加载:交互式exec进入容器时启动的shell会加载.bashrc/.profile等配置,你看到的是shell的环境变量,而Airflow后台进程不会加载这些shell配置,仅会读取容器启动时传入的环境变量
  3. 你自定义封装的Boto3AwsClient类可能存在逻辑缺陷,比如硬编码了配置文件路径、没有正确传入profile参数
  4. 挂载的.aws目录权限不足,airflow用户没有读取权限(你exec进入容器如果用的是root用户,看到的文件可读不代表airflow用户能读)
排查步骤
  • 首先在你的Python脚本中添加调试代码,确认进程实际拿到的配置:
import os
# 打印环境变量
print("AWS_CONFIG_FILE:", os.environ.get("AWS_CONFIG_FILE"))
print("AWS_SHARED_CREDENTIALS_FILE:", os.environ.get("AWS_SHARED_CREDENTIALS_FILE"))
# 打印当前用户家目录
print("当前用户家目录:", os.path.expanduser("~"))
# 检查配置文件可读性
config_path = "/home/airflow/.aws/config"
print(f"配置文件是否可读: {os.access(config_path, os.R_OK)}")
  • 跳过自定义的Boto3AwsClient类,直接用原生boto3测试配置是否正常:
import boto3
try:
    session = boto3.Session(profile_name="profile3")
    client = session.client("ssm")
    print("原生boto3读取profile成功")
except Exception as e:
    print(f"原生boto3报错: {e}")

如果原生boto3能正常运行,说明问题出在你自定义的Boto3AwsClient封装逻辑中。

解决方案

方案1:修正挂载路径(优先推荐)

直接将AWS配置挂载到airflow用户默认家目录下,无需额外配置环境变量:
修改docker-compose中的卷挂载配置,替换原有~/.aws/:/home/airflow/.aws为:

- ~/.aws/:/opt/airflow/.aws

同时确保宿主机的.aws目录有读取权限:

chmod -R 755 ~/.aws

重启容器即可生效。

方案2:确认环境变量正确传入进程

如果你不想修改挂载路径,确保两个AWS环境变量写入到docker-compose指定的./airflow.env文件中,而不是写在shell配置文件里,只有写在env_file指定的文件中,Airflow进程启动时才能正确读取。

方案3:代码中强制指定配置路径

如果以上方案都不适用,可以在初始化boto3前强制写入环境变量:

import os
import boto3

os.environ["AWS_CONFIG_FILE"] = "/home/airflow/.aws/config"
os.environ["AWS_SHARED_CREDENTIALS_FILE"] = "/home/airflow/.aws/credentials"

session = boto3.Session(profile_name="profile3")
aws_client = session.client("ssm")

内容的提问来源于stack exchange,提问作者mrc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 15:42:02