【问题标题】:I am trying to delete file from S3 bucket using python but I am not able to delete the file我正在尝试使用 python 从 S3 存储桶中删除文件,但我无法删除该文件
【发布时间】:2017-08-18 00:46:01
【问题描述】:
>>> import boto
>>> s3 = boto.connect_s3('<access_key>', '<secret_key>')
>>> bucket = s3.lookup('donebox-static')
>>> key = bucket.new_key('testkey')
>>> key.set_contents_from_string('This is a test')
>>> key.exists()
>>> key.delete()

删除时出现以下错误。我正在使用 Linux 机器,但我可以从 Windows 机器中删除文件。 错误是:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/boto-2.48.0-py2.7.egg/boto/s3/key.py", line 558, in delete
    headers=headers)
  File "/usr/lib/python2.7/site-packages/boto-2.48.0-py2.7.egg/boto/s3/bucket.py", line 762, in delete_key
    query_args_l=None)
  File "/usr/lib/python2.7/site-packages/boto-2.48.0-py2.7.egg/boto/s3/bucket.py", line 781, in _delete_key_internal
    response.reason, body)
boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>6CF28CE4F8227FAE</RequestId><HostId>mrS5DIDHvXgweWSlwmQYVE0H05jsnepXd+3PiMqHcjXhWPkfo8ibeWA9rBcm7fKkdAO2f/fUTjo=</HostId></Error

>

【问题讨论】:

    标签: python amazon-s3 boto


    【解决方案1】:

    您的代码非常好。 (我在自己的桶上测试过,效果很好。)

    错误消息是Access Denied。这意味着不允许与您的 AWS 凭证关联的实体(很可能是您的 IAM 用户)删除该对象。或者,很可能是该存储桶中的任何对象。

    检查事项:

    • 查看您的 IAM 用户的政策(或与您使用的凭证相关联的任何实体)
    • 查看donebox-static 存储桶上的存储桶政策

    检查这两项政策以确定您不允许删除对象的原因。请记住 - 默认情况下,您无权执行任何操作,因此您正在寻找确实授予您DeleteObject 权限的策略。

    【讨论】:

    • 当我尝试在不同地区使用不同的存储桶时,相同的代码也适用于我,不知道为什么会发生这种情况。
    猜你喜欢
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 2017-11-16
    • 2017-02-01
    • 2015-06-23
    • 1970-01-01
    相关资源
    最近更新 更多