我正在努力从 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 个结果的字典 - 但这里是我从其中一个调用中看到的响应示例 - 它不是文档中的内容:
block 引用>camera pics/Digi Pics/Camera 06-08/.DS_Store 24580 Delete response for camera pics/Digi Pics/Camera 06-08/.DS_Store is {'ResponseMetadata': {'RequestId': '3B5CA1A9B0766A6B', 'HostId': 'HDWyoQg+RNrRZRC3nvqD8kR4bKDuMkTqDf7a7gGSD0lRUvucg56W76hG0+VP8BZ04oq+INsQUIY=', 'HTTPStatusCode': 204, 'HTTPHeaders': {'x-amz-id-2': 'HDWyoQg+RNrRZRC3nvqD8kR4bKDuMkTqDf7a7gGSD0lRUvucg56W76hG0+VP8BZ04oq+INsQUIY=', 'x-amz-request-id': '3B5CA1A9B0766A6B', 'date': 'Thu, 07 Feb 2019 16:00:26 GMT', 'server': 'AmazonS3'}, 'RetryAttempts': 0}}
响应的 http 响应为 204 - 所以它似乎在某种程度上是成功的 - 但当我查看 S3 存储桶时 - 该文件尚未被删除。我没有收到任何 Python 错误代码。
有什么想法吗?
最佳答案
原始代码似乎有效 - 但 AWS S3 花了一些时间来实际执行删除 - 我无法以任何其他方式解释我所看到的内容。我想要消失的文件现在已经消失了。
关于python - 使用 python 和 boto3 删除 S3 对象时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54578231/