在可用區域中建立目錄儲存貯體 - 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 Elastic Kubernetes Service 或 Amazon Elastic Container Service (Amazon ECS) 運算執行個體的本機,以最佳化效能。

使用 S3 Express One Zone,您的資料會以備援方式儲存在單一可用區域內的多部裝置上。S3 Express One Zone 專為單一可用區域內 99.95% 的可用性而設計,並由 Amazon S3 服務水準協議提供支援。如需詳細資訊,請參閱 可用區域

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

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

目錄儲存貯體的名稱

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

bucket-base-name--zone-id--x-s3

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

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

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

  1. 登入 AWS Management Console 並在 Word 開啟 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 Express One Zone 儲存類別的區域清單,請參閱 S3 Express One Zone 可用區域和區域

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

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

    注意

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

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

    重要

    雖然目錄儲存貯體存放在單一可用區域中的多個裝置中,但目錄儲存貯體不會跨可用區域以備援方式存放資料。

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

    下列命名規則適用於目錄儲存貯體。

    • 在所選區域 (AWS 可用區域) 內是唯一的。

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

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

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

    • 必須包含下列尾碼:--zone-id--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--zone-id--x-s3

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

如需詳細資訊,請參閱中的 create-bucket AWS Command Line Interface。