Boto3 会话“找不到配置文件 ()”

mar*_*rco 10 session amazon-s3 python-3.x centos7 boto3

现在,这是一个奇怪的事情。我在~/.aws/config中创建了一个配置

[profile dev_config]
output = json
region = us-east-1
Run Code Online (Sandbox Code Playgroud)

我的~/.aws/credentials文件中也有凭证。仅供参考,信息故意为空白。

[dev_config]
aws_access_key_id = ...
aws_secret_access_key = ...
aws_session_token = ...
Run Code Online (Sandbox Code Playgroud)

当我运行 python 脚本时,我执行

session = boto3.Session(profile_name="dev_config")
s3client = session.client('s3')
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我收到错误

“找不到配置文件(dev_config)”

我完全被这个问题难住了,因为我的配置和凭据文件似乎一切都正确。所有论坛都表明我的配置或凭据文件设置错误,但我已准备就绪。就像 boto3 由于某种原因无法归档我的文件一样。顺便说一句,我正在 centos7 中通过 pycharm 运行它。如果有人还有什么需要我检查的,请帮忙。

另外,我知道这是与其他帖子类似的问题,但现在这些都对我没有帮助。正如我所说,它们都指向一个错误的配置。

mar*_*rco 13

@Syumak,感谢您的回复。我的案例的解决方案并不明显,但希望这能帮助其他可能遇到同样问题的人。

问题是 boto3 的配置文件的默认位置为

AWS_CONFIG_FILE = ~/.aws/config
Run Code Online (Sandbox Code Playgroud)

在项目的 .env 文件或系统上的全局 env 文件中,您需要将 AWS_CONFIG_FILE 位置设置为实际路径而不是上面的路径。因此,就我而言,我在 .env 文件中执行了以下操作。

AWS_CONFIG_FILE = /home/<user>/.aws/config
AWS_SHARED_CREDENTIALS_FILE = /home/<user>/.aws/credentials
Run Code Online (Sandbox Code Playgroud)

之后我的程序能够找到配置文件。