如何重命名AWS S3 Bucket名称

经过所有艰难的移植工作等,只要意识到,如果需要使用CNAME服务的内容(如media.abc.com)。 存储区名称需要从media.abc.com/S3/amazon.com开始,以确保其工作完美。

只要意识到S3不允许直接从控制台重命名。

有没有办法解决这个问题?

我认为唯一的方法是创build一个正确名称的新桶,然后将所有对象从旧桶中复制到新桶中。 你可以使用Aws CLI来完成。

aws s3 mb s3://[new-bucket] aws s3 sync s3://[old-bucket] s3://[new-bucket] aws s3 rb --force s3://[old-bucket] 

说明

S3没有重命名桶的function,因为S3在技术上没有文件夹,所以我们必须处理桶中的每个文件。

上面的代码将创build一个新的桶,2.复制文件,并删除旧的桶。 而已。

如果你的文件夹中有很多文件,并且担心费用,请继续阅读。 在幕后发生的是,存储桶中的所有文件首先被复制,然后被删除。 如果你有几千个文件,它应该花费不大。 否则检查这个答案 ,看看这将如何影响你。

在下面的例子中,我们创build并填充旧的存储桶,然后将这些文件同步到新的存储桶中。 检查命令的输出以查看AWS的function。

 > # 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