我需要重命名存储在AWS S3存储桶中的大量文件。每个文件/对象将被单独重命名(基于特定标准 - 没有共同的“前缀/后缀”)。我想出了'current_filename'和'new_filename'的列表,它可以作为.bat文件/队列执行CLI。
是否可以通过CLI或以编程方式仅更新AWS S3存储桶中的对象键(键名),而无需复制/移动文件,如下所示:
aws s3 cp s3://mybucket/folder/myfilename.jpg s3://mybucket/folder/my_NEW_filename.jpg
我可以保持所有其他对象元数据不变,但文件名(密钥名称)必须更改。
答案 0 :(得分:1)
Amazon S3中的对象/文件是不可变的,无法追加到或 改变。为了模拟追加,你需要写 整个文件再次附加其他数据。
您需要复制到其他对象才能更改其名称。 如果你在s3桶之间移动而不是在本地复制并向后移动,那将会很有效。
我们遇到了类似的情况,我将如何更改所有文件。您需要找到模式以对所有S3键进行分组并并行执行重命名。这是分布式系统的美妙之处。
我们存储了日期/小时/ 15分钟模式。我们能够通过cli同时重命名它们来并行执行重命名。
希望它有所帮助。
答案 1 :(得分:1)
您还可以使用AWS S3 Move命令将文件移动到新名称,而不是复制和删除文件。 AWS S3 Move
# AWS Example
aws s3 mv s3://mybucket/test.txt s3://mybucket/test2.txt
# Copy file from local to S3
aws s3 cp robots.txt s3://ascisolutions.com
# Rename/move file
aws s3 mv s3://ascisolutions.com/robots.txt s3://ascisolutions.com/robots.txt.bak
# Move file to a directory in S3
aws s3 mv s3://ascisolutions.com/robots.txt.bak s3://ascisolutions.com/test/robots.txt.bak
# Rename/move file
aws s3 mv s3://ascisolutions.com/test/robots.txt.bak s3://ascisolutions.com/test/robots.txt
# Move file back to root directory of S3 bucket
aws s3 mv s3://ascisolutions.com/test/robots.txt s3://ascisolutions.com/robots.txt