【问题标题】:Delete file by name from S3 using boto使用 boto 从 S3 按名称删除文件
【发布时间】:2016-12-25 00:58:51
【问题描述】:

我正在尝试从 django 项目中按名称删除文件。我有一个可以正确上传文件的功能,但我无法弄清楚该功能。我尝试使用带有 get_key 和其他功能的示例,但还没有能够获取正确的密钥。我想我在滥用 get_key 或者它已经贬值了。我要删除的文件也是 .png 文件,文本是指我的文件名和位置。下面是一段代码sn -p

from boto.s3.connection import S3Connection, Bucket, Key
from boto.s3.key import Key

text = '//folder' + request.split(':')[1] + '_toS3.png'
conn = S3Connection('###', '####')
S3_BUCKET_NAME = 'Bucket_name'
b = Bucket(conn, S3_BUCKET_NAME)
k = Key(b)
k.key = k.get_key(text)
b.delete_key(k)

【问题讨论】:

    标签: django amazon-s3 amazon-ec2 boto


    【解决方案1】:

    您必须将k.key 更改为k.name

    b = Bucket(conn, S3_BUCKET_NAME)
    k = Key(b)
    k.name = k.get_key(text)
    b.delete_key(k)
    

    【讨论】:

    • 当我运行这个时,我仍然得到'Key'对象没有属性'get_key'
    【解决方案2】:

    使用存储桶的delete_key 方法。您提供key_name 作为参数。

    bucket = Bucket(conn, S3_BUCKET_NAME)
    bucket.delete_key('path/to/key_name.png')
    

    【讨论】:

    • 不知道为什么,因为我觉得这应该可以,但这对我不起作用,文件仍然保留在 S3 中,我知道我的路径是正确的。
    • 试试bucket.get_key('path/to/key_name.png')。如果失败,那么您使用了错误的密钥路径。如果它有效,那么您的凭据可能没有删除密钥的权限。
    猜你喜欢
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 2015-04-21
    • 2016-09-23
    • 2018-04-01
    • 1970-01-01
    相关资源
    最近更新 更多