在 s3 python boto3 中替换文件
Posted
技术标签:
【中文标题】在 s3 python boto3 中替换文件【英文标题】:Replace file in s3 python boto3 【发布时间】:2020-12-12 19:02:18 【问题描述】:如果我们必须使用 python (lambda) 将指定 s3 文件夹路径中的 existing file
完全替换为另一个文件 (with different filename)
在任何时刻,s3 中的特定文件夹路径都只有一个文件,在运行 python 代码时将完全替换为另一个文件
上面可以使用哪个 boto 函数。谢谢!
【问题讨论】:
“用不同的文件名替换文件”是什么意思?如果它具有不同的文件名,那么它是一个不同的文件,那么“替换”是什么意思?您想在上传新文件时简单地删除现有文件吗? 在这种情况下,您将使用delete_object()
和upload_file()
。
你描述的是不更新文件。如果文件被上传同名,则文件被“更新”。您所描述的是上传一个 完全不同的 文件(因为它具有不同的名称),因此没有任何内容被“更新”。这就像要求将福特汽车“更新”为丰田汽车,而交易实际上涉及出售一辆汽车和购买另一辆汽车。
【参考方案1】:
为此,您只需调用 upload_object 函数,该函数实际上是 put_object 函数的包装器。
函数调用如下所示。
import boto3
s3 = boto3.resource('s3')
s3.meta.client.upload_file('/tmp/hello.txt', 'mybucket', 'replace/this/file.txt')
只要您没有启用对象版本控制,它将替换之前为该键存在的对象。
.
【讨论】:
感谢您的回答@Chris Williams,对象版本控制未启用,但是当要上传的新文件名不同时,简单的 upload_file 似乎无法替换以前的对象。 你100%的密钥是一样的吗?它是否适用于新对象?以上是关于在 s3 python boto3 中替换文件的主要内容,如果未能解决你的问题,请参考以下文章
我们可以使用 boto3 Python 在 aws s3 存储桶之间递归复制文件和文件夹吗?
使用Python boto3上传Windows EC2实例中的文件至S3存储桶中