[amazon-web-services] AWS S3 버킷 이름을 바꾸는 방법

마이그레이션 등의 모든 힘든 작업 후에 CNAME을 사용하여 콘텐츠를 제공해야하는 경우 (예 : media.abc.com) 알아 두십시오. 버킷 이름은 media.abc.com/S3/amazon.com으로 시작해야 완벽하게 작동합니다.

S3는 콘솔에서 직접 이름을 바꿀 수 없습니다.

이 문제를 해결할 방법이 있습니까?



답변

유일한 방법은 올바른 이름으로 새 버킷을 만든 다음 이전 버킷에서 새 버킷으로 모든 객체를 복사하는 것입니다. 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에는 기술적으로 폴더가 없으므로 버킷 내의 모든 파일을 처리해야하므로 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


답변

아마도 이후 버전의 AWS CLI 툴킷이 mv옵션을 제공했을 것입니다.

$ aws --version
aws-cli/1.15.30 Python/3.6.5 Darwin/17.6.0 botocore/1.10.30

다음 명령을 사용하여 버킷의 이름을 바꾸고 있습니다.

aws s3 mv s3://old-bucket s3://new-bucket --recursive


답변