图像错误,未加载 S3 图像检索

Image error, not loading for S3 image retrieval

我在我的后端(托管在 Elastic Beanstalk 上)编写了代码以从 S3 存储桶中检索文件并以不同的名称将其保存回存储桶。我正在使用 boto3 并创建了一个名为 's3'.

的 s3 客户端

bucketname 是桶名,keyname 是键名。我也在使用 tempfile 模块

tmp = tempfile.NamedTemporaryFile()
with open(tmp.name, 'wb') as f:
    s3.download_fileobj(bucketname, keyname, f)    
s3.upload_file(tmp, bucketname, 'fake.jpg')

我想知道我的理解是否错误(仍在调试为什么会出现错误)- 我创建了一个 tempfile 并打开并在其中保存了带有 keyname 的对象的内容和bucketname。然后我将该临时文件以不同的名称上传到存储桶中。我的推理正确吗?

upload_file() 命令在第一个参数中需要文件名(作为 string), 而不是 file 对象。

相反,您应该使用 upload_fileobj()

不过,我会推荐一些不同的东西...

如果您只想复制一个对象,您可以使用copy_object:

response = client.copy_object(
    Bucket='destinationbucket',
    CopySource='/sourcebucket/HappyFace.jpg',
    Key='HappyFaceCopy.jpg',
)