Amazon S3 버킷 생성, 나열, 삭제 - AWS SDK for Java 1.x

다음 버전 AWS SDK for Java (v1) end-of-support 을 발표했습니다. AWS SDK for Java V2로 마이그레이션하실 것을 권장합니다. 마이그레이션 날짜, 추가 세부 정보 및 방법에 대한 자세한 내용은 링크된 공지 사항을 참조하세요.

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

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 버킷을 삭제하려면 먼저 버킷이 비어 있는지 확인해야 합니다. 비어 있지 않으면 오류가 발생합니다. 버전 지정된 버킷이 있으면 버킷과 연결된 버전 지정된 객체도 모두 삭제해야 합니다.

참고

전체 예제에는 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의 전체 예제를 참조하십시오.