我已经在后端(托管在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
:
copy_object