建立目錄儲存貯體 - Amazon Simple Storage Service

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

建立目錄儲存貯體

若要開始使用 Amazon S3 Express One Zone 儲存類別,請建立目錄儲存貯體。S3 Express One Zone 儲存類別只能搭配目錄儲存貯體使用。S3 Express One Zone 儲存類別支援低延遲使用案例,並可在單一可用區域內提供更快速的資料處理。如果您的應用程式對效能很敏感,且受益於個位數毫秒的 PUTGET 延遲,則建議您建立目錄儲存貯體,以便使用 S3 Express One Zone 儲存類別。

有兩種類型的 Amazon S3 儲存貯體:一般用途儲存貯體和目錄儲存貯體。您應該選擇最適合您的應用程式和效能需求的儲存貯體類型。一般用途儲存貯體是原始 S3 儲存貯體類型。建議大多數使用案例和存取模式使用一般用途儲存貯體,並允許物件存放在所有儲存類別 (S3 Express One Zone 除外)。如需有關一般用途儲存貯體的詳細資訊,請參閱 儲存貯體概觀

目錄儲存貯體使用 S3 Express One Zone 儲存類別,這是專供需要一致的個位數毫秒延遲的工作負載或效能關鍵應用程式使用所設計的類別。S3 Express One Zone 是第一款可讓您選取單一可用區域的 S3 儲存類別,還可選擇將物件儲存體與運算資源共置,藉此盡可能提供最高存取速度。建立目錄值區時,您可以選擇性地指定 AWS 區域 以及 Amazon EC2、Amazon 彈性 Kubernetes 服務或 Amazon 彈性容器服務 (亞馬遜ECS) 運算執行個體本地的可用區域,以優化效能。

使用 S3 Express One Zone,您的資料會以備援方式儲存在單一可用區域內的多部裝置上。S3 快速單一區域的設計可在單一可用區域內達到 99.95% 的可用性,並受到 Amazon S3 服務等級協議的支援。如需詳細資訊,請參閱 單一可用區域

目錄值區會以階層方式將資料組織到目錄中,而不是一般用途值區的平面儲存結構。目錄儲存貯體沒有字首限制,個別目錄可以水平擴展。

如需有關目錄儲存貯體的詳細資訊,請參閱 目錄值區

目錄儲存貯體的名稱

目錄儲存貯體名稱必須遵循此格式,並符合目錄儲存貯體的命名規則:

bucket-base-name--azid--x-s3

例如,下列目錄儲存貯體名稱包含可用區域 ID usw2-az1

bucket-base-name--usw2-az1--x-s3

如需有關儲存貯體命名規則的詳細資訊,請參閱 目錄儲存貯體命名規則

  1. 登入 AWS Management Console 並在打開 Amazon S3 控制台https://console.aws.amazon.com/s3/

  2. 在頁面頂部的導航欄中,選擇當前顯示的名稱 AWS 區域。 接下來,選擇您要在其中建立值區的「區域」。

    注意

    請選擇接近您的區域,以充分降低延遲及成本,並因應法規要求。除非您明確地將存放在區域中的物件傳輸到其他區域,否則物件絕對不會離開該區域。對於 Amazon S3 的列表 AWS 區域,請參閱 AWS 服務中的端點 Amazon Web Services 一般參考.

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

  4. 選擇 Create bucket (建立儲存貯體)。

    Create bucket (建立儲存貯體) 頁面隨即開啟。

  5. 在 [一般組態] 下,檢視 AWS 區域 您的存儲桶將被創建的位置。

  6. 在「值區類型」下選擇「目錄」。

    注意
    • 如果您選擇的區域不支援目錄值區,則「值區」型態選項會消失,且值區型態會預設為一般用途值區。若要建立目錄值區,您必須選擇支援的「地區」。如需支援目錄儲存貯體和 Amazon S3 快速單區域儲存類別的區域清單,請參閱S3 Express One Zone 可用區域和區域

    • 在您建立儲存貯體之後,便無法變更儲存貯體類型。

    針對可用區域,選擇運算服務本機上的可用區域。如需支援目錄儲存貯體和 S3 Express 單區儲存類別的可用區域清單,請參閱S3 Express One Zone 可用區域和區域

    注意

    儲存貯體建立之後,就無法變更可用區域。

  7. 在 [可用區域] 底下,選取核取方塊以確認在可用區域中斷時,您的資料可能無法使用或遺失。

    重要

    雖然目錄值區儲存在單一可用區域內的多個裝置上,但目錄儲存貯體不會跨可用區域以冗餘方式儲存資料。

  8. 針對儲存貯體名稱,輸入您的目錄儲存貯體的名稱。

    下列命名規則適用於目錄值區。

    • 在所選擇的內容是唯一的 AWS 區域 和可用區域。

    • 名稱長度必須介於 3 (最小) 到 63 個 (最多) 個字元之間,包括後置字元。

    • 只能由小寫字母、數字和連字號 (-) 組成。

    • 開頭和結尾為字母或數字。

    • 必須包含以下後綴:--azid--x-s3

    • 儲存貯體名稱必須以字首 xn-- 開頭。

    • 儲存貯體名稱必須以字首 sthree- 開頭。

    • 儲存貯體名稱必須以字首 sthree-configurator 開頭。

    • 儲存貯體名稱必須以字首 amzn-s3-demo- 開頭。

    • 儲存貯體名稱不得以尾碼 -s3alias 結尾。存取點別名名稱會保留此尾碼。如需詳細資訊,請參閱針對您的 S3 儲存貯體存取點使用儲存貯體樣式別名

    • 儲存貯體名稱不得以尾碼 --ol-s3 結尾。Object Lambda 存取點別名名稱會保留此尾碼。如需詳細資訊,請參閱如何針對您的 S3 儲存貯體 Object Lambda 存取點使用儲存貯體樣式別名

    • 儲存貯體名稱不得以尾碼 .mrap 結尾。此尾碼保留給「多區域存取點」名稱。如需詳細資訊,請參閱命名 Amazon S3 多區域存取點的規則

    當您使用主控台建立目錄值區時,字尾會自動新增至您提供的基本名稱。此字尾包含您所選擇可用區域的可用區域 ID。

    建立儲存貯體後,便無法變更其名稱。如需儲存貯體命名的詳細資訊,請參閱 儲存貯體命名規則

    重要

    請勿在值區名稱中包含敏感資訊,例如帳號。值區名稱會顯URLs示在值區中指向物件的位置。

  9. 在 [物件擁有權] 底下,會自動啟用 [值區擁有者強制執行] 設定,且會停用所有存取控制清單 (ACLs)。對於目錄存儲ACLs桶,無法啟用。

    ACLs殘疾
    • 強制執行值區擁ACLs有者 (預設值) — 已停用,值區擁有者會自動擁有並完全控制值區中的每個物件。ACLs不再影響 S3 儲存貯體中資料的存取權限。儲存貯體單獨使用政策來定義存取控制。

      Amazon S3 中的大多數現代使用案例不再需要使用ACLs。如需詳細資訊,請參閱控制物件的擁有權並停ACLs用值區

  10. 此值區的「封鎖公用存取」設定下,會自動啟用目錄值區的所有「封鎖公用存取」設定。目錄值區的這些設定無法修改。如需封鎖公開存取的詳細資訊,請參閱 封鎖對 Amazon S3 儲存體的公開存取權

  11. 伺服器端加密設定下,目錄儲存貯體使用伺服器端加密搭配 Amazon S3 受管金鑰 (SSE-S3) 來加密資料。

  12. 選擇建立儲存貯體

    建立儲存貯體之後,您可以新增檔案和資料夾至儲存貯體。如需詳細資訊,請參閱使用目錄值區中的物件

SDK for Go

此範例顯示如何使用 AWS SDK for Go.

var bucket = "..." func runCreateBucket(c *s3.Client) { resp, err := c.CreateBucket(context.Background(), &s3.CreateBucketInput{ Bucket: &bucket, CreateBucketConfiguration: &types.CreateBucketConfiguration{ Location: &types.LocationInfo{ Name: aws.String("usw2-az1"), Type: types.LocationTypeAvailabilityZone, }, Bucket: &types.BucketInfo{ DataRedundancy: types.DataRedundancySingleAvailabilityZone, Type: types.BucketTypeDirectory, }, }, }) var terr *types.BucketAlreadyOwnedByYou if errors.As(err, &terr) { fmt.Printf("BucketAlreadyOwnedByYou: %s\n", aws.ToString(terr.Message)) fmt.Printf("noop...\n") return } if err != nil { log.Fatal(err) } fmt.Printf("bucket created at %s\n", aws.ToString(resp.Location)) }
SDK for Java 2.x

此範例顯示如何使用 AWS SDK for Java 2.x.

public static void createBucket(S3Client s3Client, String bucketName) { //Bucket name format is {base-bucket-name}--{az-id}--x-s3 //example: doc-example-bucket--usw2-az1--x-s3 is a valid name for a directory bucket created in //Region us-west-2, Availability Zone 2 CreateBucketConfiguration bucketConfiguration = CreateBucketConfiguration.builder() .location(LocationInfo.builder() .type(LocationType.AVAILABILITY_ZONE) .name("usw2-az1").build()) //this must match the Region and Availability Zone in your bucket name .bucket(BucketInfo.builder() .type(BucketType.DIRECTORY) .dataRedundancy(DataRedundancy.SINGLE_AVAILABILITY_ZONE) .build()).build(); try { CreateBucketRequest bucketRequest = CreateBucketRequest.builder().bucket(bucketName).createBucketConfiguration(bucketConfiguration).build(); CreateBucketResponse response = s3Client.createBucket(bucketRequest); System.out.println(response); } catch (S3Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }
AWS SDK for JavaScript

此範例顯示如何使用 AWS SDK for JavaScript.

// file.mjs, run with Node.js v16 or higher // To use with the preview build, place this in a folder // inside the preview build directory, such as /aws-sdk-js-v3/workspace/ import { S3 } from "@aws-sdk/client-s3"; const region = "us-east-1"; const zone = "use1-az4"; const suffix = `${zone}--x-s3`; const s3 = new S3({ region }); const bucketName = `...--${suffix}`; const createResponse = await s3.createBucket( { Bucket: bucketName, CreateBucketConfiguration: {Location: {Type: "AvailabilityZone", Name: zone}, Bucket: { Type: "Directory", DataRedundancy: "SingleAvailabilityZone" }} } );
AWS SDK for .NET

此範例顯示如何使用 AWS SDK for .NET.

using (var amazonS3Client = new AmazonS3Client()) { var putBucketResponse = await amazonS3Client.PutBucketAsync(new PutBucketRequest { BucketName = "DOC-EXAMPLE-BUCKET--usw2-az1--x-s3", PutBucketConfiguration = new PutBucketConfiguration { BucketInfo = new BucketInfo { DataRedundancy = DataRedundancy.SingleAvailabilityZone, Type = BucketType.Directory }, Location = new LocationInfo { Name = "usw2-az1", Type = LocationType.AvailabilityZone } } }).ConfigureAwait(false); }
SDK for PHP

此範例顯示如何使用 AWS SDK for PHP.

require 'vendor/autoload.php'; $s3Client = new S3Client([ 'region' => 'us-east-1', ]); $result = $s3Client->createBucket([ 'Bucket' => 'doc-example-bucket--use1-az4--x-s3', 'CreateBucketConfiguration' => [ 'Location' => ['Name'=> 'use1-az4', 'Type'=> 'AvailabilityZone'], 'Bucket' => ["DataRedundancy" => "SingleAvailabilityZone" ,"Type" => "Directory"] ], ]);
SDK for Python

此範例顯示如何使用 AWS SDK for Python (Boto3).

import logging import boto3 from botocore.exceptions import ClientError def create_bucket(s3_client, bucket_name, availability_zone): ''' Create a directory bucket in a specified Availability Zone :param s3_client: boto3 S3 client :param bucket_name: Bucket to create; for example, 'doc-example-bucket--usw2-az1--x-s3' :param availability_zone: String; Availability Zone ID to create the bucket in, for example, 'usw2-az1' :return: True if bucket is created, else False ''' try: bucket_config = { 'Location': { 'Type': 'AvailabilityZone', 'Name': availability_zone }, 'Bucket': { 'Type': 'Directory', 'DataRedundancy': 'SingleAvailabilityZone' } } s3_client.create_bucket( Bucket = bucket_name, CreateBucketConfiguration = bucket_config ) except ClientError as e: logging.error(e) return False return True if __name__ == '__main__': bucket_name = 'BUCKET_NAME' region = 'us-west-2' availability_zone = 'usw2-az1' s3_client = boto3.client('s3', region_name = region) create_bucket(s3_client, bucket_name, availability_zone)
SDK for Ruby

此範例顯示如何使用 AWS SDK for Ruby.

s3 = Aws::S3::Client.new(region:'us-west-2') s3.create_bucket( bucket: "bucket_base_name--az_id--x-s3", create_bucket_configuration: { location: { name: 'usw2-az1', type: 'AvailabilityZone' }, bucket: { data_redundancy: 'SingleAvailabilityZone', type: 'Directory' } } )

此範例顯示如何使用 AWS CLI。 若要使用指令,請取代 user input placeholders 使用您自己的信息。

建立目錄值區時,您必須提供組態詳細資訊,並使用下列命名慣例:bucket-base-name--azid--x-s3

aws s3api create-bucket --bucket bucket-base-name--azid--x-s3 --create-bucket-configuration 'Location={Type=AvailabilityZone,Name=usw2-az1},Bucket={DataRedundancy=SingleAvailabilityZone,Type=Directory}' --region us-west-2

如需詳細資訊請參閱 AWS Command Line Interface.