Amazon S3 boto:如何重命名存储桶中的文件?

fel*_*lix 71 amazon-s3 boto

如何使用boto重命名存储桶中的S3密钥?

cee*_*yoz 68

您无法在Amazon S3中重命名文件.您可以使用新名称复制它们,然后删除原始文件,但没有正确的重命名功能.

  • 在评论时,它似乎不是即时的.我正在复制一个2GB的文件,这需要几分钟. (17认同)
  • 请注意,复制功能看起来像是即时的(可能是sym链接).速度这样做没有问题. (10认同)

gar*_*aat 39

以下是使用Boto 2复制S3对象的Python函数示例:

import boto

def copy_object(src_bucket_name,
                src_key_name,
                dst_bucket_name,
                dst_key_name,
                metadata=None,
                preserve_acl=True):
    """
    Copy an existing object to another location.

    src_bucket_name   Bucket containing the existing object.
    src_key_name      Name of the existing object.
    dst_bucket_name   Bucket to which the object is being copied.
    dst_key_name      The name of the new object.
    metadata          A dict containing new metadata that you want
                      to associate with this object.  If this is None
                      the metadata of the original object will be
                      copied to the new object.
    preserve_acl      If True, the ACL from the original object
                      will be copied to the new object.  If False
                      the new object will have the default ACL.
    """
    s3 = boto.connect_s3()
    bucket = s3.lookup(src_bucket_name)

    # Lookup the existing object in S3
    key = bucket.lookup(src_key_name)

    # Copy the key back on to itself, with new metadata
    return key.copy(dst_bucket_name, dst_key_name,
                    metadata=metadata, preserve_acl=preserve_acl)
Run Code Online (Sandbox Code Playgroud)