【发布时间】:2019-07-01 20:36:26
【问题描述】:
我正在努力从 AWS S3 存储桶中删除不需要的文件,然后再将其转换为长期 Glacier 存储。我正在使用Python 和boto3 运行以下脚本:
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket(<mybucketname>)
for obj in bucket.objects.all():
if '.DS_S' in obj.key or '.ini' in obj.key:
item_obj = s3.Object(obj.bucket_name, obj.key)
print(obj.key, item_obj.content_length)
del_resp = item_obj.delete()
print("Delete response for", obj.key, "is\n", del_resp)
根据documentation here - delete 方法应该返回 3 个结果的字典 - 但这是我从其中一个调用中看到的响应示例 - 这不是文档:
相机图片/Digi Pics/相机 06-08/.DS_Store 24580 删除相机图片/Digi Pics/Camera 06-08/.DS_Store 的响应是 {'ResponseMetadata': {'RequestId': '3B5CA1A9B0766A6B', 'HostId': 'HDWyoQg+RNrRZRC3nvqD8kR4bKDuMkTqDf7a7gGSD0lRUvucg56W76hG0+VP8BZ04oq+INsQUIY=', 'HTTPStatusCode': 204, '-id-HTTP2Headers':-z: 'HDWyoQg+RNrRZRC3nvqD8kR4bKDuMkTqDf7a7gGSD0lRUvucg56W76hG0+VP8BZ04oq+INsQUIY=','x-amz-request-id':'3B5CA1A9B0766A6B','日期':'星期四,2019年2月7日亚马逊格林威治标准时间16:00','服务器:'2 }, '重试次数': 0}}
响应的 http 响应为 204 - 因此它似乎以某种方式成功 - 但是当我查看 S3 存储桶时 - 该文件尚未被删除。我没有收到任何 Python 错误代码。
有什么想法吗?
【问题讨论】: