You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python从AWS S3下载文件时遭遇“Unable to locate credentials”错误求助

解决S3下载时“Unable to locate credentials”的问题

嘿,我来帮你搞定这个头疼的凭证找不到问题!我之前也碰到过类似的坑,给你梳理几个排查方向和解决办法:

一、先检查最基础的凭证正确性

  • 先确认你的ACCESS_KEY和SECRET_KEY有没有拼写错误,比如大小写不对、末尾多了空格,或者复制的时候漏了几位——这种低级错误最容易被忽略!
  • 可以直接去AWS控制台的IAM用户页面,重新复制一遍正确的密钥,替换掉代码里的内容试试。

二、检查代码里的凭证传递逻辑

你的代码写法本身是没问题的,但有时候可能因为其他因素导致凭证没被正确读取,给你一个更严谨的写法试试:

from boto3.session import Session

# 确保这里的密钥是完全正确的
ACCESS_KEY = 'ABC'
SECRET_KEY = 'XYZ'

# 初始化session
session = Session(
    aws_access_key_id=ACCESS_KEY,
    aws_secret_access_key=SECRET_KEY
)
s3 = session.resource('s3')

# 指定你的桶名
your_bucket = s3.Bucket('bucket_name')

# 遍历文件并下载(补充你之前没写完的下载逻辑)
for s3_file in your_bucket.objects.all():
    print(f"正在处理文件: {s3_file.key}")
    # 下载到本地,第一个参数是S3上的文件key,第二个是本地保存的路径/文件名
    your_bucket.download_file(s3_file.key, f"./downloads/{s3_file.key}")

三、排查系统环境的干扰

  • 如果你的电脑上设置了AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY这两个环境变量,boto3会优先读取环境变量里的内容,要是环境变量里的密钥不对,就会报错。可以暂时清空这两个环境变量再试。
  • 另外,如果你本地有~/.aws/credentials(Linux/Mac)或者C:\Users\<你的用户名>\.aws\credentials(Windows)这个文件,boto3也会优先读取这里的凭证。如果这个文件里的配置有问题,也会导致找不到凭证,可以先把这个文件重命名,再运行代码试试。

四、额外提醒

千万不要把密钥硬编码到代码里!以后可以用AWS凭证文件、环境变量或者IAM角色(如果是在EC2/ECS等AWS服务上运行)来管理密钥,这样更安全。

内容的提问来源于stack exchange,提问作者Taukheer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:42:40