我试图使用python从S3存储桶中删除文件,但我无法删除该文件

时间:2017-08-17 10:40:42

标签: python amazon-s3 boto

>>> 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

&GT;

1 个答案:

答案 0 :(得分:0)

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

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

要检查的事项:

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

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