Amazon S3 일반 목적 버킷 나열
Amazon S3 일반 목적 버킷 나열
내가 소유한 일반 목적 버킷 목록을 반환하려면 ListBuckets를 사용할 수 있어요. Amazon S3 콘솔, AWS Command Line Interface, AWS SDK로 버킷을 나열할 수 있어요. AWS CLI, AWS SDK, Amazon S3 REST API의 ListBuckets 요청에서, 기본 버킷 할당량(10,000개)을 사용하는 AWS 계정은 페이지네이션 요청과 비페이지네이션 요청을 모두 지원해요. 계정에 버킷 수와 관계없이 1~10,000개 사이의 페이지 크기를 지정해 모든 버킷을 나열할 수 있어요. 페이지네이션 요청에서는 각 버킷의 이름과 해당 AWS 리전을 함께 반환해요.
모든 일반 목적 버킷을 나열하려면 s3:ListAllMyBuckets 권한이 필요해요. HTTP Access Denied(403 Forbidden) 오류가 발생하면 접근 거부 문제 해결 문서를 참고하세요.
중요: 페이지네이션된 ListBuckets 요청만 사용하는 것을 강력히 권장해요. 비페이지네이션 ListBuckets 요청은 기본 할당량(10,000개)으로 설정된 계정에서만 지원돼요. 승인된 할당량이 10,000개를 넘는 계정은 모든 버킷을 나열하려면 페이지네이션 요청을 사용해야 하며, 비페이지네이션 요청은 거부돼요.
출처: 문서
본문
콘솔로 버킷 나열하기
AWS Management Console에 로그인하고 Amazon S3 콘솔(https://console.aws.amazon.com/s3/)을 엽니다. 왼쪽 탐색 창에서 General purpose buckets를 선택하면 일반 목적 버킷 목록이 보여요. Find buckets by name 필드에 이름을 입력해 버킷을 찾을 수 있어요.
AWS CLI로 버킷 나열하기
ls 또는 list-buckets 명령을 사용할 수 있어요.
예시 — ls로 계정의 모든 버킷 나열(비페이지네이션):
$ aws s3 ls
예시 — ls로 계정의 모든 버킷 나열(페이지네이션, 페이지당 100개):
$ aws s3 ls --page-size 100
예시 — list-buckets로 계정의 모든 버킷 나열(페이지네이션, 페이지당 100개):
$ aws s3api list-buckets \
--max-items 100 \
--page-size 100
--max-items로 출력된 항목 수가 기본 API 호출이 반환한 총 항목 수보다 적으면, 출력에 starting-token 인자로 지정된 continuation token이 포함돼요. 이 토큰을 다음 명령에 전달해 다음 항목 세트를 얻을 수 있어요:
$ aws s3api list-buckets \
--max-items 100 \
--page-size 100 \
--starting-token eyJNYX...AxfQ==
예시 — 특정 AWS 리전(us-east-2)의 버킷 나열(페이지네이션):
$ aws s3api list-buckets \
--region us-east-2 \
--max-items 100 \
--page-size 100 \
--bucket-region us-east-2
--bucket-region에 지정된 값과 다른 리전별 엔드포인트로 보낸 요청은 지원되지 않아요. us-east-2의 버킷으로 응답을 제한하려면 us-east-2 엔드포인트로 요청해야 해요.
예시 — 특정 이름 접두사로 시작하는 버킷 나열(페이지네이션):
$ aws s3api list-buckets \
--max-items 100 \
--page-size 100 \
--prefix amzn-s3-demo-bucket
AWS SDK로 버킷 나열하기
SDK for Python (Boto3) — 페이지네이션 ListBuckets 요청:
import boto3
s3 = boto3.client('s3')
response = s3.list_buckets(MaxBuckets=100)
Boto3 페이지네이션 ListBuckets 응답:
import boto3
s3 = boto3.client('s3')
response = s3.list_buckets(MaxBuckets=1, ContinuationToken="eyJNYX...AxfQ==EXAMPLE--")
SDK for Java — 버킷 나열 예시는 Amazon S3 API Reference의 "List buckets"을 참고하세요.
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(), &s3.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)
}