首页 > 解决方案 > 在同一个 s3 存储桶中使用 boto3 重命名密钥

问题描述

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

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

  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)

标签: pythondjangoamazon-web-servicesamazon-s3boto3

解决方案


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

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


推荐阅读