可能是因为AWS cli使用的是系统级别的配置文件,而boto3使用的是用户级别的配置文件。
可以通过在代码中指定配置文件路径来解决此问题。例如:
import boto3
session = boto3.session.Session(profile_name='myprofile', region_name='us-west-2',
# 指定配置文件路径
config=boto3.session.Config(
region_name = 'us-west-2',
signature_version = 's3v4',
s3 = {'addressing_style': 'path'},
retries = {'max_attempts': 10, 'mode': 'standard'}
))
s3_client = session.client('s3')
另外,可以通过在用户级别的配置文件(通常位于 ~/.aws/config
)中设置 aws_access_key_id
和 aws_secret_access_key
来进行身份验证。如下所示:
[profile myprofile]
aws_access_key_id=myaccesskey
aws_secret_access_key=mysecretkey
region=us-west-2
这样,boto3将自动找到并使用此配置文件中的凭证。