发生异常:“s3.ServiceResource”对象没有属性“head_object”

新手上路,请多包涵

我正在检查 S3 存储桶中是否存在对象。以下是我正在使用的代码片段。 obj 是文件名。

     s3 = boto3.resource('s3')
    try:
        s3.head_object(Bucket=bucket_name, Key=obj)
    except ClientError as e:
        return False

但它让我异常:

An exception occurred in python_code : 's3.ServiceResource' object has no attribute 'head_object'

我用于此 API 的参考 - https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.head_object

谁能帮我解决这个问题?

原文由 gkr2d2 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 530
2 个回答

尝试:

s3 = boto3.client('s3')

代替

boto3.resource('s3')

原文由 Ntwobike 发布,翻译遵循 CC BY-SA 4.0 许可协议

我在这里捆绑了详细的回复:

 1. boto3.client("s3") will allow you to perform Low level API calls
2. boto3.resource('s3') will allow you to perform High level API calls

阅读此处: 资源、客户端和会话之间 boto3 的区别?

您的要求/操作需要对存储桶而不是存储桶中的对象/资源执行操作。所以在这里,这是有道理的,这就是 AWS 人员在上述客户端方法中区分 API 调用包装器的方式

这就是为什么这里 boto3.client("s3") 出现在图片中的原因。

原文由 Varun Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题