在 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存储桶中

使用 python boto3 将文件从一个 S3 存储桶传输到另一个 S3 存储桶

使用boto3批量上传图片到S3

如何使用 boto3 将 S3 对象保存到文件中

Boto3 从 S3 存储桶下载所有文件