如何解决boto3找不到配置文件
我的boto3设置可以通过/.aws/credentials
提供凭据-我想如何将其作为环境变量传递给docker工作。
这是/.aws/credentials
[default]
aws_access_key_id = ABCD123
aws_secret_access_key = BCDSA123
[testing]
source_profile = default
role_arn = arn:aws:iam::123:role/access-db
一切正常-但如果我在aws.env
文件中设置安装环境变量
export AWS_ACCESS_KEY_ID="ABCD123"
export AWS_SECRET_ACCESS_KEY="BCDSA123"
export AWS_ROLE_SESSION_NAME="default"
export AWS_PROFILE="testing"
export AWS_DEFAULT_PROFILE="testing"
export AWS_ROLE_ARN="arn:aws:iam::123:role/access-db"
我收到以下错误
root@64813e0cc755:/rate_prediction# python test.py
Traceback (most recent call last):
File "test.py",line 4,in <module>
boto3.setup_default_session(profile_name = 'testing')
File "/usr/local/lib/python3.7/site-packages/boto3/__init__.py",line 34,in setup_default_session
DEFAULT_SESSION = Session(**kwargs)
File "/usr/local/lib/python3.7/site-packages/boto3/session.py",line 80,in __init__
self._setup_loader()
File "/usr/local/lib/python3.7/site-packages/boto3/session.py",line 120,in _setup_loader
self._loader = self._session.get_component('data_loader')
File "/usr/local/lib/python3.7/site-packages/botocore/session.py",line 685,in get_component
return self._components.get_component(name)
File "/usr/local/lib/python3.7/site-packages/botocore/session.py",line 924,in get_component
self._components[name] = factory()
File "/usr/local/lib/python3.7/site-packages/botocore/session.py",line 158,in <lambda>
lambda: create_loader(self.get_config_variable('data_path')))
File "/usr/local/lib/python3.7/site-packages/botocore/session.py",line 241,in get_config_variable
logical_name)
File "/usr/local/lib/python3.7/site-packages/botocore/configprovider.py",line 293,in get_config_variable
return provider.provide()
File "/usr/local/lib/python3.7/site-packages/botocore/configprovider.py",line 390,in provide
value = provider.provide()
File "/usr/local/lib/python3.7/site-packages/botocore/configprovider.py",line 451,in provide
scoped_config = self._session.get_scoped_config()
File "/usr/local/lib/python3.7/site-packages/botocore/session.py",line 340,in get_scoped_config
raise ProfileNotFound(profile=profile_name)
botocore.exceptions.ProfileNotFound: The config profile (testing) could not be found
这是我的python脚本
import boto3
import os
boto3.setup_default_session(profile_name = 'testing')
s3 = boto3.resource('s3')
s3_client = boto3.client('s3')
my_bucket = s3.Bucket('ds-models-testing')
我希望与之合作的-再一次,似乎我的环境变量中缺少某些东西,并且boto正在搜索配置文件botocore.exceptions.ProfileNotFound: The config profile (testing) could not be foun
解决方法
您没有配置文件。配置和凭据文件应位于〜/ .aws文件夹中。
.aws /凭证
[default]
aws_access_key_id = ABCD123
aws_secret_access_key = BCDSA123
和配置文件.aws / config
[profile testing]
source_profile = default
role_arn = arn:aws:iam::123:role/access-db
,
首先,我认为如果要尝试从环境变量中读取内容,则应删除此行:
boto3.setup_default_session(profile_name = 'testing')
文档说
Boto3搜索凭据的顺序为:
1. Passing credentials as parameters in the boto.client() method 2. Passing credentials as parameters when creating a Session object 3. Environment variables 4. Shared credential file (~/.aws/credentials) 5. AWS config file (~/.aws/config) 6. Assume Role provider 7. Boto2 config file (/etc/boto.cfg and ~/.boto) 8. Instance metadata service on an Amazon EC2 instance that has an IAM role configured.
参考:https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html
因此,您怀疑环境变量很可能没有按预期设置。尝试添加代码以记录通过app.env文件设置的环境变量的值,以确保您确实看到了它的设置并可以将其读取为环境变量:
os.environ.get('AWS_ACCESS_KEY_ID','It is not set!')
假设它实际上正在读取您在aws.env中设置的环境变量,然后尝试仅导出aws.env中的这两个环境变量并删除其他环境变量:
export AWS_ACCESS_KEY_ID="ABCD123"
export AWS_SECRET_ACCESS_KEY="BCDSA123"
,
您需要取消设置AWS_PROFILE环境变量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。