

# 범용 버킷 비우기
<a name="empty-bucket"></a>

Amazon S3 콘솔, AWS SDK 또는 AWS Command Line Interface(AWS CLI)를 사용하여 범용 버킷의 콘텐츠를 비울 수 있습니다. 범용 버킷을 비우면 모든 객체가 삭제되지만 버킷은 유지됩니다. 버킷을 비운 후에는 실행 취소할 수 없습니다. 버킷 비우기 작업이 진행되는 동안 버킷에 추가된 객체도 삭제될 수 있습니다. 버킷 자체를 삭제하려면 먼저 버킷의 모든 객체(모든 객체 버전 및 삭제 마커 포함)를 삭제해야 합니다.

S3 버전 관리를 활성화한 상태로 또는 일시 중지된 상태로 범용 버킷을 비우면 버킷에 있는 모든 객체의 모든 버전이 삭제됩니다. 자세한 내용은 [버전 관리가 사용 설정된 버킷의 객체 작업](manage-objects-versioned-bucket.md) 섹션을 참조하세요.

버킷을 비우는 동안 미완료 멀티파트 업로드도 모두 제거하는 것이 좋습니다. 멀티파트 업로드를 사용하면 매우 큰 객체(최대 50TB)를 하나의 파트 집합으로 업로드하여 처리량을 개선하고 네트워크 문제를 신속하게 복구할 수 있습니다. 멀티파트 업로드 프로세스가 완료되지 않는 경우 미완료 파트가 (사용할 수 없는 상태로) 버킷에 남아 있게 됩니다. 이렇게 미완료 파트가 발생할 경우 업로드 프로세스가 완료되거나 미완료 파트가 제거될 때까지 스토리지 비용이 발생합니다. 자세한 내용은 [Amazon S3에서 멀티파트 업로드를 사용한 객체 업로드 및 복사](mpuoverview.md) 섹션을 참조하세요.

특정 일수보다 오래된 객체 및 미완료 멀티파트 업로드를 만료시키도록 수명 주기 규칙을 구성하는 것이 가장 좋습니다. 미완료 멀티파트 업로드를 만료시키도록 수명 주기 규칙을 만들 때는 7일부터 시작하는 것이 좋습니다. 자세한 내용은 [버킷에서 S3 수명 주기 구성 설정](how-to-set-lifecycle-configuration-intro.md) 섹션을 참조하세요.

 수명 주기 만료는 비동기 프로세스이므로 버킷이 비워지기 전에 규칙이 실행되는 데 며칠이 걸릴 수 있습니다. Amazon S3가 처음 규칙을 실행하면 만료 대상인 모든 객체가 삭제 대상으로 표시됩니다. 삭제 대상으로 표시된 객체에 대해서는 더 이상 요금이 청구되지 않습니다. 자세한 내용은 [수명 주기 구성 규칙을 사용하여 Amazon S3 버킷을 비우려면 어떻게 해야 합니까?](https://repost.aws/knowledge-center/s3-empty-bucket-lifecycle-rule)를 참조하세요.

## S3 콘솔 사용
<a name="empty-bucket-console"></a>

Amazon S3 콘솔을 사용하여 범용 버킷을 비울 수 있습니다. 버킷을 비우면 버킷은 삭제되지 않고 버킷의 모든 객체가 삭제됩니다.

**S3 버킷을 비우려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 Amazon S3 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **범용 버킷**을 선택합니다.

1. 버킷 목록에서 비우려는 버킷의 이름 옆에 있는 옵션을 선택한 다음 **비우기**를 선택합니다.

1. **버킷 비우기** 페이지에서 텍스트 필드에 버킷 이름을 입력하여 버킷을 비울 것인지 확인한 다음 **Empty(비우기)**를 선택합니다.

1. [**버킷 비우기: 상태(Empty bucket: Status)**] 페이지에서 버킷 비우기 프로세스의 진행 상황을 모니터링합니다.

## AWS CLI 사용
<a name="empty-bucket-awscli"></a>

버킷 버전 관리가 사용되지 않은 경우에만 AWS CLI를 사용하여 범용 버킷을 비울 수 있습니다. 버전 관리가 사용되지 않은 경우 `rm`(제거) AWS CLI 명령을 `--recursive` 파라미터와 함께 사용하여 버킷을 비우거나 특정 키 이름 접두사를 가진 객체의 하위 집합을 제거할 수 있습니다.

다음 `rm` 명령은 키 이름 접두사 `doc`가 있는 객체(예: `doc/doc1` 및 `doc/doc2`)를 제거합니다.

```
$ aws s3 rm s3://bucket-name/doc --recursive
```

다음 명령을 사용하여 접두사를 지정하지 않고 모든 객체를 제거합니다.

```
$ aws s3 rm s3://bucket-name --recursive
```

자세한 내용은 *AWS Command Line Interface 사용 설명서*의 [AWS CLI와 함께 상위 수준 S3 명령 사용](https://docs.aws.amazon.com/cli/latest/userguide/using-s3-commands.html)을 참조하세요.

**참고**  
버전 관리가 활성화된 버킷에서는 객체를 제거할 수 없습니다. 이 명령을 사용하면 객체를 삭제할 때 Amazon S3가 삭제 마커를 추가합니다. S3 버킷 버전 관리에 대한 자세한 내용은 [S3 버전 관리로 여러 버전의 객체 유지](Versioning.md) 섹션을 참조하세요.

## AWS SDK 사용
<a name="empty-bucket-awssdks"></a>

AWS SDK를 사용하여 범용 버킷을 비우거나 특정 키 이름 접두사를 가진 객체의 하위 집합을 제거할 수 있습니다.

AWS SDK for Java 제품을 사용하여 버킷을 비우는 방법의 예는 [범용 버킷 삭제](delete-bucket.md) 단원을 참조하십시오. 버킷의 버전 관리가 활성화되었는지 여부와 관계 없이 코드가 모든 객체를 삭제한 후 버킷을 삭제합니다. 버킷을 비우기만 하려면 버킷을 삭제하는 문을 제거해야 합니다.

그 밖의 AWS SDK 사용에 대한 자세한 내용은 [Amazon Web Services용 도구](https://aws.amazon.com/tools/)를 참조하세요.

## 수명 주기 구성 사용
<a name="empty-bucket-lifecycle"></a>

대용량 범용 버킷을 비우려면 S3 수명 주기 구성 규칙을 사용하는 것이 좋습니다. 수명 주기 만료는 비동기 프로세스이므로 버킷이 비워지기 전에 규칙이 실행되는 데 며칠이 걸릴 수 있습니다. Amazon S3가 처음 규칙을 실행하면 만료 대상인 모든 객체가 삭제 대상으로 표시됩니다. 삭제 대상으로 표시된 객체에 대해서는 더 이상 요금이 청구되지 않습니다. 자세한 내용은 [수명 주기 구성 규칙을 사용하여 Amazon S3 버킷을 비우려면 어떻게 해야 합니까?](https://repost.aws/knowledge-center/s3-empty-bucket-lifecycle-rule)를 참조하세요.

수명 주기 구성을 사용하여 버킷을 비우는 경우, 수명 주기 구성에는 [최신 버전, 최신이 아닌 버전](https://docs.aws.amazon.com/AmazonS3/latest/userguide/versioning-workflows.html), [삭제 마커](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeleteMarker.html), [불완전 멀티파트 업로드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpu-abort-incomplete-mpu-lifecycle-config.html)가 포함되어야 합니다.

수명 주기 구성 규칙을 추가하여 특정 키 이름 접두사를 가진 모든 객체 또는 객체의 하위 집합에 대해 만료를 지정할 수 있습니다. 예를 들어, 버킷의 모든 객체를 제거하기 위해서는 생성 후 하루가 지나면 객체가 만료되도록 수명 주기 규칙을 설정할 수 있습니다.

이제 Amazon S3는 시작된 후 지정 일수 내에 완료되지 않은 멀티파트 업로드를 중단하는 데 사용할 수 있는 버킷 수명 주기 규칙을 지원합니다. 스토리지 비용을 최소화하려면 이 수명 주기 규칙을 구성하는 것이 좋습니다. 자세한 내용은 [불완전한 멀티파트 업로드를 삭제하도록 버킷 수명 주기 구성 설정](mpu-abort-incomplete-mpu-lifecycle-config.md) 섹션을 참조하세요.

수명 주기 구성을 사용하여 버킷을 비우는 방법에 대한 자세한 내용은 [버킷에서 S3 수명 주기 구성 설정](how-to-set-lifecycle-configuration-intro.md) 및 [객체 만료](lifecycle-expire-general-considerations.md) 단원을 참조하세요.

## AWS CloudTrail가 구성된 범용 버킷 비우기
<a name="empty-bucket-cloudtrail"></a>

AWS CloudTrail은 Amazon S3 범용 버킷의 객체 수준 데이터 이벤트(예: 객체 삭제)를 추적합니다. 범용 버킷을 대상으로 사용하여 CloudTrail 이벤트를 로깅하고 동일한 버킷에서 객체를 삭제하는 경우 버킷을 비우는 동안 새 객체가 생성될 수 있습니다. 이를 방지하려면 AWS CloudTrail 추적을 중지하세요. CloudTrail 추적에서 이벤트 로깅을 중지하는 방법에 대한 자세한 내용은 *AWS CloudTrail 사용 설명서*의 [추적에 대해 로깅 비활성화](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-delete-trails-console.html)를 참조하세요.

CloudTrail 추적이 버킷에 추가되는 것을 중지하는 또 다른 방법은 버킷 정책에 거부 `s3:PutObject` 문을 추가하는 것입니다. 나중에 버킷에 새 객체를 저장하려는 경우 이 거부 `s3:PutObject` 문을 제거해야 합니다. 자세한 내용은 *IAM 사용 설명서*의 [객체 작업](security_iam_service-with-iam.md#using-with-s3-actions-related-to-objects)과 [IAM JSON 정책 요소: 효과](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_effect.html)를 참조하세요.