【问题标题】:Rename key using boto3 within the same s3 bucket在同一个 s3 存储桶中使用 boto3 重命名密钥
【发布时间】:2018-10-01 23:53:59
【问题描述】:

我正在尝试重新设置上传文件的密钥,以便它们从“临时上传”“文件夹”移动到“新上传”“文件夹”。

这是我迄今为止的尝试 --- 我没有收到任何错误,但文件仍在“临时上传”中

  bucket = s3.Bucket(s3_bucket)
    temp_prefix = 'temp-uploads/' + packageInstance.prefix + '/'
    new_prefix = 'new-uploads/' + packageInstance.prefix + '/'
    for obj in bucket.objects.filter(Prefix=temp_prefix):
        old_source = {'Bucket': bucket,
                      'Key': obj.key}
        new_key = obj.key.replace(temp_prefix, new_prefix)
        new_obj = bucket.Object(new_key)
        new_obj.copy(old_source)

【问题讨论】:

  • 据我所知,您无法在 S3 中重命名对象。您需要将其复制到新的并删除旧的。看起来这就是您在上面尝试做的事情。这可能会有所帮助:stackoverflow.com/questions/32501995/…

标签: python django amazon-web-services amazon-s3 boto3


【解决方案1】:

这似乎将实际文件从temp-uploads/ 复制到new-uploads/,因此旧文件仍然存在于旧位置。

然后,Django 上传的文件作为参考存储在FileField 中。这意味着 Django 从之前上传的文件中生成一个 URL。如果文件被移动到 Django 之外的存储桶上,它无法知道它发生了。

【讨论】:

    猜你喜欢
    • 2016-02-23
    • 1970-01-01
    • 2018-06-02
    • 2021-07-26
    • 2019-03-04
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 2022-06-12
    相关资源
    最近更新 更多