

 AWS SDK for Java 1.x는 2025년 12월 31일에 end-of-support되었습니다. 새로운 기능, 가용성 개선 및 보안 업데이트를 계속 받으려면 [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html)로 마이그레이션하는 것이 좋습니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon S3 버킷 생성, 나열, 삭제
<a name="examples-s3-buckets"></a>

Amazon S3의 모든 객체(파일)은 객체의 모음(컨테이너)을 나타내는 *버킷*에 상주해야 합니다. 각 버킷은 *키*(이름)로 인식되며, 각 키는 고유해야 합니다. 버킷 및 구성에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 [Amazon S3 버킷 사용을](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html) 참조하세요.

**참고**  
모범 사례  
Amazon S3 버킷에서 [AbortIncompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html) 수명 주기 규칙을 활성화하는 것이 좋습니다.  
이 규칙은 시작된 후 지정된 일수 내에 완료되지 않은 멀티파트 업로드를 중단하도록 Amazon S3에 지시합니다. 설정된 시간 제한을 초과하면 Amazon S3가 업로드를 중단한 후 완료되지 않은 업로드 데이터를 삭제합니다.  
자세한 내용은 Amazon S3 사용 설명서의 [버전 관리가 포함된 버킷의 수명 주기 구성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-bucket-with-versioning.html)을 참조하세요.

**참고**  
이 코드 예제에서는 사용자가 [AWS SDK for Java 사용](basics.md)의 내용을 이해하고 [개발을 위한 AWS 자격 증명 및 리전 설정](setup-credentials.md)의 정보를 사용하여 기본 AWS 자격 증명을 구성했다고 가정합니다.

## 버킷 만들기
<a name="create-bucket"></a>

AmazonS3 클라이언트의 `createBucket` 메서드를 사용하세요. 새 [버킷](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/Bucket.html)이 반환됩니다. 해당 버킷이 이미 존재하는 경우에는 `createBucket` 메서드에서 예외가 발생합니다.

**참고**  
동일한 이름의 버킷을 생성하기 전에 버킷이 이미 존재하는지 여부를 확인하려면 `doesBucketExist` 메서드를 호출합니다. 이 메서드는 버킷이 존재하는 경우 `true`를 반환하고, 그렇지 않으면 `false`를 반환합니다.

 **가져옵니다**.

```
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.AmazonS3Exception;
import com.amazonaws.services.s3.model.Bucket;

import java.util.List;
```

 ** 코드** 

```
if (s3.doesBucketExistV2(bucket_name)) {
    System.out.format("Bucket %s already exists.\n", bucket_name);
    b = getBucket(bucket_name);
} else {
    try {
        b = s3.createBucket(bucket_name);
    } catch (AmazonS3Exception e) {
        System.err.println(e.getErrorMessage());
    }
}
return b;
```

GitHub의 [전체 예제](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/CreateBucket.java)를 참조하세요.

## 버킷 목록 생성
<a name="list-buckets"></a>

AmazonS3 클라이언트의 `listBucket` 메서드를 사용하세요. 성공하면 [버킷](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/Bucket.html)이 반환됩니다.

 **가져옵니다**.

```
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.Bucket;

import java.util.List;
```

 ** 코드** 

```
List<Bucket> buckets = s3.listBuckets();
System.out.println("Your {S3} buckets are:");
for (Bucket b : buckets) {
    System.out.println("* " + b.getName());
}
```

GitHub의 [전체 예제](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/ListBuckets.java)를 참조하세요.

## 버킷 삭제
<a name="delete-bucket"></a>

Amazon S3 버킷을 삭제하려면 먼저 버킷이 비어 있는지 확인해야 합니다. 비어 있지 않으면 오류가 발생합니다. [버전 지정된 버킷](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html)이 있으면 버킷과 연결된 버전 지정된 객체도 모두 삭제해야 합니다.

**참고**  
[전체 예제](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java)에는 Amazon S3 버킷 및 관련 콘텐츠를 삭제하기 위한 전체 솔루션을 제공하는 다음의 각 단계가 순서대로 포함됩니다.

**Topics**
+ [삭제하기 전에 버전이 지정되지 않은 버킷에서 객체 제거](#remove-objects-from-an-unversioned-bucket-before-deleting-it)
+ [삭제하기 전에 버전 지정된 버킷에서 객체 제거](#remove-objects-from-a-versioned-bucket-before-deleting-it)
+ [빈 버킷 삭제](#delete-an-empty-bucket)

### 삭제하기 전에 버전이 지정되지 않은 버킷에서 객체 제거
<a name="remove-objects-from-an-unversioned-bucket-before-deleting-it"></a>

AmazonS3 클라이언트의 `listObjects` 메서드를 사용하여 객체 목록을 가져오고 `deleteObject`를 사용하여 각 객체를 삭제합니다.

 **가져옵니다**.

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import java.util.Iterator;
```

 ** 코드** 

```
System.out.println(" - removing objects from bucket");
ObjectListing object_listing = s3.listObjects(bucket_name);
while (true) {
    for (Iterator<?> iterator =
         object_listing.getObjectSummaries().iterator();
         iterator.hasNext(); ) {
        S3ObjectSummary summary = (S3ObjectSummary) iterator.next();
        s3.deleteObject(bucket_name, summary.getKey());
    }

    // more object_listing to retrieve?
    if (object_listing.isTruncated()) {
        object_listing = s3.listNextBatchOfObjects(object_listing);
    } else {
        break;
    }
}
```

GitHub의 [전체 예제](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java)를 참조하세요.

### 삭제하기 전에 버전 지정된 버킷에서 객체 제거
<a name="remove-objects-from-a-versioned-bucket-before-deleting-it"></a>

[버전 지정된 버킷](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html)을 사용 중인 경우 버킷을 삭제하려면 먼저 버킷에 있는 저장된 객체 버전도 모두 제거해야 합니다.

버킷에 있는 객체를 제거할 때와 비슷한 패턴을 사용하여, AmazonS3 클라이언트의 `listVersions` 메서드를 사용하여 버전 지정된 객체를 나열한 후 `deleteVersion`을 사용하여 각 객체를 삭제함으로써 버전 지정된 객체를 제거합니다.

 **가져옵니다**.

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import java.util.Iterator;
```

 ** 코드** 

```
System.out.println(" - removing versions from bucket");
VersionListing version_listing = s3.listVersions(
        new ListVersionsRequest().withBucketName(bucket_name));
while (true) {
    for (Iterator<?> iterator =
         version_listing.getVersionSummaries().iterator();
         iterator.hasNext(); ) {
        S3VersionSummary vs = (S3VersionSummary) iterator.next();
        s3.deleteVersion(
                bucket_name, vs.getKey(), vs.getVersionId());
    }

    if (version_listing.isTruncated()) {
        version_listing = s3.listNextBatchOfVersions(
                version_listing);
    } else {
        break;
    }
}
```

GitHub의 [전체 예제](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java)를 참조하세요.

### 빈 버킷 삭제
<a name="delete-an-empty-bucket"></a>

버킷에서 객체(버전 지정된 모든 객체 포함)를 제거하고 나면 클라이언트의 AmazonS3의 `deleteBucket` 메서드를 사용하여 버킷 자체를 삭제할 수 있습니다.

 **가져옵니다**.

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import java.util.Iterator;
```

 ** 코드** 

```
System.out.println(" OK, bucket ready to delete!");
s3.deleteBucket(bucket_name);
```

GitHub의 [전체 예제](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/DeleteBucket.java)를 참조하세요.