일반 목적 버킷 비우기
일반 목적 버킷 비우기
Amazon S3 콘솔, AWS SDK, AWS Command Line Interface(AWS CLI)로 일반 목적 버킷의 내용물을 비울 수 있어요. 버킷을 비우면 모든 객체를 삭제하지만 버킷 자체는 유지해요. 비우는 작업은 되돌릴 수 없어요. 비우기 작업이 진행되는 동안 버킷에 추가된 객체도 삭제될 수 있어요. 버킷 자체를 삭제하기 전에 버킷 안의 모든 객체(모든 객체 버전과 삭제 마커 포함)를 삭제해야 해요.
S3 버전 관리가 활성화되거나 일시 중지된 일반 목적 버킷을 비우면, 버킷 안 모든 객체의 모든 버전이 삭제돼요.
출처: 문서
본문
비우기 전에
버킷을 비울 때 완료되지 않은 멀티파트 업로드도 제거하는 것을 권장해요. 멀티파트 업로드는 최대 50TB의 매우 큰 객체를 여러 파트로 나눠 업로드해 처리량을 높이고 네트워크 문제에서 더 빠르게 복구하게 해줘요. 업로드가 완료되지 않으면 불완전한 파트가 버킷에 남아(사용 불가능한 상태) 업로드가 끝나거나 제거될 때까지 스토리지 비용이 발생해요.
모범 사례로, 특정 일수보다 오래된 객체와 불완전한 멀티파트 업로드를 만료시키는 라이프사이클 규칙을 구성하는 것을 권장해요. 불완전한 멀티파트 업로드 만료 규칙을 만들 때는 7일이 좋은 출발점이에요.
라이프사이클 만료는 비동기 프로세스라서 규칙이 적용되기까지 며칠이 걸릴 수 있어요. Amazon S3가 규칙을 처음 실행한 후에는 만료 대상인 모든 객체가 삭제 표시되고, 그 이후로는 해당 객체에 대해 비용이 부과되지 않아요.
콘솔로 버킷 비우기
AWS Management Console에 로그인하고 Amazon S3 콘솔(https://console.aws.amazon.com/s3/)을 엽니다. 왼쪽 탐색 창에서 General purpose buckets를 선택하고, 비우려는 버킷 이름 옆의 옵션을 선택한 다음 Empty를 선택해요. Empty bucket 페이지에서 텍스트 필드에 버킷 이름을 입력해 비우기를 확인하고 Empty를 선택해요. Empty bucket: Status 페이지에서 진행 상황을 모니터링할 수 있어요.
AWS CLI로 버킷 비우기
AWS CLI로는 버전 관리가 활성화되지 않은 버킷만 비울 수 있어요. 버전 관리가 비활성화되어 있다면 rm(remove) 명령에 --recursive 파라미터를 사용해 버킷을 비우거나(또는 특정 키 이름 접두사를 가진 객체 하위 집합을 제거), 아래처럼 사용할 수 있어요.
doc 접두사의 객체(예: doc/doc1, doc/doc2) 제거:
$ aws s3 rm s3://bucket-name/doc --recursive
접두사를 지정하지 않고 모든 객체 제거:
$ aws s3 rm s3://bucket-name --recursive
참고: 버전 관리가 활성화된 버킷에서는 객체를 제거할 수 없어요. 객체를 삭제하면 Amazon S3가 삭제 마커만 추가해요.
AWS SDK로 버킷 비우기
AWS SDK를 사용해 일반 목적 버킷을 비우거나 특정 키 이름 접두사를 가진 객체 하위 집합을 제거할 수 있어요. AWS SDK for Java로 버킷을 비우는 예시는 "일반 목적 버킷 삭제" 문서를 참고하세요. 이 코드는 버전 관리 활성화 여부와 관계없이 모든 객체를 삭제한 뒤 버킷도 삭제해요. 버킷만 비우려면 버킷을 삭제하는 구문을 제거하세요.
큰 버킷 비우기 (권장: 라이프사이클 규칙)
큰 일반 목적 버킷을 비우려면 S3 Lifecycle 구성 규칙을 사용하는 것을 권장해요. 라이프사이클 만료는 비동기 프로세스이므로 버킷이 비워지기까지 며칠이 걸릴 수 있어요. 규칙이 처음 실행된 후에는 만료 대상인 모든 객체가 삭제 표시되고 비용이 부과되지 않아요.
라이프사이클 구성으로 버킷을 비우려면 구성에 현재 버전, 비현재 버전, 삭제 마커, 불완전한 멀티파트 업로드를 포함해야 해요. 모든 객체 또는 특정 키 이름 접두사를 가진 객체 하위 집합을 만료시키는 규칙을 추가할 수 있어요. 예를 들어 생성 1일 후 모든 객체를 만료시키는 규칙을 설정해 한 버킷의 모든 객체를 제거할 수 있어요. Amazon S3는 시작 후 지정된 일수 내에 완료되지 않은 멀티파트 업로드를 중지하는 버킷 라이프사이클 규칙도 지원해요. 스토리지 비용을 최소화하도록 구성하는 것을 권장해요.
AWS CloudTrail이 구성된 버킷 비우기
AWS CloudTrail은 일반 목적 버킷의 객체 삭제 같은 객체 수준 데이터 이벤트를 추적해요. CloudTrail 이벤트를 기록하는 대상으로 내 버킷을 사용하면서 같은 버킷에서 객체를 삭제하고 있다면, 비우는 동안 새 객체가 생길 수도 있어요. 이를 막으려면 CloudTrail 트레일을 중지하세요.
트레일을 중지하는 또 다른 대안은 버킷 정책에 s3:PutObject를 **거부(deny)**하는 구문을 추가하는 거예요. 나중에 버킷에 새 객체를 저장하려면 이 거부 구문을 제거해야 해요.