如何导入AWS凭证使Python S3遍历脚本正常运行?
解决boto3连接S3的凭证导入问题
这个报错本质是boto3无法获取有效的AWS身份凭证,另外注意你报错里的区域写的是aws-east-2,这是无效的,正确的区域标识应该是us-east-2(俄亥俄区域),先修正区域问题,再来看几种靠谱的凭证导入方案:
方案一:使用AWS CLI配置(推荐生产/日常使用)
这是最安全且易维护的方式,boto3会自动读取CLI配置的凭证:
- 先安装AWS CLI(如果没装的话)
- 在终端运行命令:
aws configure - 按照提示依次输入:
AWS Access Key ID:你的AWS访问密钥IDAWS Secret Access Key:你的AWS秘密访问密钥Default region name:输入us-east-2(或者你实际使用的区域)Default output format:可以输入json或直接留空
配置完成后,你的原脚本不需要做任何修改,直接运行就能正常获取存储桶列表了。
方案二:在脚本中直接指定凭证(仅测试用,不推荐生产)
这种方式虽然简单,但绝对不要在生产环境或公开代码中使用,因为会直接泄露敏感凭证:
import boto3 s3 = boto3.resource( 's3', aws_access_key_id='你的Access Key ID', aws_secret_access_key='你的Secret Access Key', region_name='us-east-2' ) for bucket in s3.buckets.all(): print(bucket.name)
方案三:通过环境变量传递凭证
在运行脚本前,先设置环境变量(不同系统命令略有区别):
Linux/macOS终端:
export AWS_ACCESS_KEY_ID="你的Access Key ID" export AWS_SECRET_ACCESS_KEY="你的Secret Access Key" export AWS_DEFAULT_REGION="us-east-2"
设置完成后直接运行你的Python脚本即可。
Windows命令提示符:
set AWS_ACCESS_KEY_ID=你的Access Key ID set AWS_SECRET_ACCESS_KEY=你的Secret Access Key set AWS_DEFAULT_REGION=us-east-2
方案四:使用本地凭证文件
在你的用户目录下创建.aws文件夹(Windows是C:\Users\你的用户名\.aws,Linux/macOS是~/.aws),然后创建两个文件:
credentials文件,内容如下:[default] aws_access_key_id = 你的Access Key ID aws_secret_access_key = 你的Secret Access Keyconfig文件,内容如下:[default] region = us-east-2
创建完成后,boto3会自动读取这些文件的配置,原脚本无需修改。
最后再提醒下:确保你的AWS凭证拥有s3:ListAllMyBuckets权限,否则即使凭证正确,也会返回权限不足的错误哦。
内容的提问来源于stack exchange,提问作者Ganesh Shinde
相关产品推荐
相关产品推荐

