在同一s3存储桶中使用boto3重命名密钥

时间:2018-10-01 15:38:48

标签: python django amazon-web-services amazon-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)

1 个答案:

答案 0 :(得分:0)

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

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