亚马逊S3 boto:你如何重命名一个文件桶?

你怎么用boto重命名一个S3中的密钥?

您不能在Amazon S3中重命名文件。 您可以使用新名称复制它们,然后删除原始文件,但没有适当的重命名function。

这里是一个Python函数的例子,它将使用Boto 2复制一个S3对象:

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) 

没有直接的方法来重新命名s3中的文件。 你需要做的是复制现有文件的新名称(只需设置目标键),并删除旧的。 谢谢

 //Copy the object AmazonS3Client s3 = new AmazonS3Client("AWSAccesKey", "AWSSecretKey"); CopyObjectRequest copyRequest = new CopyObjectRequest() .WithSourceBucket("SourceBucket") .WithSourceKey("SourceKey") .WithDestinationBucket("DestinationBucket") .WithDestinationKey("DestinationKey") .WithCannedACL(S3CannedACL.PublicRead); s3.CopyObject(copyRequest); //Delete the original DeleteObjectRequest deleteRequest = new DeleteObjectRequest() .WithBucketName("SourceBucket") .WithKey("SourceKey"); s3.DeleteObject(deleteRequest);