经过所有迁移等繁重的工作后,我才意识到需要使用CNAME(例如media.abc.com)来提供内容。桶名称需要以media.abc.com/S3/amazon.com开头,以确保它能够完美地工作。
我刚刚意识到S3不允许直接从控制台重命名。
有没有什么方法可以绕过这个问题?
经过所有迁移等繁重的工作后,我才意识到需要使用CNAME(例如media.abc.com)来提供内容。桶名称需要以media.abc.com/S3/amazon.com开头,以确保它能够完美地工作。
我刚刚意识到S3不允许直接从控制台重命名。
有没有什么方法可以绕过这个问题?
aws s3 mb s3://[new-bucket]
aws s3 sync s3://[old-bucket] s3://[new-bucket]
aws s3 rb --force s3://[old-bucket]
S3没有重命名Bucket的功能,因为在S3中没有文件夹的概念,所以我们必须处理Bucket中的每个文件。
以上代码将会执行以下三个步骤:1.创建新Bucket,2.复制文件,3.删除旧的Bucket。就是这样。
如果您的Bucket中有大量文件,并且您担心成本问题,请继续阅读。在幕后发生的事情是,所有Bucket中的文件都会首先被复制,然后再被删除。如果您有几千个文件,则成本应该是微不足道的。否则,请查看此答案以了解其对您的影响。
在下面的示例中,我们创建并填充旧的Bucket,然后将文件同步到新的Bucket。检查命令的输出以了解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
我认为唯一的方法是创建一个新的带有正确名称的存储桶,然后将旧存储桶中的所有对象复制到新存储桶中。您可以使用Aws CLI完成此操作。
可能是 AWS CLI 工具包的较新版本提供了 mv
选项。
$ aws --version
aws-cli/1.15.30 Python/3.6.5 Darwin/17.6.0 botocore/1.10.30
我正在使用以下命令重命名存储桶:
aws s3 mb s3://new-bucket
aws s3 mv s3://old-bucket s3://new-bucket --recursive
aws s3 rb s3://old-bucket
aws s3api delete-bucket --bucket <old-bucket> --region <region id>
- Mabynaws s3 mv
实际上会复制并删除,因此财务成本应该是相同的(我认为)。 - Flimmmv
命令存在以下警告:该操作会在指定位置创建一个带有更新设置和新的最后修改日期的对象副本,并删除原始对象
。丢失最后修改日期可能是相关的。 - soniaseguz
--acl bucket-owner-full-control
复制文件(就像这个答案中所示)? - Евгений Масленковaws --region ap-southeast-2 s3 mb s3://new-bucket
- cobberboy