如何重命名AWS S3 Bucket
如何重命名AWS S3 Bucket
经过所有的迁移等艰难工作后,我意识到我需要使用CNAME来提供内容(例如media.abc.com)。桶名称需要以media.abc.com/S3/amazon.com开头,以确保它可以完美地工作。
我刚刚意识到S3不允许直接在控制台中重命名。
有没有什么方法可以解决这个问题?
admin 更改状态以发布 2023年5月23日
解决方案
aws s3 mb s3://[new-bucket] aws s3 sync s3://[old-bucket] s3://[new-bucket] aws s3 rb --force s3://[old-bucket]
解释
由于 S3 技术上没有文件夹,因此没有重命名桶功能,所以我们必须处理桶中的每个文件。
上面的代码将 1、创建一个新的桶,2、复制文件并 3、删除旧的桶。就这样。
如果您的桶中有很多文件,并且您担心成本问题,那么请继续阅读。在幕后发生的事情是先复制桶中的所有文件,然后再删除它们。如果您有几千个文件,则成本微不足道。否则,请查看此答案以了解这将如何影响您。
示例
在以下示例中,我们创建并填充旧桶,然后将文件与新桶进行同步。查看命令的输出以查看 AWS 的操作。
> # bucket suffix so we keep it unique > suffix="ieXiy2" # used `pwgen -1 -6` to get this > > # populate old bucket > echo "asdf" > asdf.txt > echo "yxcv" > yxcv.txt > aws s3 mb s3://old-bucket-$suffix make_bucket: old-bucket-ieXiy2 > aws s3 cp asdf.txt s3://old-bucket-$suffix/asdf.txt upload: ./asdf.txt to s3://old-bucket-ieXiy2/asdf.txt > aws s3 cp yxcv.txt s3://old-bucket-$suffix/yxcv.txt upload: ./yxcv.txt to s3://old-bucket-ieXiy2/yxcv.txt > > # "rename" to new bucket > aws s3 mb s3://new-bucket-$suffix make_bucket: new-bucket-ieXiy2 > aws s3 sync s3://old-bucket-$suffix s3://new-bucket-$suffix copy: s3://old-bucket-ieXiy2/yxcv.txt to s3://new-bucket-ieXiy2/yxcv.txt copy: s3://old-bucket-ieXiy2/asdf.txt to s3://new-bucket-ieXiy2/asdf.txt > aws s3 rb --force s3://old-bucket-$suffix delete: s3://old-bucket-ieXiy2/asdf.txt delete: s3://old-bucket-ieXiy2/yxcv.txt remove_bucket: old-bucket-ieXiy2