Amazon S3 버킷 나열 - Amazon Simple Storage Service

Amazon S3 버킷 나열

ListBuckets를 사용하여 직접 소유한 범용 버킷 목록을 반환할 수 있습니다. Amazon S3 콘솔, AWS Command Line Interface 또는 AWS SDK를 사용하여 버킷을 나열할 수 있습니다. 버킷(버킷 10,000개)에 대한 기본 서비스 할당량을 사용하는 AWS CLI, AWS SDK, Amazon S3 REST API, AWS 계정를 통한 ListBuckets 요청의 경우 페이지 매김 요청 및 페이지가 지정되지 않은 요청을 모두 지원합니다. 계정에 포함된 버킷 수와 상관없이 버킷 1개~10,000개 사이에서 페이지 크기를 만들어 모든 버킷을 나열할 수 있습니다. 페이지 매김 요청의 경우 ListBuckets 요청은 버킷 이름과 각 버킷에 해당하는 AWS 리전을 모두 반환합니다. 다음 AWS Command Line Interface 및 AWS SDK 예제에서는 ListBuckets 요청에 페이지 매김을 사용하는 방법을 설명합니다. 일부 AWS SDK는 페이지 매김을 지원한다는 점에 유의하세요.

권한

모든 버킷을 나열하려면 s3:ListAllMyBuckets 권한이 있어야 합니다. HTTP Access Denied (403 Forbidden) 오류가 발생할 경우 Amazon S3의 액세스 거부(403 Forbidden) 오류 문제 해결 섹션을 참조하세요.

중요

페이지 매김된 ListBuckets 요청만 사용하는 것이 좋습니다. 페이지가 지정되지 않은 ListBuckets 요청은 기본 범용 버킷 할당량인 10,000개로 설정된 AWS 계정에 대해서만 지원됩니다. 승인된 범용 버킷 할당량이 10,000개를 초과할 경우 페이지 매김된 ListBuckets 요청을 전송하여 계정 버킷을 나열해야 합니다. 범용 버킷 할당량이 10,000개가 넘는 AWS 계정에 대한 페이지가 지정되지 않은 모든 ListBuckets 요청은 거부됩니다.

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

  2. 왼쪽 탐색 창에서 버킷(Buckets)을 선택합니다.

  3. 범용 버킷 탭에서 범용 버킷 목록을 볼 수 있습니다.

  4. 이름으로 버킷을 찾으려면 검색 상자에 버킷 이름을 입력합니다.

ls 또는 list-buckets 명령을 사용하면 AWS CLI를 사용하여 범용 버킷 목록을 생성할 수 있습니다. 다음 예제에서는 페이지 매김된 list-buckets 요청과 페이지가 지정되지 않은 ls 요청을 생성하는 방법을 보여줍니다. 해당 예제를 사용하려면 사용자 입력 자리 표시자를 바꾸세요.

예 - ls를 사용하여 계정의 모든 버킷 나열(페이지가 지정되지 않음)

다음 예제 명령은 페이지가 지정되지 않은 단일 직접 호출에서 계정의 모든 범용 버킷을 나열합니다. 이 직접 호출은 계정의 모든 버킷 목록을 반환합니다(최대 결과 10,000개).

$ aws s3 ls

자세한 내용 및 예제는 버킷 및 객체 목록을 참조하십시오.

예 - ls를 사용하여 계정의 모든 버킷 나열(페이지 매김됨)

다음 예제 명령은 페이지 매김된 직접 호출을 하나 이상 수행하여 계정의 모든 범용 버킷을 나열하고 페이지당 버킷 100개를 반환합니다.

$ aws s3 ls --page-size 100

자세한 내용 및 예제는 버킷 및 객체 목록을 참조하십시오.

예 - 계정의 모든 버킷 나열(페이지 매김됨)

다음 예제에서는 계정의 모든 범용 버킷을 나열하는 페이지 매김된 list-buckets 명령을 제공합니다. --max-items--page-size 옵션은 나열된 버킷 수를 페이지당 100개로 제한합니다.

$ aws s3api list-buckets / --max-items 100 / --page-size 100

출력 항목 수(--max-items)가 기본 API 직접 호출에서 반환하는 전체 항목 수보다 적을 경우 출력에 starting-token 인수로 지정된 연속 토큰이 포함되며, 이를 후속 명령에 전달하여 다음 항목 세트를 검색할 수 있습니다. 다음 예제에서는 이전 예제에서 반환한 starting-token 값을 사용하는 방법을 설명합니다. starting-code를 지정하여 다음 버킷 100개를 검색할 수 있습니다.

$ aws s3api list-buckets / --max-items 100 / --page-size 100 / --starting-token eyJNYXJrZXIiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAxfQ==

예 – AWS 리전의 모든 버킷 나열(페이지 매김됨)

다음 예제 명령은 --bucket-region 파라미터를 사용하여 us-east-2 리전에 있는 계정의 버킷을 최대 100개까지 나열합니다. --bucket-region 파라미터에 지정된 값과 다른 리전 엔드포인트에 대한 요청은 지원되지 않습니다. 예를 들어 us-east-2의 버킷에 대한 응답을 제한하려는 경우 us-east-2의 엔드포인트에 요청해야 합니다.

$ aws s3api list-buckets / --region us-east-2 / --max-items 100 / --page-size 100 / --bucket-region us-east-2

예 - 특정 버킷 이름 접두사로 시작하는 모든 버킷 나열(페이지 매김됨)

다음 예제 명령은 이름이 amzn-s3-demo-bucket 접두사로 시작하는 버킷을 최대 100개까지 나열합니다.

$ aws s3api list-buckets / --max-items 100 / --page-size 100 / --prefix amzn-s3-demo-bucket

다음 예제에서는 AWS SDK를 사용하여 범용 버킷을 나열하는 방법을 설명합니다.

SDK for Python
예 – ListBuckets 요청(페이지 매김됨)
import boto3 s3 = boto3.client('s3') response = s3.list_buckets(MaxBuckets=100)
예 – ListBuckets 응답(페이지 매김됨)
import boto3 s3 = boto3.client('s3') response = s3.list_buckets(MaxBuckets=1,ContinuationToken="eyJNYXJrZXIiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAxfQ==EXAMPLE--")
SDK for Java
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 com.amazonaws.services.s3.model.ListBucketsPaginatedRequest; import com.amazonaws.services.s3.model.ListBucketsPaginatedResult; import java.util.List; public class ListBuckets { public static void main(String[] args) { final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); ListBucketsPaginatedRequest listBucketsPaginatedRequest = new ListBucketsPaginatedRequest().withMaxBuckets(1); ListBucketsPaginatedResult listBucketsPaginatedResult = s3.listBuckets(listBucketsPaginatedRequest); List<Bucket> buckets = listBucketsPaginatedResult.getBuckets(); System.out.println("Your Amazon S3 buckets are:"); for (Bucket b : buckets) { System.out.println("* " + b.getName() + " region: " + b.getRegion()); } System.out.println("continuation token: " + listBucketsPaginatedResult.getContinuationToken()); } }
SDK for Java 2.x
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.Bucket; import software.amazon.awssdk.services.s3.model.ListBucketsRequest; import software.amazon.awssdk.services.s3.model.ListBucketsResponse; import java.util.List; public class ListBuckets { public static void main(String[] args) { // Create an S3 client S3Client s3 = S3Client.builder() .region(Region.US_EAST_1) // Replace with your preferred region .credentialsProvider(DefaultCredentialsProvider.create()) .build(); try { // List buckets ListBucketsRequest listBucketsRequest = ListBucketsRequest.builder() .maxBuckets(10) .build(); ListBucketsResponse listBucketsResponse = s3.listBuckets(listBucketsRequest); List<Bucket> buckets = listBucketsResponse.buckets(); // Print bucket names System.out.println("Your Amazon S3 buckets are:"); for (Bucket bucket : buckets) { System.out.println(bucket.name()); System.out.println(bucket.getBucketRegion()); } } catch (Exception e) { System.err.println("Error listing buckets: " + e.getMessage()); e.printStackTrace(); } finally { // Close the S3 client to release resources s3.close(); } } }
SDK for Go
package main import ( "context" "fmt" "log" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/s3" ) func main() { cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("us-east-2")) if err != nil { log.Fatal(err) } client := s3.NewFromConfig(cfg) maxBuckets := 1000 resp, err := client.ListBuckets(context.TODO(), management portals3.ListBucketsInput{MaxBuckets: aws.Int32(int32(maxBuckets))}) if err != nil { log.Fatal(err) } fmt.Println("S3 Buckets:") for _, bucket := range resp.Buckets { fmt.Println("- Name:", *bucket.Name) fmt.Println("-BucketRegion", *bucket.BucketRegion) } fmt.Println(resp.ContinuationToken == nil) fmt.Println(resp.Prefix == nil) }