The AWS SDK for Java 1.x는 2024년 7월 31일부터 유지 관리 모드로 전환되었으며 2025년 12월 31일에 end-of-support
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon S3 버킷 생성, 나열, 삭제
Amazon S3의 모든 객체(파일)은 객체의 모음(컨테이너)을 나타내는 버킷에 상주해야 합니다. 각 버킷은 키(이름)로 인식되며, 각 키는 고유해야 합니다. 버킷 및 구성에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 Amazon S3 버킷 사용을 참조하세요.
참고
모범 사례
Amazon S3 버킷에서 AbortIncompleteMultipartUpload 수명 주기 규칙을 활성화하는 것이 좋습니다.
이 규칙은 시작된 후 지정된 일수 내에 완료되지 않은 멀티파트 업로드를 중단하도록 Amazon S3에 지시합니다. 설정된 시간 제한을 초과하면 Amazon S3가 업로드를 중단한 후 완료되지 않은 업로드 데이터를 삭제합니다.
자세한 내용은 Amazon S3 사용 설명서의 버전 관리가 포함된 버킷의 수명 주기 구성을 참조하세요.
참고
이 코드 예제에서는 사용자가 AWS SDK for Java 사용의 내용을 이해하고 개발을 위한 AWS 자격 증명 및 리전 설정의 정보를 사용하여 기본 AWS 자격 증명을 구성했다고 가정합니다.
버킷 만들기
AmazonS3 클라이언트의 createBucket
메서드를 사용하세요. 새 버킷이 반환됩니다. 해당 버킷이 이미 존재하는 경우에는 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의 전체 예제
버킷 목록 생성
AmazonS3 클라이언트의 listBucket
메서드를 사용하세요. 성공하면 버킷이 반환됩니다.
가져오기
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의 전체 예제
버킷 삭제
Amazon S3 버킷을 삭제하려면 먼저 버킷이 비어 있는지 확인해야 합니다. 비어 있지 않으면 오류가 발생합니다. 버전 지정된 버킷이 있으면 버킷과 연결된 버전 지정된 객체도 모두 삭제해야 합니다.
참고
전체 예제
삭제하기 전에 버전이 지정되지 않은 버킷에서 객체 제거
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의 전체 예제
삭제하기 전에 버전 지정된 버킷에서 객체 제거
버전 지정된 버킷을 사용 중인 경우 버킷을 삭제하려면 먼저 버킷에 있는 저장된 객체 버전도 모두 제거해야 합니다.
버킷에 있는 객체를 제거할 때와 비슷한 패턴을 사용하여, 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의 전체 예제
빈 버킷 삭제
버킷에서 객체(버전 지정된 모든 객체 포함)를 제거하고 나면 클라이언트의 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의 전체 예제