在目标存储桶具有目录的s3存储桶之间复制文件

2024-09-30 10:40:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个s3桶。我想将文件从Bucketfrom复制到Bucketto。在Bucketto中,我有一个文件夹/copy_here。当我尝试使用Boto直接复制存储桶之间的内容时,它起作用了。但是,当我想将其复制到目标中的目录时,我得到了ParameterValidationError。以下是我试图执行的代码:

def copyToBucket(fromBucket, toBucket, fileName):
    copySource = {
        'Bucket': readBucketName,
        'Key': fileName
    }
    uploadBucket = s3.Bucket(uploadBucketName)
    uploadBucket.copy(copySource, fileName) 

我研究了s3元客户端,它也提供了相同的功能。我不确定这个操作是否可以在一个步骤中完成。如果有,那就太好了。如果不是,我是否应该首先复制到目标bucket并将文件移动到copy_here文件夹?目前,我的uploadBucketName已设置为to/copy_here


Tags: 文件文件夹内容目标heres3bucketfilename
1条回答
网友
1楼 · 发布于 2024-09-30 10:40:34

AmazonS3中不存在文件夹和目录。相反,对象的文件名(Key)由完整路径加上文件名组成(好的,S3管理控制台使文件夹看起来似乎存在,但实际上并不存在。)

因此,这将根据您的需要复制一个文件:

import boto3

copySource = {
    'Bucket': 'source-bucket-name',
    'Key': 'foo.txt'
}
uploadBucket = s3.Bucket('destination-bucket-name')
uploadBucket.copy(copySource, 'copy_here/foo.txt') 

请注意,目标Key由路径+文件名组成。bucket名称必须仅由bucket名称本身组成

相关问题 更多 >

    热门问题