如何使用Boto3删除AWS S3存储桶目录下的对象?
解决S3删除目录下文件的问题
嘿,我来帮你搞定这个问题!其实你遇到的核心点是对S3的“目录”概念理解有点偏差——S3并没有真正的物理目录,那些看起来像文件夹的路径,其实都是对象键(Object Key)的一部分。
你之前的思路是对的,只需要把完整的对象键作为第二个参数传给s3.Object()就行,可能是你之前的参数写法有小问题?比如不小心加了多余的斜杠或者路径拼写错误?
给你修正后的完整代码:
import boto3 session = boto3.Session( aws_access_key_id="id", aws_secret_access_key="secret", region_name="us-east-1" ) s3 = session.resource("s3") # 第二个参数传入完整的对象键:media/private/test.txt obj = s3.Object("mybucket", "media/private/test.txt") obj.delete()
如果还是没生效,可以检查这几个细节:
- 确认对象键完全正确:S3的对象键区分大小写,同时不要加开头的斜杠(比如不要写成
/media/private/test.txt),因为S3的对象键不需要以斜杠开头。 - 确认目标对象确实存在于
mybucket桶中:可以通过AWS控制台或者调用head_object方法校验对象是否存在。 - 确认你的AWS凭证具备
s3:DeleteObject权限,有权限操作这个对象。
另外,你也可以用boto3客户端(client)的方式实现删除,写法稍有不同但效果一致:
s3_client = session.client("s3") s3_client.delete_object(Bucket="mybucket", Key="media/private/test.txt")
内容的提问来源于stack exchange,提问作者Marco Herrarte
相关产品推荐
相关产品推荐

