当前位置: 首页 > 知识库问答 >
问题:

为什么在将一个文件从一个S3存储桶复制到另一个存储桶时,boto3会自动失败?

宋高谊
2023-03-14

我试图在Python3中使用boto3将文件从一个S3桶复制到另一个。我看过以下这些,

  • 使用boto3在两个AWS S3存储桶之间移动文件
  • boto3文档
  • aws s3 boto3复制()
  • 如何使用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?这些有什么区别?

谢谢!

共有1个答案

楚洋
2023-03-14

在这种情况下,使用前导的/设置键会导致boto3无声失败。删除前导的/

 类似资料: