python - 使用 python 和 boto3 删除 S3 对象时出现问题

标签 python amazon-s3 boto3

我正在努力从 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 个结果的字典 - 但这里是我从其中一个调用中看到的响应示例 - 它不是文档中的内容:

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/

相关文章:

python - Ansible - 对输出应用过滤器,然后注册为变量

python - PySNMP 错误 : pysnmp. smi.error.SmiError

django - “put_object() 只接受关键字参数。”

python - 使用 boto3 客户端提交时,spark-submit EMR 步骤失败

amazon-ec2 - 使用 boto3 从 AWS Lambda 启动 EC2 实例时超时

python - 确认应用程序是否使用 nginx 来提供静态文件

python - 值错误 : too many values to unpack: python list manipulation

python - 如何将S3存储桶挂载为本地文件系统?

javascript - 桌面/iOS SAFARI 中的 MP3 文件持续时间无限

java - 如何创建仅在 6 天后过期的 s3 下载链接