为什么boto3在将一个文件从一个S3存储桶复制到另一个存储桶时会静默失败



我正试图在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_new+key_new)print("done")行都按预期执行,程序成功完成。但是,遗憾的是,该文件没有出现在新位置。看起来copy本身正在无声地失败。另外,response返回None。是什么导致了这些?

我可以使用成功列出所有存储桶

for bucket in s3.buckets.all():
print(bucket.name)

这表明我已经成功地通过了AWS帐户的身份验证。

我在这里错过了什么?s3.meta.client.copy是正确的方法吗?还是应该使用copy_object?这些之间有什么区别?

谢谢!

在这种情况下,使用前导/设置密钥会导致boto3静默失败。卸下前导/

相关内容

  • 没有找到相关文章

最新更新