2017-01-06 4 views
53

마이그레이션 등의 어려운 작업을 모두 마친 후에 CNAME (예 : media.abc.com)을 사용하여 콘텐츠를 제공해야하는 경우이를 깨닫게됩니다. 버킷 이름은 media.abc.com/S3/amazon.com에서 시작하여 완벽하게 작동해야합니다.AWS S3 버킷 이름의 이름 바꾸기 방법

S3가 콘솔에서 직접 이름 바꾸기를 허용하지 않는다는 것을 알고 있습니다.

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

답변

29

올바른 이름으로 새 버킷을 만든 다음 모든 버킷을 이전 버킷에서 새 버킷으로 복사하는 것이 유일한 방법이라고 생각합니다. Aws CLI를 사용하여이를 수행 할 수 있습니다.

+1

위의 솔루션 @navjot에 대한 비용은 있습니까? – pavitran

+0

@pavitran 아니, 아직가는 길 – Tashows

+3

@Tashows pavitran은 chaRges에 대해 질문했지만 chaNges는 아닙니다. 내가 아는 한 실제로 양동이 항목을 복사하는 비용이 있습니다, 나는 각 항목에 대해 1 GET 및 1 PUT 운영 비용을 믿습니다. – guival

101

솔루션

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. 이전 버킷을 삭제합니다. 그게 전부 야.

양동이에 파일이 많고 비용이 걱정되면 읽으십시오. 뒤에서 버킷 내의 모든 파일을 먼저 복사 한 다음 삭제합니다. 수천 개의 파일이있는 경우에는 약간의 비용이들 것입니다. 그렇지 않은 경우 this answer을 확인하여 영향을 확인하십시오.

우리가 만들고 새로운 하나에 파일을 동기화 한 후 기존의 물통을 채우고 다음 예제에서

. 명령의 출력을 확인하여 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 
+4

이것은 받아 들여진 응답이어야합니다 –

+6

이 답변은 수락 된 답변과 동일합니다. 그러나이 게시는 수행 방법에 대한 예제를 통해 매우 유용한 단계를 제공합니다. (예제는 단축해야하지만 예제 버킷 생성 및 접미사 변수 사용은 필요 없습니다.)이 대답의 설명 부분은 만족스럽지 않습니다. S3에서 폴더가 없다는 것은이 어색한 절차가 필요한 이유입니다. 원래 질문에는 폴더가 언급되지 않았으므로 S3 버킷의 이름을 바꾸지 못하는 이유를 이해하지 못합니다. –

+1

이 방법을 시도해보십시오 ... 작동하는 것처럼 보였습니다 ...하지만 어떤 이상한 이유로 항목 (이미지)을 볼 수 없습니다. s3 대시 보드의 항목을 통해 브라우저를 통해 탐색 할 수 있지만 url을 통해 볼 수 없거나 다운로드 할 수 없습니다. 어떤 아이디어? 권한은 동일하게 보입니다. 특별한주의가 필요합니까? – bmiskie