首页 文章

更新AWS S3对象密钥(密钥名称)

提问于
浏览
0

我需要“重命名”存储在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

我可以保持所有其他对象元数据相同,但文件名(密钥名称)必须更改 .

请指教 .

SP

2 回答

  • 0

    Amazon S3中的对象/文件是不可变的,无法追加或更改 . 为了模拟追加,您需要使用其他数据再次编写整个文件 .

    您需要复制到其他对象才能更改其名称 . 如果你在s3桶之间移动而不是在本地复制并向后移动,那将会很有效 .

    我们遇到了类似的情况,我将如何更改所有文件 . 您需要找到模式以对所有S3键进行分组并并行执行重命名 . 这是分布式系统的美妙之处 .

    我们存储了日期/小时/ 15分钟模式 . 我们能够通过cli同时重命名它们来并行执行重命名 .

    希望能帮助到你 .

  • 0

    您还可以使用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
    

相关问题