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

Python Boto3上传文件至S3返回False无异常的问题求助

嘿,我一眼就发现问题所在了——你对boto3的upload_file方法返回值的判断完全错了!

核心问题:错误的返回值判断逻辑

boto3的s3.meta.client.upload_file()方法有个关键特点:上传成功时它会返回None,而不是True;只有当上传失败时,它才会主动抛出异常。你的代码里用is True去判断返回值,哪怕上传完全成功,这个条件也永远不会成立,所以不管结果如何都会走进else分支,打印“上传失败”的提示——这就是为什么你没触发任何异常却看到错误信息的原因。

修正后的代码

把多余的返回值判断去掉,因为只要upload_file没有抛出异常,就代表上传成功了:

try:
    # 只要不抛异常,就代表上传成功
    s3.meta.client.upload_file(fileLocation, bucket_name, objectName)
    print("Upload log file to s3 bucket successfully")
    return True
except s3.exceptions.ClientError as e:
    print(f"Known S3 error occurred: {e}")
    return False
except Exception as e:
    print(f"Unexpected error: {e}")
    return False

如果修正后还是有问题,这些点可以排查:

  • 本地文件验证:先确认fileLocation指向的文件真的存在,且运行代码的用户有读取权限。可以加一行import os; print(os.path.exists(fileLocation))来快速验证。
  • AWS权限检查:确保你的AWS凭证拥有s3:PutObject权限,能往目标bucket写入对象。
  • 对象键格式:检查objectName有没有S3不允许的特殊字符(比如空格、非ASCII字符等),S3对象键有特定的命名规范。
  • 凭证有效性:确认代码使用的AWS配置(不管是环境变量、~/.aws/credentials文件还是IAM角色)是正确的,且有权限操作这个bucket。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 12:52:40