列出 Amazon S3 儲存貯體 - Amazon Simple Storage Service

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

列出 Amazon S3 儲存貯體

若要傳回您擁有的一般用途儲存貯體清單,您可以使用 ListBuckets。您可以使用 Amazon S3 主控台、 AWS Command Line Interface或 AWS SDKs 列出儲存貯體。對於使用儲存貯體 (10,000 個儲存貯體) 使用預設服務配額API AWS 帳戶 的 AWS CLI、 AWS SDKs 和 Amazon S3 REST ListBuckets的請求, 支援分頁和未分頁的請求。無論您帳戶中有多少儲存貯體,您都可以在 1 到 10,000 個儲存貯體之間建立頁面大小,以列出所有儲存貯體。對於分頁請求,ListBuckets請求會傳回儲存貯體名稱和每個儲存貯 AWS 區域 體對應的 。下列 AWS Command Line Interface 和 AWS SDK 範例示範如何在ListBuckets請求中使用分頁。請注意,有些 AWS SDKs 協助分頁。

許可

若要列出您所有的儲存貯體,您必須具有 s3:ListAllMyBuckets 許可。如果您遇到HTTP Access Denied (403 Forbidden)錯誤,請參閱 拒絕對存取進行故障診斷 (403 Forbidden) Amazon S3 中的錯誤

重要

我們強烈建議僅使用分頁ListBuckets請求。只有將 AWS 帳戶 設為預設一般用途儲存貯體配額 10,000 才支援未分頁的ListBuckets請求。如果您的核准一般用途儲存貯體配額超過 10,000,您必須傳送分頁ListBuckets請求以列出帳戶的儲存貯體。所有未分頁的ListBuckets請求都會被拒絕, AWS 帳戶 一般用途儲存貯體配額大於 10,000。

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

  2. 在左側導覽窗格中,選擇 Buckets (儲存貯體)。

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

  4. 若要依名稱尋找儲存貯體,請在搜尋方塊中輸入儲存貯體名稱。

若要使用 AWS CLI 產生一般用途儲存貯體的清單,您可以使用 lslist-buckets命令。下列範例示範如何建立分頁list-buckets請求和未分頁ls請求。若要使用這些範例,請取代 user input placeholders.

範例 – 使用 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 prefix.

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