可能是因为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将自动找到并使用此配置文件中的凭证。