我试图在Python3中使用boto3将文件从一个S3桶复制到另一个。我看过以下这些,
我的代码如下。
import boto3
bucket_old = "bold" # old bucket name
key_old = "/k/old" # old file key
bucket_new = "bnew" # new bucket name
key_new = "/k/new" # new file key
s3 = boto3.resource('s3')
copy_source = {
'Bucket': bucket_old,
'Key': key_old
}
copy_source = {
'Bucket': bucket_old,
'Key': key_old
}
print(copy_source)
print(bucket_new+key_new)
response = s3.meta.client.copy(CopySource=copy_source, Bucket=bucket_new, Key=key_new)
print(response)
print("done")
据我所知,这正是医生们的建议。我在copy
命令中尝试了使用和不使用arg名称。
print(bucket\u new key\u new)
和print(“done”)
行按预期执行,程序成功完成。但是,不幸的是,该文件没有出现在新位置。看起来,复制
本身正在悄无声息地失败。另外,response
返回None
。是什么导致了这些?
我可以成功列出所有具有
for bucket in s3.buckets.all():
print(bucket.name)
这表明我已成功通过AWS帐户的身份验证。
我错过了什么?s3.meta.client.copy
是正确的方法,还是应该使用copy_object
?这些有什么区别?
谢谢!
在这种情况下,使用前导的/
设置键会导致boto3无声失败。删除前导的/
。
我正在尝试使用Node将文件从AWS S3存储桶复制到另一个存储桶。问题是,如果文件名没有空格,例如:“abc.csv”,它就可以正常工作。但如果我要复制到的文件名中有空格,例如:“abc xyz.csv”。它抛出了下面的错误。 “指定的密钥不存在。”“NoSuchKey:指定的密钥不存在。应请求。extractError(d:\Projects\Other\testproject\s3filet
问题:我想从谷歌云存储桶中的文件夹(例如桶1中的文件夹1)复制文件到另一个桶(例如桶2)。我找不到任何谷歌云存储的气流操作员来复制文件。
我使用以下代码将文件从一个桶复制到另一个桶 但是我总是得到“com . Amazon AWS . services . S3 . model . Amazon S3 exception:Access Denied(服务:亚马逊S3;状态代码:403;错误代码:拒绝访问;请求ID: B6466D562B6988E2)“`作为回应,原因可能是什么
我有2个AWS帐户。我试图复制文件从帐户1到帐户2在桶2在美国西部2地区。我有所有必要的IAM政策,相同的凭据适用于两个帐户。我使用python boto3库。 如图所示,复制函数在指向目标帐户2/us-west-2的客户端对象上执行。它是如何获取帐户1/us-east1中的源文件的?我应该提供作为复制函数的输入吗?
有没有一种方法可以将文件列表从一个S3存储桶复制到另一个存储桶?两个S3存储桶都在同一个AWS帐户中。我可以使用aws cli命令一次复制一个文件: 然而,我有1000份文件要复制。我不想复制源存储桶中的所有文件,因此无法使用sync命令。有没有一种方法可以用需要复制的文件名列表来调用一个文件,从而自动化这个过程?