列出 Amazon S3 一般用途儲存貯體 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

列出 Amazon S3 一般用途儲存貯體

若要傳回您所擁有的一般用途儲存貯體清單,您可以使用 ListBuckets。您可以使用 Amazon S3 主控台 AWS Command Line Interface、 或 AWS SDKs。對於使用儲存貯體 AWS 帳戶 (10,000 個儲存貯體) 預設服務配額的 AWS CLI、 AWS SDKs 和 Amazon S3 REST API 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 請求。只有將 AWS 帳戶 設定為預設一般用途儲存貯體配額 10,000 時,才支援未分頁 ListBuckets 請求。如果已核准的一般用途儲存貯體配額超過 10,000,則必須傳送分頁 ListBuckets 請求以列出帳戶的儲存貯體。的一般 AWS 帳戶 用途儲存貯體配額大於 10,000 的所有未分頁ListBuckets請求都會遭到拒絕。

  1. 登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/s3/ 開啟 Amazon S3 主控台。

  2. 在左側導覽窗格中,選擇一般用途儲存貯體

  3. 一般用途儲存貯體索引標籤上,您可以看到一般用途儲存貯體清單。

  4. 若要依名稱尋找儲存貯體,請在依名稱尋找儲存貯體欄位中輸入儲存貯體名稱

若要使用 AWS CLI 產生一般用途儲存貯體的清單,您可以使用 lslist-buckets命令。下列範例示範如何建立分頁 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

範例 – 列出以特定儲存貯體名稱字首開頭的所有儲存貯體 (分頁)

下列範例命令列出最多 100 個名稱開頭為 amzn-s3-demo-bucket 字首的儲存貯體。

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

下列範例說明如何使用 AWS SDKs 列出一般用途儲存貯體

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) }