

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

# 使用目錄儲存貯體
<a name="directory-buckets-overview"></a>

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

您可以在每個 中建立最多 100 個目錄儲存貯體 AWS 帳戶，而儲存貯體中可存放的物件數量沒有限制。您的儲存貯體配額會套用至 AWS 帳戶中的每個區域。如果您的應用程式需要提高此限制，請聯絡 支援。

**重要**  
可用區域中至少 90 天沒有請求活動的目錄儲存貯體，會轉換成非作用中狀態。處於非作用中狀態時，會暫時無法存取目錄儲存貯體來進行讀取和寫入。非作用中儲存貯體會保留所有儲存、物件中繼資料和儲存貯體中繼資料。非作用中儲存貯體將須支付現有的儲存費用。如果對非作用中儲存貯體提出存取請求，該儲存貯體通常會在幾分鐘內轉換成作用中狀態。在此轉換期間進行讀取和寫入，會傳回 HTTP `503 (Service Unavailable)` 錯誤碼。這不適用於 Local Zones 中的儲存貯體。

Amazon S3 儲存貯體有數種類型。在建立儲存貯體之前，請確定您選擇的儲存貯體類型最適合您的應用程式和效能要求。如需各種儲存貯體類型的詳細資訊，以及每個儲存貯體的適當使用案例，請參閱 [儲存貯體](Welcome.md#BasicsBucket)。

下列主題提供目錄儲存貯體的相關資訊。如需有關一般用途儲存貯體的詳細資訊，請參閱 [一般用途儲存貯體概觀](UsingBucket.md)。

如需目錄儲存貯體的詳細資訊，請參閱下列主題。
+ [目錄儲存貯體名稱](#directory-buckets-name)
+ [目錄](#directory-buckets-index)
+ [鍵值名稱](#directory-buckets-key-names)
+ [存取管理](#directory-buckets-access-management)

## 目錄儲存貯體名稱
<a name="directory-buckets-name"></a>

目錄儲存貯體名稱是由您提供的基本名稱以及包含儲存貯體所在區域 (可用區域或本機區域) ID 的字尾所組成。目錄儲存貯體名稱必須使用下列格式，並遵循目錄儲存貯體的命名規則：

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

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

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

如需詳細資訊，請參閱[目錄儲存貯體命名規則](directory-bucket-naming-rules.md)。

## 目錄
<a name="directory-buckets-index"></a>

目錄儲存貯體會以階層方式將資料組織到目錄中，不同於一般用途儲存貯體的平面儲存結構。

使用階層式命名空間時，物件索引鍵中的分隔符號非常重要。唯一支援的分隔符號為正斜線 (`/`)。目錄是以分隔符號邊界決定。例如，物件索引鍵 `dir1/dir2/file1.txt` 會產生目錄 `dir1`/ 並自動建立 `dir2/`，以及將物件 `file1.txt` 新增至路徑 `dir1/dir2/file1.txt` 中的 `/dir2` 目錄。

目錄儲存貯體索引模型會針對 `ListObjectsV2` API 操作傳回未排序的結果。如果您需要將結果限於儲存貯體的某個子區段，您可以在 `prefix` 參數中指定子目錄路徑，例如 `prefix=dir1/`。

## 鍵值名稱
<a name="directory-buckets-key-names"></a>

對於目錄儲存貯體，多個物件索引鍵常用的子目錄會使用第一個物件索引鍵來建立。同一個子目錄的其他物件金鑰會使用先前建立的子目錄。此模型可讓您彈性選擇最適合應用程式的物件索引鍵，同時支援稀疏和密集目錄。

## 存取管理
<a name="directory-buckets-access-management"></a>

目錄儲存貯體預設會在儲存貯體層級啟用所有 S3 封鎖公開存取設定。S3 物件擁有權會設定為儲存貯體擁有者強制執行，且存取控制清單 (ACL) 會停用。這些設定無法修改。

使用者預設沒有目錄儲存貯體的許可。若要授予存取目錄儲存貯體的許可，您可以使用 IAM 建立使用者、群組或角色，並將許可附加至這些身分。如需詳細資訊，請參閱[使用 IAM 授權地區端點 API 操作](s3-express-security-iam.md)。

您也可以透過存取點控制目錄儲存貯體的存取權。存取點針對 Amazon S3 中的共用資料集，簡化管理大規模的資料存取。存取點是您建立的唯一主機名稱，目的在於針對透過存取點發出的所有請求，強制執行不同的許可與網路控制。如需詳細資訊，請參閱[使用存取點管理目錄儲存貯體中的共用資料集存取權](access-points-directory-buckets.md)。

## 目錄儲存貯體配額
<a name="directory-buckets-quotas"></a>

配額也稱為限制，是 AWS 帳戶的服務資源或操作的最大數量。以下是目錄儲存貯體的配額。如需 Amazon S3 配額的詳細資訊，請參閱 [Amazon S3 配額](https://docs.aws.amazon.com/general/latest/gr/s3.html#limits_s3)。


| 名稱 | 預設 | 可調整 | Description | 
| --- | --- | --- | --- | 
| 目錄儲存貯體 | 每個帳戶：100 | [是](https://console.aws.amazon.com/servicequotas/home/services/s3/quotas/L-775A314D) | 您可以在帳戶中建立的 Amazon S3 目錄儲存貯體數量。 | 
| 讀取每個目錄儲存貯體的 TPS | 每個目錄儲存貯體最多 200,000 個讀取 TPS | 若要申請增加配額，請聯絡[支援人員](https://support.console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase)。 | 每個目錄儲存貯體每秒的 GET/HEAD 請求數。 | 
| 每個目錄儲存貯體的寫入 TPS | 每個目錄儲存貯體最多 100,000 個寫入 TPS | 若要申請增加配額，請聯絡[支援人員](https://support.console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase)。 | 每個目錄儲存貯體每秒的 PUT/DELETE 請求數。 | 

## 建立和使用目錄儲存貯體
<a name="directory-buckets-working"></a>

如需使用目錄儲存貯體的詳細資訊，請參閱下方主題。
+ [目錄儲存貯體的使用案例](directory-bucket-use-cases.md)
+ [目錄儲存貯體的不同之處](s3-express-differences.md)
+ [目錄儲存貯體的網路](s3-express-networking.md)
+ [目錄儲存貯體命名規則](directory-bucket-naming-rules.md)
+ [檢視目錄儲存貯體屬性使用 S3 主控台](directory-bucket-view.md)
+ [管理目錄儲存貯體政策](directory-bucket-bucket-policy.md)
+ [清空目錄儲存貯體](directory-bucket-empty.md)
+ [刪除目錄儲存貯體](directory-bucket-delete.md)
+ [列出目錄儲存貯體](directory-buckets-objects-ListExamples.md)
+ [判斷您是否可以存取目錄儲存貯體](directory-buckets-objects-HeadExamples.md)
+ [使用目錄儲存貯體中的物件](directory-buckets-objects.md)
+ [目錄儲存貯體的安全性](s3-express-security.md)
+ [使用存取點管理目錄儲存貯體中的共用資料集存取權](access-points-directory-buckets.md)
+ [最佳化目錄儲存貯體效能](s3-express-optimizing-performance.md)
+ [使用目錄儲存貯體進行開發](s3-express-developing.md)
+ [搭配使用標籤和 S3 目錄儲存貯體](directory-buckets-tagging.md)
+ [在 S3 Express One Zone 中進行恢復能力測試](s3-express-fis.md)

# 目錄儲存貯體的使用案例
<a name="directory-bucket-use-cases"></a>

目錄儲存貯體支援在下列儲存貯體位置類型中建立儲存貯體：可用區域或本機區域。

對於低延遲使用案例，您可以在單一可用區域中建立目錄儲存貯體來儲存資料。可用區域中的目錄儲存貯體支援 S3 Express One Zone 儲存類別。如果您的應用程式對於效能很敏感，且受益於個位數毫秒的 `PUT` 和 `GET` 延遲，則建議使用 S3 Express One Zone 儲存類別。若要進一步了解如何在可用區域中建立目錄儲存貯體，請參閱[高效能工作負載](directory-bucket-high-performance.md)。

 對於資料駐留使用案例，您可以在單一專用本機區域 (DLZ) AWS 中建立目錄儲存貯體來存放資料。本機區域中的目錄儲存貯體支援 S3 One Zone-Infrequent Access (S3 One Zone-IA、Z-IA) 儲存類別。若要進一步了解如何在本機區域中建立目錄儲存貯體，請參閱[資料落地工作負載](directory-bucket-data-residency.md)。

**Topics**
+ [高效能工作負載](directory-bucket-high-performance.md)
+ [資料落地工作負載](directory-bucket-data-residency.md)

# 高效能工作負載
<a name="directory-bucket-high-performance"></a>

## S3 Express One Zone
<a name="s3-express-one-zone"></a>

 您可以使用 Amazon S3 Express One Zone 處理高效能工作負載。S3 Express One Zone 是第一款可讓您選取單一可用區域的 S3 儲存類別，還可選擇將物件儲存體與運算資源共置，藉此盡可能提供最高存取速度。S3 Express One Zone 中的物件會儲存在位於可用區域的目錄儲存貯體中。如需目錄儲存貯體的詳細資訊，請參閱[目錄儲存貯體](https://docs.aws.amazon.com//AmazonS3/latest/userguide/directory-buckets-overview.html)。

Amazon S3 Express One Zone 是一種高效能的單一區域 Amazon S3 儲存類別，專門為對延遲最敏感的應用程式提供一致的個位數毫秒資料存取。S3 Express One Zone 是目前可用的最低延遲雲端物件儲存類別，與 S3 Standard 相比，資料存取速度提高 10 倍，而且請求成本低 50%。應用程式可立即因請求完成的速度加快一級而受益。S3 Express One Zone 提供與其他 S3 儲存類別類似的效能彈性。S3 Express One Zone 用於需要一致的個位數毫秒延遲的工作負載或效能關鍵應用程式。

如同其他 Amazon S3 儲存類別，您不需要事先規劃或佈建容量或輸送量要求。您可以根據需要擴展或縮減儲存大小，並透過 Amazon S3 API 存取資料。

Amazon S3 Express One Zone 儲存類別的設計可在單一可用區域內達到 99.95% 的可用性，並依照 [Amazon S3 服務水準協議](https://aws.amazon.com/s3/sla/)提供支援。使用 S3 Express One Zone，您的資料會以備援方式儲存在單一可用區域內的多部裝置上。S3 Express One Zone 的設計在於透過快速偵測並修復任何遺失的備援來處理並行裝置故障。如果現有裝置發生故障，S3 Express One Zone 會自動將請求轉送到可用區域內的新裝置。這種備援有助於確保存取可用區域內的資料不間斷。

S3 Express One Zone 非常適合需要盡可能降低存取物件所需延遲的任何應用程式。這類應用程式可能是人為互動的工作流程 (例如影片編輯)，需要創意專業人員從其使用者介面回應內容。S3 Express One Zone 也有利於資料具有類似回應能力需求的分析和機器學習工作負載，特別是需進行許多小量存取或大量隨機存取的工作負載。S3 Express One Zone 可與其他 AWS 服務 搭配使用，以支援分析以及人工智慧和機器學習 (AI/ML) 工作負載，例如 Amazon EMR、Amazon SageMaker AI 和 Amazon Athena。

![\[顯示 S3 Express One Zone 運作方式的圖表。\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/s3-express-one-zone.png)


對於使用 S3 Express One Zone 儲存類別的目錄儲存貯體，資料會儲存在單一可用區域內的多個裝置，但不會以備援方式跨可用區域儲存資料。當您建立目錄儲存貯體以使用 S3 Express One Zone 儲存類別時，建議您指定 AWS 區域 和 可用區域，其位於 Amazon EC2、Amazon Elastic Kubernetes Service 或 Amazon Elastic Container Service (Amazon ECS) 運算執行個體的本機，以最佳化效能。

使用 S3 Express One Zone 時，您可以使用閘道 VPC 端點與虛擬私有雲端 (VPC) 中的目錄儲存貯體互動。您可以使用閘道端點從您的 VPC 存取 S3 Express One Zone，VPC 不需要網際網路閘道或 NAT 裝置，您也不需支付額外費用。

您可以在目錄儲存貯體中，使用許多與一般用途儲存貯體和其他儲存類別相同的 Amazon S3 API 操作和功能。其中包括適用於 Amazon S3 的掛載點、使用 Amazon S3 受管金鑰的伺服器端加密 (SSE-S3)、使用 AWS Key Management Service (AWS KMS) 金鑰的伺服器端加密 (SSE-KMS)、S3 批次操作和 S3 封鎖公開存取。您可以使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI)、 AWS SDKs 和 Amazon S3 REST API 來存取 S3 Express One Zone。 Amazon S3 

如需有關 S3 Express One Zone 的詳細資訊，請參閱下方主題。
+ [概觀](#s3-express-one-zone-overview)
+ [S3 Express One Zone 的功能](#s3-express-features)
+ [相關服務](#s3-express-related-services)
+ [後續步驟](#s3-express-next-steps)

### 概觀
<a name="s3-express-one-zone-overview"></a>

為了最佳化效能並降低延遲，S3 Express One Zone 導入了下列新概念。

#### 可用區域
<a name="s3-express-overview-az"></a>

Amazon S3 Express One Zone 儲存類別的設計可在單一可用區域內達到 99.95% 的可用性，並依照 [Amazon S3 服務水準協議](https://aws.amazon.com/s3/sla/)提供支援。使用 S3 Express One Zone，您的資料會以備援方式儲存在單一可用區域內的多部裝置上。S3 Express One Zone 的設計在於透過快速偵測並修復任何遺失的備援來處理並行裝置故障。如果現有裝置發生故障，S3 Express One Zone 會自動將請求轉送到可用區域內的新裝置。這種備援有助於確保存取可用區域內的資料不間斷。

可用區域是一個或多個獨立的資料中心，具備 AWS 區域中的備援電源、聯網和連線能力。建立目錄儲存貯體時，您可以選擇儲存貯體 AWS 區域 所在的可用區域和位置。

##### 單一可用區域
<a name="directory-buckets-availability-zone"></a>

當您建立目錄儲存貯體時，可選擇可用區域和 AWS 區域。

目錄儲存貯體使用 S3 Express One Zone 儲存類別，這是專供效能敏感應用程式使用所打造的類別。S3 Express One Zone 是第一款可讓您選取單一可用區域的 S3 儲存類別，還可選擇將物件儲存體與運算資源共置，藉此盡可能提供最高存取速度。

使用 S3 Express One Zone，您的資料會以備援方式儲存在單一可用區域內的多部裝置上。S3 Express One Zone 的設計可在單一可用區域內達到 99.95% 的可用性，並依照 [Amazon S3 服務水準協議](https://aws.amazon.com/s3/sla/)提供支援。如需詳細資訊，請參閱[可用區域](#s3-express-overview-az)

#### 端點和閘道 VPC 端點
<a name="s3-express-overview-endpoints"></a>

您可以透過地區端點對目錄儲存貯體執行儲存貯體管理 API 操作，這些操作也稱為地區端點 API 操作。區域端點 API 操作的範例包括 `CreateBucket` 和 `DeleteBucket`。建立目錄儲存貯體後，您可以使用區域 (Zone) 端點 API 操作來上傳和管理目錄儲存貯體中的物件。區域端點 API 操作可透過區域端點提供使用。區域端點 API 操作的範例包括 `PutObject` 和 `CopyObject`。

您可以使用閘道 VPC 端點從 VPC 存取 S3 Express One Zone。建立閘道端點後，您可以將其新增為路由表中的目標，用於從 VPC 到 S3 Express One Zone 的流量。如同使用 Amazon S3，使用閘道端點不需額外付費。如需如何設定閘道 VPC 端點的詳細資訊，請參閱 [目錄儲存貯體的網路](s3-express-networking.md)

#### 工作階段型授權
<a name="s3-express-overview-authorization"></a>

使用 S3 Express One Zone，您可以透過新的工作階段型機制來驗證和授權請求，此機制經過最佳化，可提供最低延遲。您可以使用 `CreateSession` 請求臨時憑證來提供低延遲的儲存貯體存取。這些臨時憑證的範圍會設為特定 S3 目錄儲存貯體。工作階段權杖只能搭配區域 (物件層級) 操作 ([CopyObject](directory-buckets-objects-copy.md) 除外) 使用。如需詳細資訊，請參閱[使用 `CreateSession` 授權區域端點 API 操作](s3-express-create-session.md)。

[S3 Express One Zone 支援的 AWS SDKs ](s3-express-SDKs.md#s3-express-getting-started-accessing-sdks) 會代表您處理工作階段建立和重新整理。為保護您的工作階段，臨時安全憑證會在 5 分鐘後過期。下載並安裝 AWS SDKs並設定必要的 AWS Identity and Access Management (IAM) 許可後，您就可以立即開始使用 API 操作。

### S3 Express One Zone 的功能
<a name="s3-express-features"></a>

下列 S3 功能適用於 S3 Express One Zone。如需支援 API 操作和不支援功能的完整清單，請參閱[目錄儲存貯體的不同之處](s3-express-differences.md)。

#### 存取管理與安全性
<a name="s3-express-features-access-management"></a>

您可以使用下列功能來稽核及管理存取權。根據預設，目錄儲存貯體為私有，只有明確獲得存取權的使用者才能存取。與可在儲存貯體、字首或物件標籤層級設定存取控制界限的一般用途儲存貯體不同的是，目錄儲存貯體的存取控制界限只會在儲存貯體層級設定。如需詳細資訊，請參閱[使用 IAM 授權地區端點 API 操作](s3-express-security-iam.md)。
+ [S3 封鎖公開存取](access-control-block-public-access.md) – 根據預設，所有 S3 封鎖公開存取設定都會在儲存貯體層級啟用。此預設設定無法修改。
+ [S3 物件擁有權](about-object-ownership.md) (預設為儲存貯體擁有者強制執行) – 目錄儲存貯體不支援存取控制清單 (ACL)。目錄儲存貯體會自動使用儲存貯體擁有者強制執行的 S3 物件擁有權設定。「儲存貯體擁有者強制執行」表示 ACL 已停用，且儲存貯體擁有者會自動擁有並完全控制儲存貯體中的每個物件。此預設設定無法修改。
+ [AWS Identity and Access Management (IAM)](s3-express-security-iam.md) – IAM 可協助您安全地控制對目錄儲存貯體的存取。您可以透過 `s3express:CreateSession` 動作，使用 IAM 授予存取儲存貯體管理 (地區) API 操作和物件管理 (區域) API 操作的權限。如需詳細資訊，請參閱[使用 IAM 授權地區端點 API 操作](s3-express-security-iam.md)。與物件管理動作不同的是，儲存貯體管理動作不可跨帳戶。只有儲存貯體擁有者可執行這些動作。
+ [儲存貯體政策](s3-express-security-iam-example-bucket-policies.md)：使用 IAM 型政策語言，為目錄儲存貯體設定以資源為基礎的許可。您還可以使用 IAM 來控制對 `CreateSession` API 操作的存取，讓您能夠使用區域或物件管理 API 操作。您可以授予相同帳戶或跨帳户存取區域 API 操作的權限。如需 S3 Express One Zone 許可和政策的詳細資訊，請參閱[使用 IAM 授權地區端點 API 操作](s3-express-security-iam.md)。
+ [IAM Access Analyzer for S3](access-analyzer.md) – 評估和監控您的存取政策，確保政策僅提供對 S3 資源的預期存取。

#### 日誌記錄和監控
<a name="s3-express-features-logging-monitoring"></a>

S3 Express One Zone 使用下列 S3 記錄和監控工具，您可以使用這些工具來監控和控制資源的使用方式：
+ [Amazon CloudWatch 指標](cloudwatch-monitoring.md) – 使用 CloudWatch 收集和追蹤指標來監控您的 AWS 資源和應用程式。S3 Express One Zone 使用與其他 Amazon S3 儲存類別 (`AWS/S3`) 相同的 CloudWatch 命名空間，並針對目錄儲存貯體支援每日儲存指標：`BucketSizeBytes` 和 `NumberOfObjects`。如需詳細資訊，請參閱[使用 Amazon CloudWatch 監控指標](cloudwatch-monitoring.md)。
+ [AWS CloudTrail 日誌](cloudtrail-logging-s3-info.md) – AWS CloudTrail 透過 AWS 帳戶 記錄使用者、角色或 採取的動作， AWS 服務 協助您實作 的操作和風險稽核、控管和合規 AWS 服務。對於 S3 Express One Zone，CloudTrail 會將地區端點 API 操作 (例如 `CreateBucket`和 `PutBucketPolicy`) 當做管理事件來擷取，並將區域 API 操作 (例如 `GetObject`和 `PutObject`) 當做資料事件來擷取。這些事件包括在 AWS 管理主控台、 AWS Command Line Interface (AWS CLI)、 AWS SDKs和 AWS API 操作中採取的動作。如需詳細資訊，請參閱[使用適用於 S3 Express One Zone 的 AWS CloudTrail 記錄](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone-logging.html)。

**注意**  
S3 Express One Zone 不支援 Amazon S3 伺服器存取日誌。

#### 物件管理
<a name="s3-express-features-object-management"></a>

您可以使用 Amazon S3 主控台、 AWS SDKs和 來管理物件儲存 AWS CLI。下列功能適用於 S3 Express One Zone 的物件管理：
+ [S3 批次操作](batch-ops-create-job.md) – 使用批次操作對目錄儲存貯體中的物件執行大量操作，例如**複製**和**叫用 AWS Lambda 函數**。例如，您可以使用 Batch Operations 在目錄儲存貯體和一般用途儲存貯體之間複製物件。透過批次操作，您可以使用 AWS SDKs或 AWS CLI 或在 Amazon S3 主控台中按幾下滑鼠，透過單一 S3 請求大規模管理數十億個物件。 Amazon S3 
+ [匯入](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job.html)：建立目錄儲存貯體之後，您可以使用 Amazon S3 主控台中的匯入功能將物件填入儲存貯體。匯入是用來建立 Batch Operations 任務的簡化方法，可將物件從一般用途儲存貯體複製到目錄儲存貯體。

#### AWS SDKs和用戶端程式庫
<a name="s3-express-features-client-libraries"></a>

 您可以使用 AWS SDKs和用戶端程式庫來管理物件儲存。
+ [適用於 Amazon S3 的掛載點](https://github.com/awslabs/mountpoint-s3/blob/main/doc/SEMANTICS.md) – 適用於 Amazon S3 的掛載點是開放原始碼檔案用戶端，可提供高輸送量存取，並降低 Amazon S3 上資料湖的運算成本。適用於 Amazon S3 的掛載點可將本機檔案系統 API 呼叫轉譯成 S3 物件 API 呼叫，例如 `GET` 和 `LIST`。它非常適合用於處理 PB 級資料量，且需要 Amazon S3 提供的高彈性輸送量來擴展和縮減數千個執行個體的大量讀取資料湖工作負載。
+ [https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html#Introducing_the_Hadoop_S3A_client](https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html#Introducing_the_Hadoop_S3A_client) – S3A 是存取 Amazon S3 中的資料存放區時，建議使用的 Hadoop 相容介面。S3A 會取代 S3N Hadoop 檔案系統用戶端。
+ [PyTorch on AWS](https://docs.aws.amazon.com//sagemaker/latest/dg/pytorch.html) – PyTorch on AWS 是一種開放原始碼深度學習架構，可讓您更輕鬆地開發機器學習模型並將其部署到生產環境。
+ [AWS SDKs](https://aws.amazon.com//developer/tools/) – 您可以在使用 Amazon S3 開發應用程式時使用 AWS SDKs。 AWS SDKs 透過包裝基礎 Amazon S3 REST API 來簡化您的程式設計任務。如需搭配 S3 Express One Zone 使用 AWS SDKs 的詳細資訊，請參閱 [AWS SDKs](s3-express-SDKs.md#s3-express-getting-started-accessing-sdks)。

### 加密和資料保護
<a name="s3-express-features-encryption"></a>

S3 Express One Zone 中的物件會使用 Amazon S3 受管金鑰的伺服器端加密 (SSE-S3) 來自動加密。S3 Express One Zone 也支援使用 AWS Key Management Service (AWS KMS) 金鑰的伺服器端加密 (SSE-KMS)。S3 Express One Zone 不支援使用客戶提供加密金鑰的伺服器端加密 (SSE-C)，也不支援使用 AWS KMS keys 的雙層伺服器端加密 (DSSE-KMS)。如需詳細資訊，請參閱[資料保護和加密](s3-express-data-protection.md)。

S3 Express One Zone 可讓您選擇用於在上傳或下載過程中驗證資料的檢查總和演算法選項。您可以選擇以下 Secure Hash 演算法 (SHA) 或循環宂餘檢查 (CRC) 資料完整性演算法之一：CRC32、CRC32C、SHA-1 和 SHA-256。S3 Express One Zone 儲存類別不支援 MD5 型檢查總和。

如需詳細資訊，請參閱[S3 其他檢查總和最佳實務](s3-express-optimizing-performance.md#s3-express-optimizing-performance-checksums)。

### AWS Signature 第 4 版 (SigV4)
<a name="s3-express-features-sigv4"></a>

S3 Express One Zone 使用 AWS Signature 第 4 版 (SigV4)。 SigV4 是一種簽署通訊協定，用於透過 HTTPS 驗證對 Amazon S3 的請求。S3 Express One Zone 使用 簽署請求 AWS Sigv4。如需詳細資訊，請參閱《*Amazon Simple Storage Service API 參考*》中的[驗證請求 (AWS 簽章版本 4)](https://docs.aws.amazon.com//AmazonS3/latest/API/sig-v4-authenticating-requests.html)。

### 高度的一致性
<a name="s3-express-features-strong-consistency"></a>

S3 Express One Zone 為所有 `PUT` 之目錄儲存貯體中物件的 `DELETE` 和 AWS 區域請求提供高度的先寫後讀一致性。如需詳細資訊，請參閱[Amazon S3 資料一致性模式](Welcome.md#ConsistencyModel)。

### 相關服務
<a name="s3-express-related-services"></a>

您可以 AWS 服務 搭配 S3 Express One Zone 儲存類別使用下列項目，以支援特定的低延遲使用案例。
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/index.html) – Amazon EC2 在 AWS 雲端中提供了安全且可擴展的運算容量。使用 Amazon EC2 可減少前期所需的硬體投資，讓您更快速開發並部署應用程式。您可使用 Amazon EC2 按需要啟動任意數量的虛擬伺服器，設定安全性和聯網功能以及管理儲存。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html.html)：Lambda 是一項運算服務，可讓您執行程式碼，而無需佈建或管理伺服器。您在儲存貯體上設定通知設定，並授予 Amazon S3 許可以在函數以資源為基礎的許可政策上叫用函數。
+ [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) – Amazon EKS 是一種受管服務，無需安裝、操作和維護您自己的Kubernetes控制平面 AWS。 [https://kubernetes.io/docs/concepts/overview/](https://kubernetes.io/docs/concepts/overview/) 是一種開放原始碼系統，可自動化容器化應用程式的管理、擴展和部署。
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)：Amazon ECS 為全受管容器協同運作服務，可讓您輕鬆部署、管理和擴展容器化應用程式。
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) – AWS Key Management Service (AWS KMS) 是一種 AWS 受管服務，可讓您輕鬆建立和控制用來加密資料的加密金鑰。您在 AWS KMS 中 AWS 建立的 KMS 金鑰受到 FIPS 140-2 驗證的硬體安全模組 (HSM) 保護。若要使用或管理您的 KMS 金鑰，您會與 AWS KMS 互動。
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html)：Athena 是一種互動式查詢服務，可讓您使用標準 [SQL](https://docs.aws.amazon.com/athena/latest/ug/ddl-sql-reference.html) 直接輕鬆分析 Amazon S3 中的資料。您還可以使用 Athena 以互動方式使用 Apache Spark 執行資料分析，而不必規劃、設定或管理資源。當您在 Athena 執行 Apache Spark 應用程式時，可提交 Spark 程式碼進行處理，並直接接收結果。
+ [Amazon SageMaker Training](https://docs.aws.amazon.com//sagemaker/latest/dg/how-it-works-training.html) – 檢閱使用 Amazon SageMaker 訓練模型的選項，包括內建演算法、自訂演算法、程式庫和 AWS Marketplace 中的模型。
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) – AWS Glue 是一種無伺服器資料整合服務，可讓分析使用者輕鬆地探索、準備、移動和整合來自多個來源的資料。您可以使用 AWS Glue 進行分析、機器學習和應用程式開發。 AWS Glue 也包含用於撰寫、執行任務和實作業務工作流程的額外生產力和資料操作工具。
+ [Amazon EMR](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-what-is-emr.html) – Amazon EMR 是受管叢集平台，可簡化在 上執行大數據架構，例如 Apache Hadoop和 Apache Spark， AWS 以處理和分析大量資料。
+ [AWS CloudTrail](https://docs.aws.amazon.com//awscloudtrail/latest/userguide/cloudtrail-user-guide.html) – AWS CloudTrail 是一項 AWS 服務，可協助您啟用 AWS 帳戶的營運和風險稽核、控管和合規。使用者、角色或服務採取的動作 AWS 會在 CloudTrail 中記錄為事件。事件包括在 AWS 管理主控台、 AWS 命令列界面，以及 AWS SDKs和 APIs中採取的動作。
+ [AWS CloudFormation ](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/Welcome.html) – 是一項服務，可協助您建立和設定 AWS 資源的模型，以減少管理這些資源的時間，並有更多時間專注於在其中執行的應用程式 AWS。您可以建立範本來描述您想要的所有 AWS 資源 （例如 Amazon EC2 執行個體或 Amazon RDS 資料庫執行個體），而 CloudFormation 會負責為您佈建和設定這些資源。您不需要個別建立和設定 AWS 資源，並找出什麼取決於；CloudFormation 會處理該資源。

### 後續步驟
<a name="s3-express-next-steps"></a>

如需有關使用 S3 Express One Zone 儲存類別與目錄儲存貯體的詳細資訊，請參閱下方主題：
+ [教學課程：開始使用 S3 Express One Zone](s3-express-getting-started.md)
+ [S3 Express One Zone 可用區域和區域](s3-express-Endpoints.md)
+ [可用區域中目錄儲存貯體的網路](directory-bucket-az-networking.md)
+ [在可用區域中建立目錄儲存貯體](directory-bucket-create.md)
+ [可用區域中目錄儲存貯體的地區與區域端點](endpoint-directory-buckets-AZ.md)
+ [最佳化 S3 Express 單區域效能](s3-express-performance.md)

# 教學課程：開始使用 S3 Express One Zone
<a name="s3-express-getting-started"></a>

Amazon S3 Express One Zone 是第一款可讓您選取單一可用區域的 S3 儲存類別，還可選擇將物件儲存體與運算資源共置，藉此盡可能提供最高存取速度。S3 Express One Zone 中的資料會儲存在位於可用區域的目錄儲存貯體中。如需目錄儲存貯體的詳細資訊，請參閱[目錄儲存貯體](https://docs.aws.amazon.com//AmazonS3/latest/userguide/directory-buckets-overview.html)。

 S3 Express One Zone 非常適合必須盡可能降低請求延遲的任何應用程式。這類應用程式可能是人為互動的工作流程 (例如影片編輯)，需要創意專業人員從其使用者介面回應內容。S3 Express One Zone 也有利於資料具有類似回應能力要求的分析和機器學習工作負載，特別是需進行許多小量存取或大量隨機存取的工作負載。S3 Express One Zone 可以與其他 AWS 服務搭配使用，例如 Amazon EMR、Amazon Athena、 AWS Glue Data Catalog 和 Amazon SageMaker Model Training，以支援分析、人工智慧和機器學習 (AI/ML) 工作負載。您可以使用 Amazon S3 主控台、 AWS SDKs、 AWS 命令列界面 (AWS CLI) 和 Amazon S3 REST API 來使用 Amazon S3 Express One Zone 儲存類別和目錄儲存貯體。 Amazon S3 如需詳細資訊，請參閱[什麼是 S3 Express One Zone](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-one-zone.html) 和 [S3 Express One Zone 有什麼不同](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-differences.html)。

![\[這是 S3 Express One Zone 工作流程圖。\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/s3-express-one-zone.png)


**目標**  
在本教學課程中，您將了解如何建立閘道端點、建立和連接 IAM 政策、建立目錄儲存貯體，然後使用匯入動作，將目前儲存在一般用途儲存貯體中的物件填入目錄儲存貯體。或者，您可以手動將物件上傳至目錄儲存貯體。

**Topics**
+ [先決條件](#s3-express-tutorial-prerequisites)
+ [步驟 1：設定閘道 VPC 端點以到達 S3 Express One Zone 目錄儲存貯體](s3-express-tutorial-endpoints.md)
+ [步驟 2：建立 S3 Express One Zone 目錄儲存貯體](s3-express-tutorial-create-directory-bucket.md)
+ [步驟 3：將資料匯入 S3 Express One Zone 目錄儲存貯體](s3-express-tutorial-Import.md)
+ [步驟 4：手動將物件上傳至您的 S3 Express One Zone 目錄儲存貯體](s3-express-tutorial-Upload.md)
+ [步驟 5：清空 S3 Express One Zone 目錄儲存貯體](s3-express-tutoiral-Empty.md)
+ [步驟 6：刪除 S3 Express One Zone 目錄儲存貯體](s3-express-tutoiral-Delete.md)
+ [後續步驟](#s3-express-tutoiral-Next)

## 先決條件
<a name="s3-express-tutorial-prerequisites"></a>

開始本教學課程之前，您必須擁有 AWS 帳戶 ，以具有正確許可的 AWS Identity and Access Management (IAM) 使用者身分登入 。

**Topics**
+ [建立 AWS 帳戶](#s3-express-create-account)
+ [在 AWS 帳戶 （主控台） 中建立 IAM 使用者](#s3-express-tutorial-user)
+ [建立 IAM 政策並將其連接至 IAM 使用者或角色 (主控台)](#s3-express-tutorial-polict)

### 建立 AWS 帳戶
<a name="s3-express-create-account"></a>

若要完成本教學課程，您需要 AWS 帳戶。當您註冊 時 AWS，您的 AWS 帳戶 會自動註冊 中的所有服務 AWS，包括 Amazon S3。您只需支付實際使用服務的費用。如需定價的詳細資訊，請參閱 [S3 定價](https://aws.amazon.com/s3/pricing/)。

### 在 AWS 帳戶 （主控台） 中建立 IAM 使用者
<a name="s3-express-tutorial-user"></a>

AWS Identity and Access Management (IAM) 是一種 AWS 服務 ，可協助管理員安全地控制對 AWS 資源的存取。IAM 管理員可控制哪些人員可進行身分驗證 (登入) 並獲得授權 (具有許可)，以在 S3 Express One Zone 中存取物件並使用目錄儲存貯體。您可以免費使用 IAM。

根據預設，使用者未具備存取目錄儲存貯體和執行 S3 Express One Zone 操作的許可。若要授予存取目錄儲存貯體和 S3 Express One Zone 操作的許可，您可以使用 IAM 建立使用者或角色，並將許可附加至這些身分。如需如何建立 IAM 使用者的詳細資訊，請參閱《*IAM 使用者指南》*中的[建立 IAM 政策 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console)。如需如何建立 IAM 角色的詳細資訊，請參閱《IAM 使用者指南》**中的[建立角色以委派許可給 IAM 使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)。

為了簡單起見，本教學課程會建立和使用 IAM 使用者。完成本教學課程後，請記得 [刪除 IAM 使用者](tutorial-s3-object-lambda-uppercase.md#ol-upper-step8-delete-user)。針對生產使用，我們建議您遵循《IAM 使用者指南》**中的 [IAM 中的安全最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。其中一項最佳實務是，要求人類使用者搭配身分提供者使用聯合功能，以便使用暫時性憑證存取 AWS 。另一項最佳實務要求工作負載使用臨時性憑證和 IAM 角色來存取 AWS。若要進一步了解如何使用 AWS IAM Identity Center 建立具有臨時登入資料的使用者，請參閱*AWS IAM Identity Center 《 使用者指南*》中的[入門](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)。

**警告**  
IAM 使用者具有長期憑證，這會造成安全風險。為了協助降低此風險，建議您只為這些使用者提供執行任務所需的許可，並在不再需要這些使用者時將其移除。

### 建立 IAM 政策並將其連接至 IAM 使用者或角色 (主控台)
<a name="s3-express-tutorial-polict"></a>

根據預設，使用者未具備執行目錄儲存貯體和 S3 Express One Zone 操作的許可。若要授予存取目錄儲存貯體的許可，您可以使用 IAM 建立使用者、群組或角色，並將許可附加至這些身分。目錄儲存貯體是唯一可以包含在儲存貯體政策或 IAM 身分政策中，以提供 S3 Express One Zone 存取權的資源。

若要搭配 S3 Express One Zone 使用地區端點 API 操作 (儲存貯體層級或控制平面操作)，您可以使用不涉及工作階段管理的 IAM 授權模型。動作的許可會個別授予。若要使用區域端點 API 操作 (物件層級或資料平面操作)，您可以使用 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html) 來建立和管理工作階段，這些工作階段經過最佳化，可提供低延遲的資料請求授權。若要擷取和使用工作階段權杖，您必須在身分型政策或儲存貯體政策中允許目錄儲存貯體的 `s3express:CreateSession` 動作。如果您在 Amazon S3 主控台、透過 AWS 命令列界面 (AWS CLI) 或使用 AWS SDKs 存取 S3 Express One Zone，S3 Express One Zone 會代表您建立工作階段。 Amazon S3 如需詳細資訊，請參閱[`CreateSession` 授權](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-create-session.html)和[適用於 S3 Express One Zone 的AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam.html)。

**建立 IAM 政策並將該政策連接至 IAM 使用者 (或角色)**

1. 登入 AWS 管理主控台並開啟 IAM 管理主控台。

1. 在導覽窗格中，選擇**政策**。

1. 選擇**建立政策**。

1. 選取 **JSON**。

1. 將以下政策複製到**政策編輯器**視窗。您必須先將必要的許可授予 AWS Identity and Access Management (IAM) 角色或使用者，才能建立目錄儲存貯體或使用 S3 Express One Zone。此範例政策允許存取 `CreateSession` API 操作 (搭配區域端點或物件層級 API 操作使用) 和所有地區端點 (儲存貯體層級) API 操作。此政策允許 `CreateSession` API 操作搭配所有目錄儲存貯體使用，但僅允許區域端點 API 操作搭配指定的目錄儲存貯體使用。若要使用此範例政策，請以您自己的資訊取代 `user input placeholders`。

------
#### [ JSON ]

****  

   ```
   {
        "Version":"2012-10-17",		 	 	 
        "Statement": [ 
            {
                "Sid": "AllowAccessRegionalEndpointAPIs",
                "Effect": "Allow",
                "Action": [
                    "s3express:DeleteBucket",
                    "s3express:DeleteBucketPolicy",
                    "s3express:CreateBucket",
                    "s3express:PutBucketPolicy",
                    "s3express:GetBucketPolicy",
                    "s3express:ListAllMyDirectoryBuckets"
                ],
   
                "Resource": "arn:aws:s3express:us-east-1:111122223333:bucket/amzn-s3-demo-bucket--usw2-az1--x-s3/*"
            },
            {
                "Sid": "AllowCreateSession",
                "Effect": "Allow",
                "Action": "s3express:CreateSession",
                "Resource": "*"
            }
        ]
    }
   ```

------

1. 選擇**下一步**。

1. 命名政策。
**注意**  
S3 Express One Zone 不支援儲存貯體標籤。

1. 選取**建立政策**。

1.  現在您已建立 IAM 政策，您可以將其連接至 IAM 使用者。在導覽窗格中，選擇**政策**。

1. 在**搜尋列**中，輸入您的政策名稱。

1. 從**動作**功能表，選取**連接**。

1. 在**依實體類型篩選**下，選取 **IAM 使用者**或**角色**。

1. 在**搜尋欄位**中，輸入您要使用的使用者或角色名稱。

1. 選擇 **Attach Policy (連接政策)**。

**Topics**
+ [建立 AWS 帳戶](#s3-express-create-account)
+ [在 AWS 帳戶 （主控台） 中建立 IAM 使用者](#s3-express-tutorial-user)
+ [建立 IAM 政策並將其連接至 IAM 使用者或角色 (主控台)](#s3-express-tutorial-polict)

# 步驟 1：設定閘道 VPC 端點以到達 S3 Express One Zone 目錄儲存貯體
<a name="s3-express-tutorial-endpoints"></a>

 您可以透過閘道虛擬私有雲端 (VPC) 端點存取區域 (Zone) 和區域 (Region) API 操作。閘道端點可以允許流量在無需周遊 NAT 閘道的情況下到達 S3 Express One Zone。強烈建議您使用閘道端點，以便在使用 S3 Express One Zone 時提供最佳的網路路徑。您可以從 VPC 存取 S3 Express One Zone 目錄儲存貯體，VPC 不需要網際網路閘道或 NAT 裝置，您也不需支付額外費用。下列程序可用來設定連線至 S3 Express One Zone 儲存類別物件和目錄儲存貯體的閘道端點。

若要存取 S3 Express One Zone，可使用與標準 Amazon S3 端點不同的區域 (Region) 和區域 (Zone) 端點。需要區域 (Zone) 或區域 (Region) 端點，取決於您使用的 Amazon S3 API 操作。如需依端點類型列出的支援 API 操作完整清單，請參閱 [S3 Express One Zone 支援的 API 操作](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-differences.html#s3-express-differences-api-operations)。您必須透過閘道虛擬私有雲端 (VPC) 端點存取區域 (Zone) 和區域 (Region) 端點。

 下列程序可用來建立連線至 S3 Express One Zone 儲存類別物件和目錄儲存貯體的閘道端點。

**設定閘道 VPC 端點**

1. 開啟 Amazon VPC 主控台，位於 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

1. 在側邊導覽窗格中的**虛擬私有雲端**下，選擇**端點**。

1. 選擇**建立端點**。

1. 建立端點的名稱。

1. 對於 **Service category** (服務類別)，選擇 **AWS 服務**。

1. 在**服務**下，使用篩選條件 **Type=Gateway** 進行搜尋，然後選擇 **com.amazonaws.*region*.s3express** 旁邊的選項按鈕。

1. 針對 **VPC**，選擇要在其中建立端點的 VPC。

1. 針對**路由表**，選擇您本機區域上的路由表，供端點使用。建立端點之後，路由記錄會新增至您在此步驟中選取的路由表。

1. 針對**政策**，選擇**完整存取**，以允許 VPC 端點上所有資源的所有主體進行所有操作。否則，選擇**自訂**以連接 VPC 端點政策，該政策會控制主體在 VPC 端點上對資源執行操作的許可。

1. 針對 **IP address type** (IP 地址類型)，從下列選項中選擇：
   +  **IPv4** – 將 IPv4 地址指派給端點網路介面。只有當所有選取的子網路都具有 IPv4 地址範圍，且此服務接受 IPv4 請求時，才支援此選項。
   +  **IPv6** – 將 IPv6 地址指派給端點網路介面。只有當所有選取的子網路都是僅限 IPv6 子網路，且此服務接受 IPv6 請求時，才支援此選項。
   +  **Dualstack** – 將 IPv4 和 IPv6 地址指派給端點網路介面。只有當所有選取的子網路都具有 IPv4 和 IPv6 地址範圍，且此服務接受 IPv4 和 IPv6 請求時，才支援此選項。

1. (選用) 若要新增標籤，請選擇**新增標籤**，然後輸入標籤金鑰和標籤值。

1. 選擇**建立端點**。

建立閘道端點後，您可以使用區域 (Region) API 端點和區域 (Zone) API 端點存取 Amazon S3 Express One Zone 儲存類別物件和目錄儲存貯體。

# 步驟 2：建立 S3 Express One Zone 目錄儲存貯體
<a name="s3-express-tutorial-create-directory-bucket"></a>

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 開啟 Amazon S3 主控台。

1. 在頁面頂端的導覽列中，選擇目前顯示的名稱 AWS 區域。​接下來，選擇您要在其中建立儲存貯體的區域。
**注意**  
請選擇接近您的區域，以充分降低延遲及成本，並因應法規要求。除非您明確地將儲存在區域中的物件傳輸到其他區域，否則物件絕對不會離開該區域。如需 Amazon S3 AWS 區域的清單，請參閱 中的[AWS 服務 端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)*Amazon Web Services 一般參考*。

1. 在左側導覽窗格中，選擇**目錄儲存貯體**。

1. 選擇 **Create bucket** (建立儲存貯體)。**Create bucket (建立儲存貯體)** 頁面隨即開啟。

1. 在**一般組態**下，檢視要建立儲存貯 AWS 區域 體的 。

   針對**儲存貯體類型**，選擇**目錄**。
**注意**  
如果您已選擇不支援目錄儲存貯體的區域，**儲存貯體類型**選項會消失，且儲存貯體類型預設為一般用途儲存貯體。若要建立目錄儲存貯體，您必須選擇支援的區域。如需支援目錄儲存貯體和 Amazon S3 Express One Zone 儲存類別的區域清單，請參閱[S3 Express One Zone 可用區域和區域](s3-express-Endpoints.md)。
在您建立儲存貯體之後，便無法變更儲存貯體類型。
**注意**  
儲存貯體建立之後，就無法變更可用區域。

1. 針對**可用區域**，選擇運算服務本機上的可用區域。如需支援目錄儲存貯體和 S3 Express One Zone 儲存類別的可用區域清單，請參閱[S3 Express One Zone 可用區域和區域](s3-express-Endpoints.md)。

   在**可用區域**下，選取核取方塊，表示您確實了解在可用區域發生中斷時，您的資料可能無法使用或遺失。
**重要**  
雖然目錄儲存貯體會儲存在單一可用區域內的多部裝置，但不會以備援方式跨可用區域儲存資料。

1. 針對**儲存貯體名稱**，輸入您的目錄儲存貯體的名稱。

   目錄儲存貯體適用下列命名規則。
   + 在所選區域內是唯一的 (AWS 可用區域或 AWS 本機區域）。
   + 名稱長度必須介於 3 (最小值) 到 63 (最大值) 個字元之間，包括字尾在內。
   + 只能由小寫字母、數字和連字號 (-) 組成。
   + 開頭和結尾為字母或數字。
   + 必須包含下列字尾：`--zone-id--x-s3`。
   + 儲存貯體名稱必須以字首 `xn--` 開頭。
   + 儲存貯體名稱必須以字首 `sthree-` 開頭。
   + 儲存貯體名稱必須以字首 `sthree-configurator` 開頭。
   + 儲存貯體名稱必須以字首 ` amzn-s3-demo-` 開頭。
   + 儲存貯體名稱不得以尾碼 `-s3alias` 結尾。存取點別名名稱會保留此尾碼。如需詳細資訊，請參閱[存取點別名](access-points-naming.md#access-points-alias)。
   + 儲存貯體名稱不得以尾碼 `--ol-s3` 結尾。Object Lambda 存取點別名名稱會保留此尾碼。如需詳細資訊，請參閱[如何針對您的 S3 儲存貯體 Object Lambda 存取點使用儲存貯體樣式別名](olap-use.md#ol-access-points-alias)。
   + 儲存貯體名稱不得以尾碼 `.mrap` 結尾。多區域存取點名稱會保留此字尾。如需詳細資訊，請參閱[命名 Amazon S3 多區域存取點的規則](multi-region-access-point-naming.md)。

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

   建立儲存貯體後，便無法變更其名稱。如需儲存貯體命名的詳細資訊，請參閱 [一般用途儲存貯體命名規則](bucketnamingrules.md)。
**重要**  
請勿在儲存貯體名稱中包含敏感資訊，例如帳號。在指向儲存貯體中之物件的 URL 中，會顯示儲存貯體名稱。

1. 在**物件擁有權**下，會自動啟用**儲存貯體擁有者強制執行**設定，並停用所有存取控制清單 (ACL)。您無法針對目錄儲存貯體啟用 ACL。

    **儲存貯體擁有者強制執行 (預設)** - 停用 ACL，儲存貯體擁有者會自動擁有並完全控制一般用途儲存貯體中的每個物件。ACL 不再影響 S3 一般用途儲存貯體中資料的存取許可。儲存貯體單獨使用政策來定義存取控制。

1. 在**此儲存貯體的「封鎖公開存取」設定**下，會自動啟用您目錄儲存貯體的所有封鎖公開存取設定。您無法修改目錄儲存貯體的這些設定。如需封鎖公開存取的詳細資訊，請參閱 [封鎖對 Amazon S3 儲存體的公開存取權](access-control-block-public-access.md)。

1. 若要設定預設加密，請在**加密類型**下，選擇下列其中一項：
   + **使用 Amazon S3 受管金鑰 (SSE-S3) 的伺服器端加密**
   + **伺服器端加密與 AWS Key Management Service 金鑰 (SSE-KMS)**

   如需有關使用 Amazon S3 伺服器端加密來加密資料的詳細資訊，請參閱「[資料保護和加密](s3-express-data-protection.md)」。
**重要**  
如果您針對預設加密組態使用 SSE-KMS 選項，則受到 AWS KMS的每秒請求數目 (RPS) 限制。如需 AWS KMS 配額以及如何請求提高配額的詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[配額](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)。  
啟用預設加密時，您可能需要更新儲存貯體政策。如需詳細資訊，請參閱[針對跨帳戶操作使用 SSE-KMS 加密](bucket-encryption.md#bucket-encryption-update-bucket-policy)。

1. 如果選擇**使用 Amazon S3 受管金鑰 (SSE-S3) 的伺服器端加密**，則**儲存貯體金鑰**下會顯示**已啟用**。當您將目錄儲存貯體設定為搭配 SSE-S3 使用預設加密時，一律啟用 S3 儲存貯體金鑰。目錄儲存貯體中的 `GET` 和 `PUT` 操作一律會啟用 S3 儲存貯體金鑰，且無法停用。當您透過 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)、[Batch Operations 中的 Copy 操作](directory-buckets-objects-Batch-Ops.md)或 [import 作業](create-import-job.md)，將 SSE-KMS 加密物件從一般用途儲存貯體複製到目錄儲存貯體、從目錄儲存貯體複製到一般用途儲存貯體或在目錄儲存貯體之間複製時，不支援 S3 儲存貯體金鑰。在此情況下，Amazon S3 AWS KMS 會在每次對 KMS 加密物件提出複製請求時呼叫 。

   S3 儲存貯體金鑰透過減少來自 Amazon S3 的請求流量來降低加密成本 AWS KMS。如需詳細資訊，請參閱[使用 Amazon S3 儲存貯體金鑰降低 SSE-KMS 的成本](bucket-key.md)。

1. 如果您選擇**使用 AWS Key Management Service 金鑰的伺服器端加密 (SSE-KMS)**，請在** AWS KMS 金鑰**下，以下列其中一種方式指定您的 AWS Key Management Service 金鑰，或建立新的金鑰。
   + 若要從可用的 KMS 金鑰清單中選擇，請選擇**從中選擇 AWS KMS keys**，然後從**可用的 AWS KMS keys**中選擇您的 **KMS 金鑰**。

     此清單中只會出現您的客戶自管金鑰。目錄儲存貯體不支援 AWS 受管金鑰 (`aws/s3`)。如需詳細了解客戶受管金鑰，請參閱《AWS Key Management Service 開發人員指南》**中的[客戶金鑰和 AWS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt)。
   + 若要輸入 KMS 金鑰 ARN 或別名，請選擇**輸入 AWS KMS key ARN**，然後在 ARN 中輸入您的 KMS 金鑰 **AWS KMS key ARN** 或別名。
   + 若要在 AWS KMS 主控台中建立新的客戶受管金鑰，請選擇**建立 KMS 金鑰**。

     如需建立 的詳細資訊 AWS KMS key，請參閱《 *AWS Key Management Service 開發人員指南*》中的[建立金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)。
**重要**  
您的 SSE-KMS 組態在儲存貯體的生命週期內，每個目錄儲存貯體只能支援 1 個[客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。不支援 [https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) (`aws/s3`)。此外，為 SSE-KMS 指定客戶自管金鑰之後，即無法覆寫儲存貯體 SSE-KMS 組態的客戶自管金鑰。  
您可以透過下列方式識別為儲存貯體的 SSE-KMS 組態指定的客戶自管金鑰：  
您可以提出 `HeadObject` API 操作請求，在回應中尋找 `x-amz-server-side-encryption-aws-kms-key-id` 的值。
若要為資料使用新的客戶自管金鑰，建議您使用新的客戶自管金鑰，將現有的物件複製到新的目錄儲存貯體。
您只能使用 AWS 區域 與儲存貯體相同的 KMS 金鑰。Amazon S3 主控台僅會列出與儲存貯體位於相同區域的前 100 個 KMS 金鑰。若要使用未列出的 KMS 金鑰，必須輸入 KMS 金鑰 ARN。若您想要使用其他帳戶的 KMS 金鑰，您必須先具有該金鑰的使用權限，然後輸入 KMS 金鑰 ARN。如需詳細了解 KMS 金鑰跨帳戶權限，請參閱《AWS Key Management Service 開發人員指南》**中的[建立其他帳戶可使用的 KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console)。如需 SSE-KMS 的詳細資訊，請參閱 [使用 AWS KMS (SSE-KMS) 為目錄儲存貯體中的新物件上傳指定伺服器端加密](s3-express-specifying-kms-encryption.md)。
當您在目錄儲存貯體中使用 AWS KMS key 進行伺服器端加密時，您必須選擇對稱加密 KMS 金鑰。Amazon S3 僅支援對稱加密 KMS 金鑰，而不支援非對稱 KMS 金鑰。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[識別對稱和非對稱 KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html)。

   如需 AWS KMS 搭配 Amazon S3 使用 的詳細資訊，請參閱 [在目錄儲存貯體中使用伺服器端加密與 AWS KMS 金鑰 (SSE-KMS)](s3-express-UsingKMSEncryption.md)。

1. 選擇**建立儲存貯體**。建立儲存貯體之後，您可以新增檔案和資料夾至儲存貯體。如需詳細資訊，請參閱[使用目錄儲存貯體中的物件](directory-buckets-objects.md)。

# 步驟 3：將資料匯入 S3 Express One Zone 目錄儲存貯體
<a name="s3-express-tutorial-Import"></a>

若要完成此步驟，您必須擁有包含物件的一般用途儲存貯體，且位於 AWS 區域 與目錄儲存貯體相同的 中。

在 Amazon S3 中建立目錄儲存貯體之後，您可以在 Amazon S3 主控台中使用匯入動作將資料填入新的儲存貯體。匯入可讓您選擇要從中匯入資料的字首或一般用途儲存貯體，無需指定要個別複製的所有物件，從而簡化將資料複製到目錄儲存貯體的過程。匯入使用 S3 Batch Operations 來複製所選字首或一般用途儲存貯體中的物件。您可以透過 S3 Batch Operations 作業詳細資訊頁面監控匯入複製作業的進度。

**使用匯入動作**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 在頁面頂端的導覽列中，選擇目前顯示的 AWS 區域名稱。接下來，選擇與您目錄儲存貯體所在可用區域相關聯的區域。

1. 在左側導覽窗格中，選擇**目錄儲存貯體**。

1. 選擇要將物件匯入其中的儲存貯體名稱旁的選項按鈕。

1. 選擇**匯入**。

1. 針對**來源**，輸入包含要匯入之物件的一般用途儲存貯體 (或包含字首的儲存貯體路徑)。若要從清單中選擇現有的一般用途儲存貯體，請選擇**瀏覽 S3**。

1.  在**許可**區段中，您可以選擇自動產生 IAM 角色。或者，您可以從清單中選取 IAM 角色，或直接輸入 IAM 角色 ARN。
   + 若要允許 Amazon S3 代表您建立新的 IAM 角色，請選擇**建立新的 IAM 角色**。
**注意**  
如果來源物件是採用使用 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 的伺服器端加密進行加密，請不要選擇**建立新的 IAM 角色**選項。請改為指定具有 `kms:Decrypt` 許可的現有 IAM 角色。  
Amazon S3 將使用此許可來解密您的物件。在匯入過程中，Amazon S3 將使用伺服器端加密與 Amazon S3 受管金鑰 (SSE-S3) 重新加密這些物件。
   + 若要從清單中選擇現有的 IAM 角色，請選擇**從現有的 IAM 角色中選擇**。
   + 若要透過輸入 Amazon Resource Name (ARN) 來指定現有的 IAM 角色，請選擇**輸入 IAM 角色 ARN**，然後在對應的欄位中輸入 ARN。

1. 檢閱**目的地**和**複製物件設定**區段中顯示的資訊。如果**目的地**區段中的資訊正確無誤，請選擇**匯入**以開始複製任務。

   Amazon S3 主控台會在 **Batch Operations** 頁面上顯示新任務的狀態。如需有關任務的詳細資訊，請選擇任務名稱旁的選項按鈕，然後在**動作**選單上選擇**檢視詳細資訊**。若要開啟要將物件匯入其中的目錄儲存貯體，請選擇**檢視匯入目的地**。

# 步驟 4：手動將物件上傳至您的 S3 Express One Zone 目錄儲存貯體
<a name="s3-express-tutorial-Upload"></a>

您也可以手動將物件上傳至目錄儲存貯體。

**手動上傳物件**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 開啟 Amazon S3 主控台。

1. 在頁面右上角的導覽列中，選擇目前顯示的名稱 AWS 區域。接下來，選擇與您目錄儲存貯體所在可用區域相關聯的區域。

1. 在左側導覽窗格中，選擇**目錄儲存貯體**。

1. 選擇您要上傳資料夾和檔案的目的地儲存貯體名稱。
**注意**  
 如果您選擇與本教學課程先前步驟中使用的相同目錄儲存貯體，您的目錄儲存貯體將包含從匯入工具上傳的物件。請注意，這些物件現在會儲存在 S3 Express One Zone 儲存類別中。

1. 在**物件**清單中，選擇**上傳**。

1. 在**上傳**頁面上，執行下列任一步驟：
   + 將檔案和資料夾拖放至上傳區域。
   + 選擇**新增檔案**或**新增資料夾**，選擇要上傳的檔案或資料夾，然後選擇**開啟**或**上傳**。

1. 在**檢查總和**下，選擇您要使用的**檢查總和函數**。
**注意**  
 我們建議您使用 CRC32 和 CRC32C，以獲得 S3 Express One Zone 儲存類別的最佳效能。如需詳細資訊，請參閱 [S3 額外檢查總和最佳實務](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-optimizing-performance-design-patterns.html#s3-express-optimizing--checksums.html)。

   (選用) 如果您上傳的單一物件大小小於 16 MB，您也可以指定預先計算的檢查總和值。當您提供預先計算的值時，Amazon S3 會將該值與使用所選檢查總和函數計算的值進行比較。如果值不相符，則不會開始上傳。

1. **許可**和**屬性**區段中的選項會自動設定為預設設定，且無法修改。封鎖公開存取會自動啟用，且無法針對目錄儲存貯體啟用 S3 版本控制和 S3 物件鎖定。

   (選用) 如果您要以金鑰/值對的形式將中繼資料新增至物件，請展開**屬性**區段，然後在**中繼資料**區段中選擇**新增中繼資料**。

1. 若要上傳列出的檔案和資料夾，請選擇**上傳**。

   Amazon S3 會上傳您的物件和資料夾。上傳完成後，您可以在**上傳：狀態**頁面上看到成功訊息。

    您已成功建立目錄儲存貯體，並將物件上傳至儲存貯體。

# 步驟 5：清空 S3 Express One Zone 目錄儲存貯體
<a name="s3-express-tutoiral-Empty"></a>

您可以使用 Amazon S3 主控台來清空 Amazon S3 目錄儲存貯體。

**清空目錄儲存貯體。**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在頁面右上角的導覽列中，選擇目前顯示的名稱 AWS 區域。接下來，選擇與您目錄儲存貯體所在可用區域相關聯的區域。

1. 在左側導覽窗格中，選擇**目錄儲存貯體**。

1. 選擇您要清空之儲存貯體名稱旁的選項按鈕，然後選擇**清空**。

1. 在 **Empty bucket** (清空儲存貯體) 頁面上，在文字欄位中輸入 **permanently delete** 以確認您要清空儲存貯體，然後選擇 **Empty** (清空)。

1. 在**清空儲存貯體：狀態**頁面上監控儲存貯體清空的進度。

# 步驟 6：刪除 S3 Express One Zone 目錄儲存貯體
<a name="s3-express-tutoiral-Delete"></a>

清空目錄儲存貯體並中止所有進行中的分段上傳之後，您可以使用 Amazon S3 主控台來刪除儲存貯體。

**刪除目錄儲存貯體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在頁面右上角的導覽列中，選擇目前顯示的名稱 AWS 區域。接下來，選擇與您目錄儲存貯體所在可用區域相關聯的區域。

1. 在左側導覽窗格中，選擇**目錄儲存貯體**。

1. 在**目錄儲存貯體**清單中，選擇您要刪除之儲存貯體旁的選項按鈕。

1. 選擇 **刪除**。

1. 在**刪除儲存貯體**頁面上的文字欄位中輸入儲存貯體名稱，以確認刪除儲存貯體。
**重要**  
目錄儲存貯體刪除後，即無法復原。

1. 若要刪除目錄儲存貯體，請選擇**刪除儲存貯體**。

## 後續步驟
<a name="s3-express-tutoiral-Next"></a>

在本教學課程中，您已了解如何建立目錄儲存貯體並使用 S3 Express One Zone 儲存類別。完成本教學課程之後，您可以探索要與 S3 Express One Zone 儲存類別搭配使用的相關 AWS 服務。

您可以 AWS 服務 搭配 S3 Express One Zone 儲存類別使用下列項目，以支援特定的低延遲使用案例。
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/index.html) – Amazon EC2 在 AWS 雲端中提供了安全且可擴展的運算容量。使用 Amazon EC2 可減少前期所需的硬體投資，讓您更快速開發並部署應用程式。您可使用 Amazon EC2 按需要啟動任意數量的虛擬伺服器，設定安全性和聯網功能以及管理儲存。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html.html)：Lambda 是一項運算服務，可讓您執行程式碼，而無需佈建或管理伺服器。您在儲存貯體上設定通知設定，並授予 Amazon S3 許可以在函數以資源為基礎的許可政策上叫用函數。
+ [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) – Amazon EKS 是一種受管服務，無需安裝、操作和維護您自己的Kubernetes控制平面 AWS。 [https://kubernetes.io/docs/concepts/overview/](https://kubernetes.io/docs/concepts/overview/) 是一種開放原始碼系統，可自動化容器化應用程式的管理、擴展和部署。
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)：Amazon ECS 為全受管容器協同運作服務，可讓您輕鬆部署、管理和擴展容器化應用程式。
+ [Amazon EMR](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-express-one-zone.html) – Amazon EMR 是受管叢集平台，可簡化大數據架構的執行，例如 Apache Hadoop和 Apache Spark 等， AWS 以處理和分析大量資料。
+ [Amazon Athena](https://docs.aws.amazon.com//athena/latest/ug/querying-express-one-zone.html)：Athena 是一種互動式查詢服務，可讓您使用標準 [SQL](https://docs.aws.amazon.com/athena/latest/ug/ddl-sql-reference.html) 直接輕鬆分析 Amazon S3 中的資料。您還可以使用 Athena 以互動方式使用 Apache Spark 執行資料分析，而不必規劃、設定或管理資源。當您在 Athena 執行 Apache Spark 應用程式時，可提交 Spark 程式碼進行處理，並直接接收結果。
+ [AWS Glue Data Catalog](https://docs.aws.amazon.com//glue/latest/dg/catalog-and-crawler.html) – AWS Glue 是一種無伺服器資料整合服務，可讓分析使用者輕鬆地探索、準備、移動和整合來自多個來源的資料。您可以使用 AWS Glue 進行分析、機器學習和應用程式開發。 AWS Glue Data Catalog 是一個集中式儲存庫，可存放組織資料集的中繼資料。其可作為您資料來源之位置、結構描述及執行階段指標的索引。
+ [Amazon SageMaker Runtime 模型訓練](https://docs.aws.amazon.com//sagemaker/latest/dg/model-access-training-data.html) – Amazon SageMaker Runtime 是一項全受管的機器學習服務。使用 SageMaker Runtime，資料科學家和開發人員可快速輕鬆建置及訓練機器學習模型，然後直接將其部署至生產就緒的託管環境。

 如需 S3 Express One Zone 的詳細資訊，請參閱[什麼是 S3 Express One Zone](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-one-zone.html)和 [S3 Express One Zone 有什麼不同](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-differences.html)。

# S3 Express One Zone 可用區域和區域
<a name="s3-express-Endpoints"></a>

可用區域是一個或多個獨立的資料中心，具備 AWS 區域中的備援電源、聯網和連線能力。為了最佳化低延遲擷取，Amazon S3 Express One Zone 儲存類別中的物件會以備援方式儲存在運算工作負載本機上單一可用區域中的 S3 目錄儲存貯體中。建立目錄儲存貯體時，您可以選擇儲存貯體 AWS 區域 所在的可用區域和位置。

AWS 會將實體可用區域隨機映射到每個可用區域的名稱 AWS 帳戶。此方法有助於在 中跨可用區域分配資源 AWS 區域，而不是將資源集中在每個區域的第一個可用區域中。因此，您 `us-east-1a`的可用區域 AWS 帳戶 可能不會代表與`us-east-1a`不同 相同的實體位置 AWS 帳戶。如需詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[區域與可用區域](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html)。

為協調各帳戶的可用區域，您必須使用 *AZ ID*，這是可用區域唯一且一致的識別符。例如， `use1-az1` 是 `us-east-1` 區域的 AZ ID，且每個區域都有相同的實體位置 AWS 帳戶。下圖顯示每個帳戶的 AZ ID 都相同的情形，即使每個帳戶的可用區域名稱對應可能不同。

![\[顯示可用區域映射和區域的圖例。\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/availability-zone-mapping.png)


使用 S3 Express One Zone，您的資料會以備援方式儲存在單一可用區域內的多部裝置上。S3 Express One Zone 的設計可在單一可用區域內達到 99.95% 的可用性，並依照 [Amazon S3 服務水準協議](https://aws.amazon.com/s3/sla/)提供支援。如需詳細資訊，請參閱[可用區域](directory-bucket-high-performance.md#s3-express-overview-az)

 下表顯示 S3 Express One Zone 支援的區域與可用區域。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/s3-express-Endpoints.html)

# 可用區域中目錄儲存貯體的網路
<a name="directory-bucket-az-networking"></a>

若要減少封包在網路上花費的時間，請使用閘道端點設定您的虛擬私有雲端 (VPC)，以存取可用區域中的目錄儲存貯體，同時將流量保留在 AWS 網路中，無需額外費用。

**Topics**
+ [可用區域中目錄儲存貯體的端點](#s3-express-endpoints-az)
+ [設定 VPC 閘道端點](#s3-express-networking-vpc-gateway)

## 可用區域中目錄儲存貯體的端點
<a name="s3-express-endpoints-az"></a>

下表顯示每個區域和可用區域可用的區域 (Region) 和區域 (Zone) API 端點。


| 區域名稱 | 區域 | 可用區域 ID | 區域 (Region) 端點 | 區域 (Zone) 端點 | 
| --- | --- | --- | --- | --- | 
|  美國東部 (維吉尼亞北部)  |  `us-east-1`  |  `use1-az4` `use1-az5` `use1-az6`  |  `s3express-control.us-east-1.amazonaws.com` `s3express-control-dualstack.us-east-1.amazonaws.com `  |  `s3express-use1-az4.us-east-1.amazonaws.com` `s3express-use1-az4.dualstack.us-east-1.amazonaws.com` `s3express-use1-az5.us-east-1.amazonaws.com` `s3express-use1-az5.dualstack.us-east-1.amazonaws.com` `s3express-use1-az6.us-east-1.amazonaws.com` `s3express-use1-az6.dualstack.us-east-1.amazonaws.com`  | 
|  美國東部 (俄亥俄)  |  `us-east-2`  |  `use2-az1` `use2-az2`  |  `s3express-control.us-east-2.amazonaws.com` `s3express-control-dualstack.us-east-2.amazonaws.com`  |  `s3express-use2-az1.us-east-2.amazonaws.com` `s3express-use2-az1.dualstack.us-east-2.amazonaws.com` `s3express-use2-az2.us-east-2.amazonaws.com` `s3express-use2-az2.dualstack.us-east-2.amazonaws.com`  | 
|  美國西部 (奧勒岡)  |  `us-west-2`  |  `usw2-az1` `usw2-az3` `usw2-az4`  |  `s3express-control.us-west-2.amazonaws.com` `s3express-control-dualstack.us-west-2.amazonaws.com`  |  `s3express-usw2-az1.us-west-2.amazonaws.com` `s3express-usw2-az1.dualstack.us-west-2.amazonaws.com` `s3express-usw2-az3.us-west-2.amazonaws.com` `s3express-usw2-az3.dualstack.us-west-2.amazonaws.com` `s3express-usw2-az4.us-west-2.amazonaws.com` `s3express-usw2-az4.dualstack.us-west-2.amazonaws.com`  | 
|  亞太地區 (孟買)  |  `ap-south-1`  |  `aps1-az1` `aps1-az3`  |  `s3express-control.ap-south-1.amazonaws.com` `s3express-control-dualstack.ap-south-1.amazonaws.com`  |  `s3express-aps1-az1.ap-south-1.amazonaws.com` `s3express-aps1-az1.dualstack.ap-south-1.amazonaws.com` `s3express-aps1-az3.ap-south-1.amazonaws.com` `s3express-aps1-az3.dualstack.ap-south-1.amazonaws.com`  | 
|  亞太地區 (東京)  |  `ap-northeast-1`  |  `apne1-az1` `apne1-az4`  |  `s3express-control.ap-northeast-1.amazonaws.com` `s3express-control-dualstack.ap-northeast-1.amazonaws.com`  |  `s3express-apne1-az1.ap-northeast-1.amazonaws.com` `s3express-apne1-az1.dualstack.ap-northeast-1.amazonaws.com` `s3express-apne1-az4.ap-northeast-1.amazonaws.com` `s3express-apne1-az4.dualstack.ap-northeast-1.amazonaws.com`  | 
|  歐洲 (愛爾蘭)  |  `eu-west-1`  |  `euw1-az1` `euw1-az3`  |  `s3express-control.eu-west-1.amazonaws.com` `s3express-control-dualstack.eu-west-1.amazonaws.com`  |  `s3express-euw1-az1.eu-west-1.amazonaws.com` `s3express-euw1-az1.dualstack.eu-west-1.amazonaws.com` `s3express-euw1-az3.eu-west-1.amazonaws.com` `s3express-euw1-az3.dualstack.eu-west-1.amazonaws.com`  | 
|  歐洲 (斯德哥爾摩)  |  `eu-north-1`  |  `eun1-az1` `eun1-az2` `eun1-az3`  |  `s3express-control.eu-north-1.amazonaws.com` `s3express-control-dualstack.eu-north-1.amazonaws.com`  |  `s3express-eun1-az1.eu-north-1.amazonaws.com` `s3express-eun1-az1.dualstack.eu-north-1.amazonaws.com` `s3express-eun1-az2.eu-north-1.amazonaws.com` `s3express-eun1-az2.dualstack.eu-north-1.amazonaws.com` `s3express-eun1-az3.eu-north-1.amazonaws.com` `s3express-eun1-az3.dualstack.eu-north-1.amazonaws.com`  | 

## 設定 VPC 閘道端點
<a name="s3-express-networking-vpc-gateway"></a>

下列程序可用來建立連線至 Amazon S3 Express One Zone 儲存類別物件和目錄儲存貯體的閘道端點。

**設定閘道 VPC 端點**

1. 開啟 [Amazon VPC 主控台](https://console.aws.amazon.com/vpc/)。

1. 在導覽窗格中選擇**端點**。

1. 選擇**建立端點**。

1. 建立端點的名稱。

1. 對於 **Service category** (服務類別)，選擇 **AWS 服務**。

1. 針對**服務**，新增篩選條件 **Type=Gateway**，然後選擇 **com.amazonaws.*region*.s3express** 旁邊的選項按鈕。

1. 針對 **VPC**，選擇要在其中建立端點的 VPC。

1. 針對**路由表**，選擇端點要使用之 VPC 中的路由表。建立端點之後，路由記錄會新增至您在此步驟中選取的路由表。

1. 針對**政策**，選擇**完整存取**，以允許 VPC 端點上所有資源的所有主體進行所有操作。否則，選擇**自訂**以連接 VPC 端點政策，該政策會控制主體在 VPC 端點上對資源執行操作的許可。

1. 針對 **IP address type** (IP 地址類型)，從下列選項中選擇：
   +  **IPv4** – 將 IPv4 地址指派給端點網路介面。只有當所有選取的子網路都具有 IPv4 地址範圍，且此服務接受 IPv4 請求時，才支援此選項。
   +  **IPv6** – 將 IPv6 地址指派給端點網路介面。只有當所有選取的子網路都是僅限 IPv6 子網路，且此服務接受 IPv6 請求時，才支援此選項。
   +  **Dualstack** – 將 IPv4 和 IPv6 地址指派給端點網路介面。只有當所有選取的子網路都具有 IPv4 和 IPv6 地址範圍，且此服務接受 IPv4 和 IPv6 請求時，才支援此選項。

1. (選用) 若要新增標籤，請選擇**新增標籤**，然後輸入標籤金鑰和標籤值。

1. 選擇**建立端點**。

建立閘道端點後，您可以使用區域 (Region) API 端點和區域 (Zone) API 端點存取 Amazon S3 Express One Zone 儲存類別物件和目錄儲存貯體。

若要進一步了解閘道 VPC 端點，請參閱《AWS PrivateLink 指南》**中的[閘道端點](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html)。對於資料落地使用案例，建議您只使用閘道 VPC 端點從 VPC 存取儲存貯體。當存取僅限於 VPC 或 VPC 端點時，您可以透過 AWS 管理主控台、REST API AWS CLI和 AWS SDKs存取物件。

**注意**  
若要使用 限制對 VPC 或 VPC 端點的存取 AWS 管理主控台，您必須使用 AWS 管理主控台 私有存取。如需詳細資訊，請參閱 *AWS 管理主控台 *AWS 管理主控台 指南中的[AWS 管理主控台 私有存取](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/console-private-access.html)。

# 在可用區域中建立目錄儲存貯體
<a name="directory-bucket-create"></a>

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

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

目錄儲存貯體使用 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 服務水準協議](https://aws.amazon.com/s3/sla/)提供支援。如需詳細資訊，請參閱[可用區域](directory-bucket-high-performance.md#s3-express-overview-az)

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

如需有關目錄儲存貯體的詳細資訊，請參閱 [使用目錄儲存貯體](directory-buckets-overview.md)。

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

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

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

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

如需有關儲存貯體命名規則的詳細資訊，請參閱 [目錄儲存貯體命名規則](directory-bucket-naming-rules.md)。

## 使用 S3 主控台
<a name="create-directory-bucket-console"></a>

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 開啟 Amazon S3 主控台。

1. 在頁面頂端的導覽列中，選擇目前顯示的名稱 AWS 區域。​接下來，選擇您要在其中建立儲存貯體的區域。
**注意**  
請選擇接近您的區域，以充分降低延遲及成本，並因應法規要求。除非您明確地將儲存在區域中的物件傳輸到其他區域，否則物件絕對不會離開該區域。如需 Amazon S3 AWS 區域的清單，請參閱 中的[AWS 服務 端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)*Amazon Web Services 一般參考*。

1. 在左側導覽窗格中，選擇**目錄儲存貯體**。

1. 選擇 **Create bucket** (建立儲存貯體)。**Create bucket (建立儲存貯體)** 頁面隨即開啟。

1. 在**一般組態**下，檢視要建立儲存貯 AWS 區域 體的 。

   針對**儲存貯體類型**，選擇**目錄**。
**注意**  
如果您已選擇不支援目錄儲存貯體的區域，**儲存貯體類型**選項會消失，且儲存貯體類型預設為一般用途儲存貯體。若要建立目錄儲存貯體，您必須選擇支援的區域。如需支援目錄儲存貯體和 Amazon S3 Express One Zone 儲存類別的區域清單，請參閱[S3 Express One Zone 可用區域和區域](s3-express-Endpoints.md)。
在您建立儲存貯體之後，便無法變更儲存貯體類型。
**注意**  
儲存貯體建立之後，就無法變更可用區域。

1. 針對**可用區域**，選擇運算服務本機上的可用區域。如需支援目錄儲存貯體和 S3 Express One Zone 儲存類別的可用區域清單，請參閱[S3 Express One Zone 可用區域和區域](s3-express-Endpoints.md)。

   在**可用區域**下，選取核取方塊，表示您確實了解在可用區域發生中斷時，您的資料可能無法使用或遺失。
**重要**  
雖然目錄儲存貯體會儲存在單一可用區域內的多部裝置，但不會以備援方式跨可用區域儲存資料。

1. 針對**儲存貯體名稱**，輸入您的目錄儲存貯體的名稱。

   目錄儲存貯體適用下列命名規則。
   + 在所選區域內是唯一的 (AWS 可用區域或 AWS 本機區域）。
   + 名稱長度必須介於 3 (最小值) 到 63 (最大值) 個字元之間，包括字尾在內。
   + 只能由小寫字母、數字和連字號 (-) 組成。
   + 開頭和結尾為字母或數字。
   + 必須包含下列字尾：`--zone-id--x-s3`。
   + 儲存貯體名稱必須以字首 `xn--` 開頭。
   + 儲存貯體名稱必須以字首 `sthree-` 開頭。
   + 儲存貯體名稱必須以字首 `sthree-configurator` 開頭。
   + 儲存貯體名稱必須以字首 ` amzn-s3-demo-` 開頭。
   + 儲存貯體名稱不得以尾碼 `-s3alias` 結尾。存取點別名名稱會保留此尾碼。如需詳細資訊，請參閱[存取點別名](access-points-naming.md#access-points-alias)。
   + 儲存貯體名稱不得以尾碼 `--ol-s3` 結尾。Object Lambda 存取點別名名稱會保留此尾碼。如需詳細資訊，請參閱[如何針對您的 S3 儲存貯體 Object Lambda 存取點使用儲存貯體樣式別名](olap-use.md#ol-access-points-alias)。
   + 儲存貯體名稱不得以尾碼 `.mrap` 結尾。多區域存取點名稱會保留此字尾。如需詳細資訊，請參閱[命名 Amazon S3 多區域存取點的規則](multi-region-access-point-naming.md)。

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

   建立儲存貯體後，便無法變更其名稱。如需儲存貯體命名的詳細資訊，請參閱 [一般用途儲存貯體命名規則](bucketnamingrules.md)。
**重要**  
請勿在儲存貯體名稱中包含敏感資訊，例如帳號。在指向儲存貯體中之物件的 URL 中，會顯示儲存貯體名稱。

1. 在**物件擁有權**下，會自動啟用**儲存貯體擁有者強制執行**設定，並停用所有存取控制清單 (ACL)。您無法針對目錄儲存貯體啟用 ACL。

    **儲存貯體擁有者強制執行 (預設)** - 停用 ACL，儲存貯體擁有者會自動擁有並完全控制一般用途儲存貯體中的每個物件。ACL 不再影響 S3 一般用途儲存貯體中資料的存取許可。儲存貯體單獨使用政策來定義存取控制。

1. 在**此儲存貯體的「封鎖公開存取」設定**下，會自動啟用您目錄儲存貯體的所有封鎖公開存取設定。您無法修改目錄儲存貯體的這些設定。如需封鎖公開存取的詳細資訊，請參閱 [封鎖對 Amazon S3 儲存體的公開存取權](access-control-block-public-access.md)。

1. 若要設定預設加密，請在**加密類型**下，選擇下列其中一項：
   + **使用 Amazon S3 受管金鑰 (SSE-S3) 的伺服器端加密**
   + **伺服器端加密與 AWS Key Management Service 金鑰 (SSE-KMS)**

   如需有關使用 Amazon S3 伺服器端加密來加密資料的詳細資訊，請參閱「[資料保護和加密](s3-express-data-protection.md)」。
**重要**  
如果您針對預設加密組態使用 SSE-KMS 選項，則受到 AWS KMS的每秒請求數目 (RPS) 限制。如需 AWS KMS 配額以及如何請求提高配額的詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[配額](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)。  
啟用預設加密時，您可能需要更新儲存貯體政策。如需詳細資訊，請參閱[針對跨帳戶操作使用 SSE-KMS 加密](bucket-encryption.md#bucket-encryption-update-bucket-policy)。

1. 如果選擇**使用 Amazon S3 受管金鑰 (SSE-S3) 的伺服器端加密**，則**儲存貯體金鑰**下會顯示**已啟用**。當您將目錄儲存貯體設定為搭配 SSE-S3 使用預設加密時，一律啟用 S3 儲存貯體金鑰。目錄儲存貯體中的 `GET` 和 `PUT` 操作一律會啟用 S3 儲存貯體金鑰，且無法停用。當您透過 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)、[Batch Operations 中的 Copy 操作](directory-buckets-objects-Batch-Ops.md)或 [import 作業](create-import-job.md)，將 SSE-KMS 加密物件從一般用途儲存貯體複製到目錄儲存貯體、從目錄儲存貯體複製到一般用途儲存貯體或在目錄儲存貯體之間複製時，不支援 S3 儲存貯體金鑰。在此情況下，Amazon S3 AWS KMS 每次針對 KMS 加密物件提出複製請求時都會呼叫 。

   S3 儲存貯體金鑰透過減少來自 Amazon S3 的請求流量來降低加密成本 AWS KMS。如需詳細資訊，請參閱[使用 Amazon S3 儲存貯體金鑰降低 SSE-KMS 的成本](bucket-key.md)。

1. 如果您選擇**使用 AWS Key Management Service 金鑰的伺服器端加密 (SSE-KMS)**，請在** AWS KMS 金鑰**下，以下列其中一種方式指定您的 AWS Key Management Service 金鑰，或建立新的金鑰。
   + 若要從可用的 KMS 金鑰清單中選擇，請選擇**從中選擇 AWS KMS keys**，然後從**可用的 AWS KMS keys**中選擇您的 **KMS 金鑰**。

     此清單中只會出現您的客戶自管金鑰。目錄儲存貯體不支援 AWS 受管金鑰 (`aws/s3`)。如需詳細了解客戶受管金鑰，請參閱《AWS Key Management Service 開發人員指南》**中的[客戶金鑰和 AWS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt)。
   + 若要輸入 KMS 金鑰 ARN 或別名，請選擇**輸入 AWS KMS key ARN**，然後在 ARN 中輸入您的 KMS 金鑰 **AWS KMS key ARN** 或別名。
   + 若要在 AWS KMS 主控台中建立新的客戶受管金鑰，請選擇**建立 KMS 金鑰**。

     如需建立 的詳細資訊 AWS KMS key，請參閱《 *AWS Key Management Service 開發人員指南*》中的[建立金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)。
**重要**  
您的 SSE-KMS 組態在儲存貯體的生命週期內，每個目錄儲存貯體只能支援 1 個[客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。不支援 [https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) (`aws/s3`)。此外，為 SSE-KMS 指定客戶自管金鑰之後，即無法覆寫儲存貯體 SSE-KMS 組態的客戶自管金鑰。  
您可以透過下列方式識別為儲存貯體的 SSE-KMS 組態指定的客戶自管金鑰：  
您可以提出 `HeadObject` API 操作請求，在回應中尋找 `x-amz-server-side-encryption-aws-kms-key-id` 的值。
若要為資料使用新的客戶自管金鑰，建議您使用新的客戶自管金鑰，將現有的物件複製到新的目錄儲存貯體。
您只能使用 AWS 區域 與儲存貯體相同的 KMS 金鑰。Amazon S3 主控台僅會列出與儲存貯體位於相同區域的前 100 個 KMS 金鑰。若要使用未列出的 KMS 金鑰，必須輸入 KMS 金鑰 ARN。若您想要使用其他帳戶的 KMS 金鑰，您必須先具有該金鑰的使用權限，然後輸入 KMS 金鑰 ARN。如需詳細了解 KMS 金鑰跨帳戶權限，請參閱《AWS Key Management Service 開發人員指南》**中的[建立其他帳戶可使用的 KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console)。如需 SSE-KMS 的詳細資訊，請參閱 [使用 AWS KMS (SSE-KMS) 為目錄儲存貯體中的新物件上傳指定伺服器端加密](s3-express-specifying-kms-encryption.md)。
當您在目錄儲存貯體中使用 AWS KMS key 進行伺服器端加密時，您必須選擇對稱加密 KMS 金鑰。Amazon S3 僅支援對稱加密 KMS 金鑰，而不支援非對稱 KMS 金鑰。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[識別對稱和非對稱 KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html)。

   如需 AWS KMS 搭配 Amazon S3 使用 的詳細資訊，請參閱 [在目錄儲存貯體中使用伺服器端加密與 AWS KMS 金鑰 (SSE-KMS)](s3-express-UsingKMSEncryption.md)。

1. 選擇**建立儲存貯體**。建立儲存貯體之後，您可以新增檔案和資料夾至儲存貯體。如需詳細資訊，請參閱[使用目錄儲存貯體中的物件](directory-buckets-objects.md)。

## 使用 AWS SDKs
<a name="create-directory-bucket-sdks"></a>

------
#### [ SDK for Go ]

此範例示範如何使用 適用於 Go 的 AWS SDK建立目錄儲存貯體。

**Example**  

```
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建立目錄儲存貯體。

**Example**  

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

------
#### [ 適用於 JavaScript 的 AWS SDK ]

此範例示範如何使用 適用於 JavaScript 的 AWS SDK建立目錄儲存貯體。

**Example**  

```
// 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" }}
    } 
   );
```

------
#### [ 適用於 .NET 的 SDK ]

此範例示範如何使用 適用於 .NET 的 SDK建立目錄儲存貯體。

**Example**  

```
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建立目錄儲存貯體。

**Example**  

```
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 ]

此範例示範如何使用 適用於 Python (Boto3) 的 AWS SDK建立目錄儲存貯體。

**Example**  

```
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 ]

此範例示範如何使用 適用於 Ruby 的 AWS SDK建立目錄儲存貯體。

**Example**  

```
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
<a name="create-directory-bucket-cli"></a>

此範例示範如何使用 AWS CLI建立目錄儲存貯體。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

建立目錄儲存貯體時，您必須提供組態詳細資訊，並使用下列命名慣例：`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
```

如需詳細資訊，請參閱 AWS Command Line Interface中的 [create-bucket](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-bucket.html)。

# 可用區域中目錄儲存貯體的地區與區域端點
<a name="endpoint-directory-buckets-AZ"></a>

若要存取儲存在 S3 Express One Zone 中的物件和目錄儲存貯體，您可以使用閘道 VPC 端點。目錄儲存貯體使用地區與區域 API 端點。需要區域 (Region) 或區域 (Zone) 端點，取決於您使用的 Amazon S3 API 操作。使用閘道端點不需額外付費。

儲存貯體層級 (也就是控制平面) API 操作可透過區域 (Region) 端點提供使用，並且稱為區域端點 API 操作。區域端點 API 操作的範例包括 `CreateBucket` 和 `DeleteBucket`。

 當您建立儲存在 S3 Express One Zone 中的目錄儲存貯體時，可以選擇儲存貯體所在的可用區域。您可以使用區域端點 API 操作來上傳和管理目錄儲存貯體中的物件。

物件層級 (也就是資料平面) API 操作可透過區域 (Zone) 端點提供使用，並且稱為區域端點 API 操作。區域端點 API 操作的範例包括 `CreateSession` 和 `PutObject`。


| 區域名稱 | 區域 | 可用區域 ID | 區域 (Region) 端點 | 區域 (Zone) 端點 | 
| --- | --- | --- | --- | --- | 
|  美國東部 (維吉尼亞北部)  |  `us-east-1`  |  `use1-az4` `use1-az5` `use1-az6`  |  `s3express-control.us-east-1.amazonaws.com` `s3express-control-dualstack.us-east-1.amazonaws.com `  |  `s3express-use1-az4.us-east-1.amazonaws.com` `s3express-use1-az4.dualstack.us-east-1.amazonaws.com` `s3express-use1-az5.us-east-1.amazonaws.com` `s3express-use1-az5.dualstack.us-east-1.amazonaws.com` `s3express-use1-az6.us-east-1.amazonaws.com` `s3express-use1-az6.dualstack.us-east-1.amazonaws.com`  | 
|  美國東部 (俄亥俄)  |  `us-east-2`  |  `use2-az1` `use2-az2`  |  `s3express-control.us-east-2.amazonaws.com` `s3express-control-dualstack.us-east-2.amazonaws.com`  |  `s3express-use2-az1.us-east-2.amazonaws.com` `s3express-use2-az1.dualstack.us-east-2.amazonaws.com` `s3express-use2-az2.us-east-2.amazonaws.com` `s3express-use2-az2.dualstack.us-east-2.amazonaws.com`  | 
|  美國西部 (奧勒岡)  |  `us-west-2`  |  `usw2-az1` `usw2-az3` `usw2-az4`  |  `s3express-control.us-west-2.amazonaws.com` `s3express-control-dualstack.us-west-2.amazonaws.com`  |  `s3express-usw2-az1.us-west-2.amazonaws.com` `s3express-usw2-az1.dualstack.us-west-2.amazonaws.com` `s3express-usw2-az3.us-west-2.amazonaws.com` `s3express-usw2-az3.dualstack.us-west-2.amazonaws.com` `s3express-usw2-az4.us-west-2.amazonaws.com` `s3express-usw2-az4.dualstack.us-west-2.amazonaws.com`  | 
|  亞太地區 (孟買)  |  `ap-south-1`  |  `aps1-az1` `aps1-az3`  |  `s3express-control.ap-south-1.amazonaws.com` `s3express-control-dualstack.ap-south-1.amazonaws.com`  |  `s3express-aps1-az1.ap-south-1.amazonaws.com` `s3express-aps1-az1.dualstack.ap-south-1.amazonaws.com` `s3express-aps1-az3.ap-south-1.amazonaws.com` `s3express-aps1-az3.dualstack.ap-south-1.amazonaws.com`  | 
|  亞太地區 (東京)  |  `ap-northeast-1`  |  `apne1-az1` `apne1-az4`  |  `s3express-control.ap-northeast-1.amazonaws.com` `s3express-control-dualstack.ap-northeast-1.amazonaws.com`  |  `s3express-apne1-az1.ap-northeast-1.amazonaws.com` `s3express-apne1-az1.dualstack.ap-northeast-1.amazonaws.com` `s3express-apne1-az4.ap-northeast-1.amazonaws.com` `s3express-apne1-az4.dualstack.ap-northeast-1.amazonaws.com`  | 
|  歐洲 (愛爾蘭)  |  `eu-west-1`  |  `euw1-az1` `euw1-az3`  |  `s3express-control.eu-west-1.amazonaws.com` `s3express-control-dualstack.eu-west-1.amazonaws.com`  |  `s3express-euw1-az1.eu-west-1.amazonaws.com` `s3express-euw1-az1.dualstack.eu-west-1.amazonaws.com` `s3express-euw1-az3.eu-west-1.amazonaws.com` `s3express-euw1-az3.dualstack.eu-west-1.amazonaws.com`  | 
|  歐洲 (斯德哥爾摩)  |  `eu-north-1`  |  `eun1-az1` `eun1-az2` `eun1-az3`  |  `s3express-control.eu-north-1.amazonaws.com` `s3express-control-dualstack.eu-north-1.amazonaws.com`  |  `s3express-eun1-az1.eu-north-1.amazonaws.com` `s3express-eun1-az1.dualstack.eu-north-1.amazonaws.com` `s3express-eun1-az2.eu-north-1.amazonaws.com` `s3express-eun1-az2.dualstack.eu-north-1.amazonaws.com` `s3express-eun1-az3.eu-north-1.amazonaws.com` `s3express-eun1-az3.dualstack.eu-north-1.amazonaws.com`  | 

# 最佳化 S3 Express 單區域效能
<a name="s3-express-performance"></a>

Amazon S3 Express One Zone 是一種高效能的單一可用區域 (AZ) S3 儲存類別，專門為對延遲最敏感的應用程式提供一致的個位數毫秒資料存取。S3 Express One Zone 是第一個 S3 儲存類別，可讓您選擇在單一可用區域內共同放置高效能物件儲存和 AWS 運算資源，例如 Amazon Elastic Compute Cloud、Amazon Elastic Kubernetes Service 和 Amazon Elastic Container Service。共置儲存與運算資源可將運算效能和成本最佳化，並提高資料處理速度。

S3 Express One Zone 提供與其他 S3 儲存類別相似的效能彈性，但具有一致的個位數毫秒第一位元組讀取和寫入請求延遲，與 S3 Standard 相比快了 10 倍。S3 Express One Zone 是全新設計的產品，支援的高載輸送量可達到非常高的彙總層級。S3 Express One Zone 儲存類別使用自訂建置的架構來達到最佳效能，並透過將資料存放在高效能硬體上來提供一致的低請求延遲。S3 Express One Zone 的物件通訊協定經增強後，簡化了身分驗證和中繼資料的額外負荷。

為了進一步降低延遲並支援高達 200 萬次讀取和每秒高達 200,000 次寫入，S3 Express One Zone 會將資料儲存在 Amazon S3 目錄儲存貯體中。根據預設，每個目錄儲存貯體最多支援 200,000 次讀取和每秒最多 100,000 次寫入。如果您的工作負載需要高於預設 TPS 限制，您可以透過 [AWS Support](https://support.console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase) 請求增加。

S3 Express One Zone 結合高效能、專用硬體和軟體，提供了個位數毫秒的資料存取速度，以及可針對每秒大量交易進行擴展的目錄儲存貯體，使其成為最適合請求密集型操作或效能關鍵應用程式的 Amazon S3 儲存類別。

下列主題針對使用 S3 Express One Zone 儲存類別的應用程式，說明最佳化效能的最佳實務指導方針和設計模式。

**Topics**
+ [最佳化 S3 Express One Zone 效能的最佳實務](s3-express-optimizing-performance-design-patterns.md)

# 最佳化 S3 Express One Zone 效能的最佳實務
<a name="s3-express-optimizing-performance-design-patterns"></a>

建置從 Amazon S3 Express One Zone 上傳和擷取物件的應用程式時，請依照我們的最佳實務指導方針來最佳化效能。若要使用 S3 Express One Zone 儲存類別，您必須建立 S3 目錄儲存貯體。S3 Express One Zone 儲存類別不支援搭配 S3 一般用途儲存貯體使用。

如需所有其他 Amazon S3 儲存類別和 S3 一般用途儲存貯體的效能指導方針，請參閱 [最佳實務設計模式：最佳化 Amazon S3 效能](optimizing-performance.md)。

為了在大規模工作負載中使用 S3 Express One Zone 儲存類別和目錄儲存貯體時獲得最佳效能和可擴展性，請務必了解目錄儲存貯體的運作方式與一般用途儲存貯體不同之處。然後，我們提供最佳實務，讓您的應用程式與目錄儲存貯體的運作方式保持一致。

## 目錄儲存貯體的運作方式
<a name="s3-express-how-directory-buckets-work"></a>

Amazon S3 Express One Zone 儲存類別可支援每個目錄儲存貯體每秒最多 2,000,000 個 GET 和 200,000 個 PUT 交易 (TPS) 的工作負載。使用 S3 Express One Zone 可將資料儲存在可用區域的 S3 目錄儲存貯體中。目錄儲存貯體中的物件可在階層式命名空間內存取，其類似於檔案系統，與具有一般命名空間的 S3 一般用途儲存貯體正好相反。與一般用途儲存貯體不同的是，目錄儲存貯體是以階層方式將索引鍵組織成目錄，而非字首。字首是物件索引鍵名稱開頭的字元字串。您可以使用字首來整理資料，並可用於管理一般用途儲存貯體中的扁平式物件儲存架構。如需詳細資訊，請參閱[使用字首整理物件](using-prefixes.md)。

在目錄儲存貯體中，物件會在階層式命名空間中使用正斜線 (`/`) 做為唯一支援的分隔符號。當您使用如 `dir1/dir2/file1.txt` 一樣的金鑰上傳物件時，目錄 `dir1/` 和 `dir2/` 會自動由 Amazon S3 建立和管理。目錄會在 `PutObject` 或 `CreateMultiPartUpload` 操作期間建立，並且會在 `DeleteObject` 或 `AbortMultiPartUpload` 操作後變成空白時，自動移除。目錄中的物件和子目錄數量沒有上限。

物件上傳到目錄儲存貯體時所建立的目錄，可以立即擴展，以減少發生 HTTP `503 (Slow Down)` 錯誤的機會。這種自動擴展可讓您的應用程式視需要在目錄內和目錄之間平行處理讀取和寫入請求。對於 S3 Express One Zone，個別目錄旨在支援目錄儲存貯體的最大請求率。由於系統會自動分配物件以實現均勻的負載分佈，無需隨機化索引鍵字首即可達到最佳效能，因此索引鍵不會依詞典編纂順序排列方式儲存在目錄儲存貯體中。這與 S3 一般用途儲存貯體形成對比，其中詞典編纂順序相近的索引鍵更有可能位於同一部伺服器上。

如需目錄儲存貯體操作和目錄互動範例的詳細資訊，請參閱 [目錄儲存貯體操作和目錄互動範例](#s3-express-directory-bucket-examples)。

## 最佳實務
<a name="s3-express-best-practices-section"></a>

遵循最佳實務來最佳化目錄儲存貯體效能，並協助您的工作負載隨時間擴展。

### 使用包含許多項目的目錄 (物件或子目錄)
<a name="s3-express-best-practices-use-directories"></a>

目錄儲存貯體預設為所有工作負載提供高效能。若要在某些操作中進一步最佳化效能，將更多項目 (即物件或子目錄) 合併到目錄中，這將會導致更低的延遲和更高的請求率：
+ 改變 API 操作，例如 `PutObject`、`DeleteObject`、`CreateMultiPartUpload` 和 `AbortMultiPartUpload`，在使用包含數千個項目的較少但更密集的目錄，而非大量卻較小的目錄實作時，可達到最佳效能。
+ 當需要遍歷較少的目錄來填入結果頁面時，`ListObjectsV2` 操作效能會更好。

#### 請勿在字首中使用熵
<a name="s3-express-best-practices-dont-use-entropy"></a>

在 Amazon S3 操作中，熵是指字首命名中的隨機化，可協助跨儲存體分割區平均分配工作負載。不過，由於目錄儲存貯體會在內部管理負載分佈，因此不建議在字首中使用熵來獲得最佳效能。這是因為對於目錄儲存貯體來說，熵會導致請求速度變慢是因為它無法重複使用已經建立的目錄。

像 `$HASH/directory/object` 這樣的關鍵模式最終可能會建立許多中間目錄。在下列範例中，所有 `job-1` 都是不同的目錄，因為其父系不同。目錄會變得稀疏，而變動和清單請求會變慢。在此範例中，有 12 個中間目錄，每個目錄都只有單一項目。

```
s3://my-bucket/0cc175b9c0f1b6a831c399e269772661/job-1/file1
  
s3://my-bucket/92eb5ffee6ae2fec3ad71c777531578f/job-1/file2
  
s3://my-bucket/4a8a08f09d37b73795649038408b5f33/job-1/file3
  
s3://my-bucket/8277e0910d750195b448797616e091ad/job-1/file4
  
s3://my-bucket/e1671797c52e15f763380b45e841ec32/job-1/file5
  
s3://my-bucket/8fa14cdd754f91cc6554c9e71929cce7/job-1/file6
```

相反地，為了獲得更好的效能，我們可以移除 `$HASH` 元件，並允許 `job-1` 成為單一目錄，以改善目錄的密度。在下列範例中，與前一個範例相比，包含 6 個項目的單一中間目錄，可以獲得更好的效能。

```
s3://my-bucket/job-1/file1
  
s3://my-bucket/job-1/file2
  
s3://my-bucket/job-1/file3
  
s3://my-bucket/job-1/file4
  
s3://my-bucket/job-1/file5
  
s3://my-bucket/job-1/file6
```

有這種效能優點，是因為一開始建立物件索引鍵且其索引鍵名稱包含目錄時，會自動為該物件建立目錄。後續物件上傳到同一個目錄時，就不需要建立目錄，這樣可以減少物件上傳至現有目錄的延遲。

#### 如果您不需要在 `ListObjectsV2` 呼叫期間為物件進行邏輯分組的能力，請使用分隔符號 / 以外的分隔符號來分隔索引鍵的部分
<a name="s3-express-best-practices-use-separator"></a>

由於 `/` 分隔符號對目錄儲存貯體有特殊處理，因此應謹慎使用。雖然目錄儲存貯體不會依詞典編纂順序排列物件，但目錄中的物件仍會在 `ListObjectsV2` 輸出中分在同一組。如果您不需要此功能，您可以將 `/` 取代為另一個字元做為分隔符號，以免造成中間目錄的建立。

例如，假設下列索引鍵處於 `YYYY/MM/DD/HH/` 字首模式

```
s3://my-bucket/2024/04/00/01/file1
  
s3://my-bucket/2024/04/00/02/file2
  
s3://my-bucket/2024/04/00/03/file3
  
s3://my-bucket/2024/04/01/01/file4
  
s3://my-bucket/2024/04/01/02/file5
  
s3://my-bucket/2024/04/01/03/file6
```

如果您不需要在 `ListObjectsV2` 結果中依小時或天為物件分組，但需要依月份為物件分組，則 `YYYY/MM/DD-HH-` 的下列索引鍵模式將大幅減少目錄，並提高 `ListObjectsV2` 操作的效能。

```
s3://my-bucket/2024/04/00-01-file1
  
s3://my-bucket/2024/04/00-01-file2
  
s3://my-bucket/2024/04/00-01-file3
  
s3://my-bucket/2024/04/01-02-file4
  
s3://my-bucket/2024/04/01-02-file5
  
s3://my-bucket/2024/04/01-02-file6
```

#### 盡可能使用分隔符號清單來操作
<a name="s3-express-best-practices-use-delimited-list"></a>

沒有 `delimiter` 的 `ListObjectsV2` 請求會執行所有目錄的深度優先遞迴遍歷。具有 `delimiter` 的 `ListObjectsV2` 請求只會擷取 `prefix` 參數所指定目錄中的項目，以減少請求延遲，並增加每秒的聚合鍵數。對於目錄儲存貯體，請盡可能使用分隔符號清單來操作。使用分隔符號的清單可以減少目錄的存取次數，進而提高每秒的鍵數，並降低請求延遲。

例如，對於目錄儲存貯體中的下列目錄和物件：

```
s3://my-bucket/2024/04/12-01-file1
  
s3://my-bucket/2024/04/12-01-file2
  
...
  
s3://my-bucket/2024/05/12-01-file1
  
s3://my-bucket/2024/05/12-01-file2
  
...
  
s3://my-bucket/2024/06/12-01-file1
  
s3://my-bucket/2024/06/12-01-file2
  
...
  
s3://my-bucket/2024/07/12-01-file1
  
s3://my-bucket/2024/07/12-01-file2
  
...
```

為了獲得更好的 `ListObjectsV2` 效能，如果應用程式的邏輯理論允許，請使用分隔符號清單列出子目錄和物件。例如，您可以針對分隔符號清單操作執行下列命令，

```
aws s3api list-objects-v2 --bucket my-bucket --prefix '2024/' --delimiter '/'
```

輸出是子目錄的清單。

```
{
    "CommonPrefixes": [
        {
            "Prefix": "2024/04/"
        },
        {
            "Prefix": "2024/05/"
        },
        {
            "Prefix": "2024/06/"
        },
        {
            "Prefix": "2024/07/"
        }
    ]
}
```

若要列出每個具有更佳效能的子目錄，您可以執行如下範例的命令：

命令：

```
aws s3api list-objects-v2 --bucket my-bucket --prefix '2024/04' --delimiter '/'
```

輸出：

```
{
    "Contents": [
        {
            "Key": "2024/04/12-01-file1"
        },
        {
            "Key": "2024/04/12-01-file2"
        }
    ]
}
```

### 將 S3 Express One Zone 儲存與您的 運算資源共置
<a name="s3-express-best-practices-colocate"></a>

使用 S3 Express One Zone 時，每個目錄儲存貯體都位於您建立儲存貯體時選取的單一可用區域中。您可以透過在運算工作負載或資源所在位置的可用區域中建立新的目錄儲存貯體來著手進行。然後就能立即開始非常低延遲的讀取和寫入。目錄儲存貯體是一種 S3 儲存貯體，您可以在其中選擇 中的可用區域 AWS 區域 ，以減少運算和儲存之間的延遲。

如果您在可用區域之間存取目錄儲存貯體，您經歷的延遲會稍微增加。為了達到最佳效能，建議您盡可能從位於相同可用區域中的 Amazon Elastic Container Service、Amazon Elastic Kubernetes Service 和 Amazon Elastic Compute Cloud 執行個體存取目錄儲存貯體。

### 使用並行連線，對於超過 1MB 的物件即達到高輸送量
<a name="s3-express-best-practices-concurrent-connections"></a>

您可以向目錄儲存貯體發出多個並行請求，以將請求分散到不同的連線上來獲得最大可存取頻寬，藉此達到最佳效能。如同一般用途儲存貯體，S3 Express One Zone 對於目錄儲存貯體的連線數沒有任何限制。當同一目錄發生大量並行寫入時，個別目錄可以水平和自動擴展效能。

目錄儲存貯體的個別 TCP 連線，在每秒可上傳或下載的位元組數上具有固定的上限。當物件變大時，請求時間主要取決於位元組串流處理，而不是交易處理。若要使用多個連線來平行處理大型物件的上傳或下載，您可以減少端對端延遲。如果使用 `Java 2.x` SDK，您應該考慮使用 [S3 Transfer Manager](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/transfer-manager.html)，利用效能改善如[分段上傳 API 操作](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html)和位元組範圍擷取，以平行存取資料。

### 使用閘道 VPC 端點
<a name="s3-express-best-practices-vpc-endpoints"></a>

閘道端點提供從 VPC 到目錄儲存貯體的直接連線，不需要網際網路閘道或 VPC 的 NAT 裝置。若要減少封包在網路上花費的時間，您應該使用目錄儲存貯體的閘道 VPC 端點來設定 VPC。如需詳細資訊，請參閱[目錄儲存貯體的網路](s3-express-networking.md)。

### 使用工作階段驗證，並重複使用有效的工作階段字符
<a name="s3-express-best-practices-session-auth"></a>

目錄儲存貯體提供工作階段字符驗證機制，以減少效能敏感 API 操作的延遲。您可以對 `CreateSession` 進行單一呼叫，以取得工作階段字符，如此即能在接下來 5 分鐘內對所有請求生效。若要在 API 呼叫中取得最低延遲，請務必取得工作階段字符，並在重新整理字符之前的整個生命週期內，重複使用該字符。

如果您使用 AWS SDKs，軟體SDKs會自動處理工作階段字符重新整理，以避免工作階段過期時服務中斷。我們建議您使用 AWS SDKs來啟動和管理對 `CreateSession` API 操作的請求。

如需 `CreateSession` 的相關資訊，請參閱 [使用 `CreateSession` 授權區域端點 API 操作](s3-express-create-session.md)。

### 使用 CRT 型用戶端
<a name="s3-express-best-practices-crt"></a>

 AWS Common Runtime (CRT) 是一組以 C 撰寫的模組化、高效能且高效的程式庫，旨在做為 AWS SDKs 的基礎。CRT 提供更高的輸送量、增強的連線管理，以及更快的啟動時間。CRT 可透過 Go 以外的所有 AWS SDKs 使用。

如需如何為所使用的 SDK 設定 CRT 的詳細資訊，請參閱[AWS 通用執行期 (CRT) 程式庫](https://docs.aws.amazon.com/sdkref/latest/guide/common-runtime.html)、[使用 AWS 通用執行期加速 Amazon S3 輸送量](https://aws.amazon.com/blogs//storage/improving-amazon-s3-throughput-for-the-aws-cli-and-boto3-with-the-aws-common-runtime/)、在[適用於 Java 的 AWS SDK 2.x 中介紹 CRT 型 S3 用戶端和 S3 Transfer Manager](https://aws.amazon.com/blogs//developer/introducing-crt-based-s3-client-and-the-s3-transfer-manager-in-the-aws-sdk-for-java-2-x/)、[使用適用於 Amazon S3 操作的 S3CrtClient](https://docs.aws.amazon.com/sdk-for-cpp/v1/developer-guide/examples-s3-crt.html)，以及[設定 AWS CRT 型 HTTP 用戶端](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/http-configuration-crt.html)。

### 使用最新版本的 AWS SDKs
<a name="s3-express-best-practices-latest-sdks"></a>

 AWS SDKs 為許多最佳化 Amazon S3 效能的建議準則提供內建支援。這些 SDK 提供更簡單的 API，以便在應用程式中充分利用 Amazon S3，並定期更新來遵循最新的最佳實務。例如，SDK 會在發生 HTTP `503` 錯誤後自動重試請求，並處理慢速連線回應。

如果使用 `Java 2.x` SDK，您應該考慮使用 [S3 Transfer Manager](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/transfer-manager.html)，它會自動水平擴展連線，以適時使用位元組範圍請求，實現每秒數千個請求數。位元組範圍請求可以提高效能，因為您可以使用與 S3 的並行連線，從同一個物件擷取不同的位元組範圍。與單一整個物件請求相比，這可協助您實現更高的彙總傳輸量。因此，請務必使用最新版本的 AWS SDKs來取得最新的效能最佳化功能。

## 效能故障診斷
<a name="s3-express-performance-troubleshooting"></a>

### 您是否為對延遲敏感的應用程式設定重試請求？
<a name="s3-express-performance-troubleshooting-retry"></a>

S3 Express One Zone 專為提供一致的高效能水準而打造，無需額外調整。但是，設定有利的逾時值和重試次數，可進一步協助實現一致的延遲和效能。 AWS SDKs 具有可設定的逾時和重試值，您可以根據特定應用程式的公差進行調整。

### 您是否使用 AWS 通用執行期 (CRT) 程式庫和最佳的 Amazon EC2 執行個體類型？
<a name="s3-express-performance-troubleshooting-crt-ec2"></a>

執行大量讀取和寫入操作的應用程式，可能會比未執行這些操作的應用程式需要更多的記憶體或運算能力。為要求高效能的工作負載啟動 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體時，請選擇符合應用程式所需資源量的執行個體類型。S3 Express One Zone 高效能儲存最適合搭配較大和較新的執行個體類型，這些類型具備更大量的系統記憶體，以及更強大的 CPU 和 GPU，可充分利用效能更高的儲存。我們也建議使用最新版本的 CRT 啟用 AWS SDKs，這可以更好地平行加速讀取和寫入請求。

### 您是否使用 AWS SDKs進行工作階段型身分驗證？
<a name="s3-express-performance-troubleshooting-session-auth"></a>

透過 Amazon S3，您也可以遵循 AWS SDKs 的相同最佳實務，在使用 HTTP REST API 請求時最佳化效能。不過，透過 S3 Express One Zone 所使用的工作階段型授權和身分驗證機制，我們強烈建議您使用 AWS SDKs來管理 `CreateSession`及其受管工作階段字符。使用 `CreateSession` API 操作， AWS SDKs會自動代表您建立和重新整理權杖。使用 `CreateSession`可節省對 AWS Identity and Access Management (IAM) 的每次請求往返延遲，以授權每個請求。

## 目錄儲存貯體操作和目錄互動範例
<a name="s3-express-directory-bucket-examples"></a>

以下顯示目錄儲存貯體如何運作的三個範例。

### 範例 1：對目錄儲存貯體的 S3 `PutObject` 請求如何與目錄互動
<a name="s3-express-directory-bucket-examples-put"></a>

1. 在空儲存貯體中執行 `PUT(<bucket>, "documents/reports/quarterly.txt")` 操作時，會在儲存貯體根目錄中建立目錄 `documents/`、在 `documents/` 中建立目錄 `reports/`，以及在 `reports/` 中建立物件 `quarterly.txt`。對於此操作，除了該物件外，還會建立兩個目錄。  
![\[圖表顯示 documents/reports/quarterly.txt 的 PUT 操作之後的目錄結構\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/directory-examples-foo-bar-baz.png)

1. 然後，當執行另一個 `PUT(<bucket>, "documents/logs/application.txt")` 操作時，目錄 `documents/` 已存在、在 `documents/` 中的目錄 `logs/` 不存在，因此建立該目錄，以及在 `logs/` 中建立物件 `application.txt`。對於此操作，除了該物件外，僅建立一個目錄。  
![\[圖表顯示 documents/logs/application.txt 的 PUT 操作之後的目錄結構\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/directory-examples-foo-baz-quux.png)

1. 最後，執行 `PUT(<bucket>, "documents/readme.txt")` 操作時，根目錄中的目錄 `documents/` 已存在，且物件 `readme.txt` 已建立。對於此操作，不會建立任何目錄。  
![\[圖表顯示 documents/readme.txt 的 PUT 操作之後的目錄結構\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/directory-examples-foo-bar.png)

### 範例 2：對目錄儲存貯體的 S3 `ListObjectsV2` 請求如何與目錄互動
<a name="s3-express-directory-bucket-examples-list"></a>

對於未指定分隔符號的 S3 `ListObjectsV2` 請求，會以深度優先的方式遍歷儲存貯體。輸出會以一致的順序傳回。不過，雖然此順序在請求之間保持不變，但順序並非依詞典編纂順序排列。對於先前範例中建立的儲存貯體和目錄：

1. 執行 `LIST(<bucket>)` 時，會輸入目錄 `documents/`，並開始遍歷。

1. 會輸入子目錄 `logs/`，並開始遍歷。

1. 物件 `application.txt` 可在 `logs/` 中找到。

1. `logs/` 內沒有其他項目。清單操作從 `logs/` 結束，然後再次進入 `documents/`。

1. `documents/` 目錄會持續遍歷，並找到物件 `readme.txt`。

1. 繼續遍歷 `documents/` 目錄，且會進入 `reports/` 子目錄，然後開始遍歷。

1. 物件 `quarterly.txt` 可在 `reports/` 中找到。

1. `reports/` 內沒有其他項目。清單從 `reports/` 結束，然後再次進入 `documents/`。

1. `documents/` 內不存在其他項目，且清單會傳回。

在此範例中，`logs/` 的順序在 `readme.txt` 之前，`readme.txt` 的順序在 `reports/` 之前。

### 範例 3：對目錄儲存貯體的 S3 `DeleteObject` 請求如何與目錄互動
<a name="s3-express-directory-bucket-examples-delete"></a>

![\[顯示 DELETE 操作之前初始目錄結構的圖表\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/directory-examples-delete-before.png)


1. 在相同的儲存貯體中，當執行 `DELETE(<bucket>, "documents/reports/quarterly.txt")` 操作時，會刪除物件 `quarterly.txt`，將目錄 `reports/` 保留空白，並導致立即刪除。`documents/` 目錄不是空的，因為目錄中同時具有目錄 `logs/` 和物件 `readme.txt`，因此不會遭到刪除。對於此操作，只會刪除一個物件和一個目錄。  
![\[顯示 documents/reports/quarterly.txt 的 DELETE 操作後的目錄結構圖表\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/directory-examples-delete1.png)

1. 執行 `DELETE(<bucket>, "documents/readme.txt")` 操作時，會刪除物件 `readme.txt`。`documents/` 仍未清空，因為其中包含目錄 `logs/`，因此不會遭到刪除。對於此操作，不會刪除任何目錄，只會刪除物件。  
![\[顯示 documents/readme.txt 的 DELETE 操作後的目錄結構圖表\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/directory-examples-delete2.png)

1. 最後，在執行 `DELETE(<bucket>, "documents/logs/application.txt")` 操作時，會刪除 `application.txt`，並將 `logs/` 保留空白，因而導致立即刪除。這會使 `documents/` 保留空白，但也導致立即遭到刪除。對於此操作，會刪除兩個目錄和一個物件。儲存貯體現在已清空。  
![\[顯示 documents/logs/application.txt 的 DELETE 操作後的目錄結構圖表\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/directory-examples-delete3.png)

# 資料落地工作負載
<a name="directory-bucket-data-residency"></a>

AWS 專用本地區域 （專用本地區域） 是一種 AWS 基礎設施，由 完全管理 AWS、專為您或您的社群專用而建置，並放置在您指定的位置或資料中心，以協助符合法規要求。專用本地區域是一種 AWS 本地區域 （本地區域） 產品。如需詳細資訊，請參閱[AWS Dedicated Local Zones](https://aws.amazon.com/dedicatedlocalzones/)。

在 Dedicated Local Zones 中，您可以建立 S3 目錄儲存貯體將資料儲存在特定資料周界，這有助於支援資料落地和隔離使用案例。Dedicated Local Zones 中的目錄儲存貯體可支援 S3 Express One Zone 和 S3 One Zone-Infrequent Access (S3 One Zone-IA、Z-IA) 儲存類別。目錄儲存貯體目前不適用於其他 [AWS Local Zones 位置](https://aws.amazon.com/about-aws/global-infrastructure/localzones/locations/)。

您可以在專用本機區域中使用 AWS 管理主控台、REST API、 AWS Command Line Interface (AWS CLI) 和 AWS SDKs。



如需在 Local Zones 中使用目錄儲存貯體的詳細資訊，請參閱下列主題：

**Topics**
+ [Local Zones 中目錄儲存貯體的概念](s3-lzs-for-directory-buckets.md)
+ [啟用 Local Zones 的帳戶](opt-in-directory-bucket-lz.md)
+ [來自 VPC 的私有連線](connectivity-lz-directory-buckets.md)
+ [在本機區域中建立目錄儲存貯體](create-directory-bucket-LZ.md)
+ [對本機區域中的目錄儲存貯體進行身分驗證和授權](iam-directory-bucket-LZ.md)

# Local Zones 中目錄儲存貯體的概念
<a name="s3-lzs-for-directory-buckets"></a>

在 Local Zone 中建立目錄儲存貯體之前，您必須擁有您要建立儲存貯體的 Local Zone ID。您可以使用 [DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) API 操作來尋找所有 Local Zone 資訊。此 API 操作列出 Local Zones 的相關資訊，包括其 Local Zone ID、父區域、網路邊界群組和選擇加入狀態。在您擁有 Local Zone ID 且選擇加入後，您可以在 Local Zone 中建立目錄儲存貯體。目錄儲存貯體名稱是由您提供的基本名稱，以及包含儲存貯體位置的區域 ID 所組成，字尾為 `--x-s3`。

本機區域使用 Amazon 備援和非常高頻寬的私有網路連線到**父區域**。這可讓在 Local Zone 中執行的應用程式快速、安全且無縫地存取 AWS 服務 父區域中的其餘 。**父區域 ID** 是處理一些 Local Zone 控制平面操作的區域 ID。**網路邊界群組**是用來 AWS 公告公有 IP 地址的唯一群組。如需 Local Zones、父區域和父區域 ID 的詳細資訊，請參閱《[AWS Local Zones 使用者指南》中的 Local Zones 概念](https://docs.aws.amazon.com/local-zones/latest/ug/concepts-local-zones.html)。 AWS * *

所有目錄儲存貯體都會使用 `s3express` 命名空間，這與一般用途儲存貯體的 `s3` 命名空間不同。對於目錄儲存貯體，請求會路由到**地區端點**或**區域端點**。如果您使用 AWS 管理主控台、 或 AWS SDKs AWS CLI，系統會自動為您處理路由。

大多數的儲存貯體層級 API 操作 (例如 `CreateBucket` 和 `DeleteBucket`) 會路由到地區端點，這些操作也稱為地區端點 API 操作。地區端點的格式為 `s3express-control.ParentRegionCode.amazonaws.com`。所有物件層級 API 操作 (例如 `PutObject`) 和兩個儲存貯體層級 API 操作 (`CreateSession` 和 `HeadBucket`) 都會路由到區域端點，這些操作也稱為區域端點 API 操作。區域端點的格式為 `s3express-LocalZoneID.ParentRegionCode.amazonaws.com`。如需依端點類型列出的 API 操作完整清單，請參閱[目錄儲存貯體 API 操作](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-differences.html#s3-express-differences-api-operations)。

若要從虛擬私有雲端 (VPC) 存取本機區域中的目錄儲存貯體，您可以使用閘道 VPC 端點。使用閘道端點不需額外付費。若要設定閘道 VPC 端點以存取本機區域中的目錄儲存貯體和物件，請參閱[來自 VPC 的私有連線](connectivity-lz-directory-buckets.md)。

# 啟用 Local Zones 的帳戶
<a name="opt-in-directory-bucket-lz"></a>

下列主題說明如何為 Dedicated Local Zones 啟用帳戶。

對於 AWS 專用本機區域 （專用本機區域） 中的所有服務，包括 Amazon S3，您的管理員必須先啟用您的 ， AWS 帳戶 才能在專用本機區域中建立或存取任何資源。您可以使用 [DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) API 操作來確認您的帳戶 ID 的 Local Zone 存取權。

為了進一步保護 Amazon S3 中的資料，您預設只能存取自己建立的 S3 資源。Local Zones 中的儲存貯體預設會啟用所有 S3 封鎖公開存取設定，且 S3 物件擁有權會設定為儲存貯體擁有者強制執行。這些設定無法修改。或者，若要僅限在本機區域網路邊界群組內存取，您可以在 IAM 政策中使用條件索引鍵 `s3express:AllAccessRestrictedToLocalZoneGroup`。如需詳細資訊，請參閱[對本機區域中的目錄儲存貯體進行身分驗證和授權](iam-directory-bucket-LZ.md)。

# 來自 VPC 的私有連線
<a name="connectivity-lz-directory-buckets"></a>

若要減少封包在網路上花費的時間，請使用閘道端點設定您的虛擬私有雲端 (VPC)，以存取可用區域中的目錄儲存貯體，同時將流量保留在 AWS 網路中，無需額外費用。

**設定閘道 VPC 端點**

1. 開啟 [Amazon VPC 主控台](https://console.aws.amazon.com/vpc/)。

1. 在導覽窗格中選擇**端點**。

1. 選擇**建立端點**。

1. 建立端點的名稱。

1. 對於 **Service category** (服務類別)，選擇 **AWS 服務**。

1. 針對**服務**，新增篩選條件 **Type=Gateway**，然後選擇 **com.amazonaws.*region*.s3express** 旁邊的選項按鈕。

1. 針對 **VPC**，選擇要在其中建立端點的 VPC。

1. 針對**路由表**，選擇端點要使用之 VPC 中的路由表。建立端點之後，路由記錄會新增至您在此步驟中選取的路由表。

1. 針對**政策**，選擇**完整存取**，以允許 VPC 端點上所有資源的所有主體進行所有操作。否則，選擇**自訂**以連接 VPC 端點政策，該政策會控制主體在 VPC 端點上對資源執行操作的許可。

1. 針對 **IP address type** (IP 地址類型)，從下列選項中選擇：
   +  **IPv4** – 將 IPv4 地址指派給端點網路介面。只有當所有選取的子網路都具有 IPv4 地址範圍，且此服務接受 IPv4 請求時，才支援此選項。
   +  **IPv6** – 將 IPv6 地址指派給端點網路介面。只有當所有選取的子網路都是僅限 IPv6 子網路，且此服務接受 IPv6 請求時，才支援此選項。
   +  **Dualstack** – 將 IPv4 和 IPv6 地址指派給端點網路介面。只有當所有選取的子網路都具有 IPv4 和 IPv6 地址範圍，且此服務接受 IPv4 和 IPv6 請求時，才支援此選項。

1. (選用) 若要新增標籤，請選擇**新增標籤**，然後輸入標籤金鑰和標籤值。

1. 選擇**建立端點**。

若要進一步了解閘道 VPC 端點，請參閱《AWS PrivateLink 指南》**中的[閘道端點](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html)。對於資料落地使用案例，建議您只使用閘道 VPC 端點從 VPC 存取儲存貯體。當存取僅限於 VPC 或 VPC 端點時，您可以透過 AWS 管理主控台、REST API AWS CLI和 AWS SDKs存取物件。

**注意**  
若要使用 限制對 VPC 或 VPC 端點的存取 AWS 管理主控台，您必須使用 AWS 管理主控台 私有存取。如需詳細資訊，請參閱《AWS 管理主控台 指南》**中的[AWS 管理主控台 私有存取](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/console-private-access.html)。

# 在本機區域中建立目錄儲存貯體
<a name="create-directory-bucket-LZ"></a>

在 Dedicated Local Zones 中，您可以建立目錄儲存貯體在特定資料周邊儲存和擷取物件，以協助符合您的資料落地和隔離使用案例。S3 目錄儲存貯體是 Local Zones 中唯一支援的儲存貯體類型，且包含稱為 `LocalZone` 的儲存貯體位置類型。目錄儲存貯體名稱是由您提供的基本名稱以及包含儲存貯體位置區域 ID 和 `--x-s3` 的字尾所組成。您可以使用 [DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) API 操作來取得本機區域 ID 清單。如需詳細資訊，請參閱[目錄儲存貯體命名規則](directory-bucket-naming-rules.md)。

**注意**  
對於 AWS 專用本機區域 （專用本機區域） 中的所有服務，包括 S3，您的管理員必須先啟用您的 ， AWS 帳戶 才能在專用本機區域中建立或存取任何資源。如需詳細資訊，請參閱[啟用 Local Zones 的帳戶](opt-in-directory-bucket-lz.md)。
對於資料落地要求，建議您只從閘道 VPC 端點存取儲存貯體。如需詳細資訊，請參閱[來自 VPC 的私有連線](connectivity-lz-directory-buckets.md)。
若要僅限在本機區域網路邊界群組內存取，您可以在 IAM 政策中使用條件索引鍵 `s3express:AllAccessRestrictedToLocalZoneGroup`。如需詳細資訊，請參閱[對本機區域中的目錄儲存貯體進行身分驗證和授權](iam-directory-bucket-LZ.md)。

以下說明如何使用 AWS 管理主控台 AWS CLI、 和 AWS SDKs 在單一本機區域中建立目錄儲存貯體。

## 使用 S3 主控台
<a name="create-directory-bucket-lz-console"></a>

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 開啟 Amazon S3 主控台。

1. 在頁面頂端的導覽列中，選擇目前顯示的名稱 AWS 區域。​接下來，選擇您要在其中建立目錄儲存貯體之本機區域的父區域。
**注意**  
如需父區域的詳細資訊，請參閱[Local Zones 中目錄儲存貯體的概念](s3-lzs-for-directory-buckets.md)。

1. 在左側導覽窗格中，選擇 **Buckets** (儲存貯體)。

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

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

1. 在**一般組態**下，檢視您要在其中建立儲存貯體的 AWS 區域 。

1.  針對**儲存貯體類型**，選擇**目錄**。
**注意**  
如果您已選擇不支援目錄儲存貯體的區域，儲存貯體類型預設為一般用途儲存貯體。若要建立目錄儲存貯體，您必須選擇支援的區域。如需支援目錄儲存貯體的區域清單，請參閱[目錄儲存貯體的地區和區域端點](s3-express-Regions-and-Zones.md)。
在您建立儲存貯體之後，便無法變更儲存貯體類型。

1. 在**儲存貯體位置**下，選擇您要使用的本機區域。
**注意**  
儲存貯體建立之後，就無法變更本機區域。

1. 在**儲存貯體位置**下，選取核取方塊，表示您確實了解在本機區域發生中斷時，您的資料可能無法使用或遺失。
**重要**  
雖然目錄儲存貯體會儲存在單一本機區域內的多部裝置，但不會以備援方式跨本機區域儲存資料。

1. 針對**儲存貯體名稱**，輸入您的目錄儲存貯體的名稱。

   如需目錄儲存貯體命名規則的詳細資訊，請參閱[一般用途儲存貯體命名規則](bucketnamingrules.md)。當您使用主控台建立目錄儲存貯體時，您提供的基本名稱會自動新增字尾。此字尾包含您所選擇本機區域的區域 ID。

   建立儲存貯體後，便無法變更其名稱。
**重要**  
請勿在儲存貯體名稱中包含敏感資訊，例如帳號。在指向儲存貯體中之物件的 URL 中，會顯示儲存貯體名稱。

1. 在**物件擁有權**下，會自動啟用**儲存貯體擁有者強制執行**設定，並停用所有存取控制清單 (ACL)。對於目錄儲存貯體，ACL 已停用且無法啟用。

   啟用**儲存貯體擁有者強制執行**時，儲存貯體擁有者會自動擁有並完全控制儲存貯體中的每個物件。ACL 不再影響 S3 儲存貯體中資料的存取許可。儲存貯體單獨使用政策來定義存取控制。Amazon S3 中的大多數新式使用案例不再需要使用 ACL。如需詳細資訊，請參閱[控制物件的擁有權並停用儲存貯體的 ACL](about-object-ownership.md)。

1. 在**此儲存貯體的「封鎖公開存取」設定**下，會自動啟用您目錄儲存貯體的所有封鎖公開存取設定。您無法修改目錄儲存貯體的這些設定。如需封鎖公開存取的詳細資訊，請參閱 [封鎖對 Amazon S3 儲存體的公開存取權](access-control-block-public-access.md)。

1. 在**預設加密**下，目錄儲存貯體預設會**使用 Amazon S3 受管金鑰的伺服器端加密 (SSE-S3)** 來加密資料。您也可以選擇使用 ** AWS Key Management Service 金鑰的伺服器端加密 (SSE-KMS) 來加密**目錄儲存貯體中的資料。

1. 選擇**建立儲存貯體**。

   建立儲存貯體之後，您可以新增檔案和資料夾至儲存貯體。如需詳細資訊，請參閱[使用目錄儲存貯體中的物件](directory-buckets-objects.md)。

## 使用 AWS CLI
<a name="create-directory-bucket-lz-cli"></a>

此範例示範如何使用 AWS CLI在本機區域中建立目錄儲存貯體。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

建立目錄儲存貯體時，您必須提供組態詳細資訊，並使用下列命名慣例：`bucket-base-name--zone-id--x-s3`。

```
aws s3api create-bucket
--bucket bucket-base-name--zone-id--x-s3
--create-bucket-configuration 'Location={Type=LocalZone,Name=local-zone-id},Bucket={DataRedundancy=SingleLocalZone,Type=Directory}'
--region parent-region-code
```

如需本機區域 ID 和父區域代碼的詳細資訊，請參閱[Local Zones 中目錄儲存貯體的概念](s3-lzs-for-directory-buckets.md)。如需 AWS CLI 命令的詳細資訊，請參閱AWS CLI 命令參考**中的 [create-bucket](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-bucket.html)。

## 使用 AWS SDKs
<a name="create-directory-bucket-lz-sdks"></a>

------
#### [ SDK for Go ]

此範例示範如何使用 適用於 Go 的 AWS SDK在本機區域中建立目錄儲存貯體。

**Example**  

```
var bucket = "bucket-base-name--zone-id--x-s3" // The full directory bucket name

func runCreateBucket(c *s3.Client) {
    resp, err := c.CreateBucket(context.Background(), &s3.CreateBucketInput{
        Bucket: &bucket,
        CreateBucketConfiguration: &types.CreateBucketConfiguration{
            Location: &types.LocationInfo{
                Name: aws.String("local-zone-id"),
                Type: types.LocationTypeLocalZone,
            },  
            Bucket: &types.BucketInfo{
                DataRedundancy: types.DataRedundancySingleLocalZone,
                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") // No operation performed, just printing a message
        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在本機區域中建立目錄儲存貯體。

**Example**  

```
public static void createBucket(S3Client s3Client, String bucketName) {

    //Bucket name format is {base-bucket-name}--{local-zone-id}--x-s3
    //example: doc-example-bucket--local-zone-id--x-s3 is a valid name for a directory bucket created in a Local Zone.

    CreateBucketConfiguration bucketConfiguration = CreateBucketConfiguration.builder()
             .location(LocationInfo.builder()
                     .type(LocationType.LOCAL_ZONE)
                     .name("local-zone-id").build()) //this must match the Local Zone ID in your bucket name
             .bucket(BucketInfo.builder()
                    .type(BucketType.DIRECTORY)
                    .dataRedundancy(DataRedundancy.SINGLE_LOCAL_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);
         }
    }
```

------
#### [ 適用於 JavaScript 的 AWS SDK ]

此範例示範如何使用 適用於 JavaScript 的 AWS SDK在本機區域中建立目錄儲存貯體。

**Example**  

```
// 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 = "parent-region-code";
const zone = "local-zone-id";
const suffix = `${zone}--x-s3`;

const s3 = new S3({ region });

const bucketName = `bucket-base-name--${suffix}`; // Full directory bucket name

const createResponse = await s3.createBucket( 
    { Bucket: bucketName, 
      CreateBucketConfiguration: {Location: {Type: "LocalZone", Name: "local-zone-id"},
      Bucket: { Type: "Directory", DataRedundancy: "SingleLocalZone" }}
    } 
   );
```

------
#### [ 適用於 .NET 的 SDK ]

此範例示範如何使用 適用於 .NET 的 SDK在本機區域中建立目錄儲存貯體。

**Example**  

```
using (var amazonS3Client = new AmazonS3Client())
{
    var putBucketResponse = await amazonS3Client.PutBucketAsync(new PutBucketRequest
    {

       BucketName = "bucket-base-name--local-zone-id--x-s3",
       PutBucketConfiguration = new PutBucketConfiguration
       {
         BucketInfo = new BucketInfo { DataRedundancy = DataRedundancy.SingleLocalZone, Type = BucketType.Directory },
         Location = new LocationInfo { Name = "local-zone-id", Type = LocationType.LocalZone }
       }
     }).ConfigureAwait(false);
}
```

------
#### [ SDK for PHP ]

此範例示範如何使用 AWS SDK for PHP在本機區域中建立目錄儲存貯體。

**Example**  

```
require 'vendor/autoload.php';

$s3Client = new S3Client([

    'region'      => 'parent-region-code',
]);


$result = $s3Client->createBucket([
    'Bucket' => 'bucket-base-name--local-zone-id--x-s3',
    'CreateBucketConfiguration' => [
        'Location' => ['Name'=> 'local-zone-id', 'Type'=> 'LocalZone'],
        'Bucket' => ["DataRedundancy" => "SingleLocalZone" ,"Type" => "Directory"]   ],
]);
```

------
#### [ SDK for Python ]

此範例示範如何使用 適用於 Python (Boto3) 的 AWS SDK在本機區域中建立目錄儲存貯體。

**Example**  

```
import logging
import boto3
from botocore.exceptions import ClientError

def create_bucket(s3_client, bucket_name, local_zone):
    '''
    Create a directory bucket in a specified Local Zone

    :param s3_client: boto3 S3 client
    :param bucket_name: Bucket to create; for example, 'bucket-base-name--local-zone-id--x-s3'
    :param local_zone: String; Local Zone ID to create the bucket in
    :return: True if bucket is created, else False
    '''

    try:
        bucket_config = {
                'Location': {
                    'Type': 'LocalZone',
                    'Name': local_zone
                },
                'Bucket': {
                    'Type': 'Directory', 
                    'DataRedundancy': 'SingleLocalZone'
                }
            }
        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 = 'parent-region-code'
    local_zone = 'local-zone-id'
    s3_client = boto3.client('s3', region_name = region)
    create_bucket(s3_client, bucket_name, local_zone)
```

------
#### [ SDK for Ruby ]

此範例示範如何使用 適用於 Ruby 的 AWS SDK在本機區域中建立目錄儲存貯體。

**Example**  

```
s3 = Aws::S3::Client.new(region:'parent-region-code')
s3.create_bucket(
  bucket: "bucket-base-name--local-zone-id--x-s3",
  create_bucket_configuration: {
    location: { name: 'local-zone-id', type: 'LocalZone' },
    bucket: { data_redundancy: 'SingleLocalZone', type: 'Directory' }
  }
)
```

------

# 對本機區域中的目錄儲存貯體進行身分驗證和授權
<a name="iam-directory-bucket-LZ"></a>

Local Zones 中的目錄儲存貯體支援 AWS Identity and Access Management (IAM) 授權和工作階段型授權。如需對目錄儲存貯體進行身分驗證和授權的詳細資訊，請參閱[驗證和授權請求](s3-express-authenticating-authorizing.md)。

## Resources
<a name="directory-bucket-lz-resources"></a>

目錄儲存貯體的 Amazon Resource Name (ARNs) 包含`s3express`命名空間、 AWS 父區域、 AWS 帳戶 ID 和包含區域 ID 的目錄儲存貯體名稱。若要存取並對目錄儲存貯體執行動作，您必須使用下列 ARN 格式：

```
arn:aws:s3express:region-code:account-id:bucket/bucket-base-name--ZoneID--x-s3
```

對於本機區域中的目錄儲存貯體，區域 ID 是本機區域的 ID。如需有關 Local Zones 內目錄儲存貯體的詳細資訊，請參閱[Local Zones 中目錄儲存貯體的概念](s3-lzs-for-directory-buckets.md)。如需 ARN 的詳細資訊，請參閱「IAM 使用者指南」**中的 [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)。如需資源的詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM JSON 政策元素：Resource](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html)。

## 本機區域中目錄儲存貯體的條件索引鍵
<a name="condition-key-db-lz"></a>

在 Local Zones 中，您可以在 IAM 政策中使用所有這些[條件索引鍵](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3express.html#amazons3express-policy-keys)。此外，若要在本機區域網路邊界群組周圍建立資料周邊，您可以使用條件索引鍵 `s3express:AllAccessRestrictedToLocalZoneGroup` 拒絕來自群組外部的所有請求。

您可以使用下列條件索引鍵來進一步縮小套用 IAM 政策陳述式的條件。如需目錄儲存貯體支援的 API 操作、政策動作和條件索引鍵完整清單，請參閱[目錄儲存貯體的政策動作](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam.html#s3-express-security-iam-actions)。

**注意**  
下列條件索引鍵僅適用於本機區域，可用區域和 AWS 區域並不支援。


| API 操作 | 政策動作 | Description | 條件金鑰 | 說明 | Type | 
| --- | --- | --- | --- | --- | --- | 
|  [區域端點 API 操作](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-APIs.html)  |  s3express:CreateSession  |  准許建立工作階段權杖，此權杖用於授予所有區域端點 API 操作的存取權，例如 `CreateSession`、`HeadBucket`、`CopyObject`、`PutObject` 和 `GetObject`。  |  s3express:AllAccessRestrictedToLocalZoneGroup  | 篩選儲存貯體的所有存取權，除非請求來自此條件金鑰中提供的 AWS Local Zone 網路邊界群組。 **值：**本機區域網路邊界群組值   |  String  | 

## 政策範例
<a name="directory-bucket-lz-policies"></a>

若要限制物件存取來自您定義之資料落地界限內的請求 (具體而言，本機區域群組是相同 AWS 區域的一組父本機區域)，您可以設定下列任何政策：
+ 服務控制政策 (SCP)。如需 SCP 的資訊，請參閱《AWS Organizations 使用者指南》**中的[服務控制政策 (SCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。
+ IAM 角色的 IAM 身分型政策。
+ VPC 端點政策。如需 VPC 端點政策的詳細資訊，請參閱《AWS PrivateLink 指南》**中的[使用端點政策控制對 VPC 端點的存取](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。
+ S3 儲存貯體政策。

**注意**  
條件索引鍵 `s3express:AllAccessRestrictedToLocalZoneGroup` 不支援從內部部署環境進行存取。若要支援從內部部署環境進行存取，您必須將來源 IP 新增至政策。如需詳細資訊，請參閱《IAM 使用者指南》中的 [aws:SourceIp](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip)。

**Example – SCP 政策**  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Access-to-specific-LocalZones-only",
            "Effect": "Deny",
            "Action": [
                "s3express:*",
            ],
            "Resource": "*",
            "Condition": {
                "StringNotEqualsIfExists": {
                    "s3express:AllAccessRestrictedToLocalZoneGroup": [
                        "local-zone-network-border-group-value"
                    ]
                }
            }
        }
    ]
}
```

**Example – IAM 身分型政策 (連接至 IAM 角色)**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Deny",
        "Action": "s3express:CreateSession",
        "Resource": "*",
        "Condition": {
            "StringNotEqualsIfExists": {
                "s3express:AllAccessRestrictedToLocalZoneGroup": [
                    "local-zone-network-border-group-value"
                ]              
            }
        }
    }
}
```

**Example – VPC 端點政策**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {       
            "Sid": "Access-to-specific-LocalZones-only",
            "Principal": "*",
            "Action": "s3express:CreateSession",
            "Effect": "Deny",
            "Resource": "*",
            "Condition": {
                 "StringNotEqualsIfExists": {
                     "s3express:AllAccessRestrictedToLocalZoneGroup": [
                         "local-zone-network-border-group-value"
                     ]
                 }   
            }
        }
    ]
}
```

**Example – 儲存貯體政策**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {       
            "Sid": "Access-to-specific-LocalZones-only",
            "Principal": "*",
            "Action": "s3express:CreateSession",
            "Effect": "Deny",
            "Resource": "*",
            "Condition": {
                 "StringNotEqualsIfExists": {
                     "s3express:AllAccessRestrictedToLocalZoneGroup": [
                         "local-zone-network-border-group-value"
                     ]
                 }   
            }
        }
    ]
}
```

# 目錄儲存貯體的不同之處
<a name="s3-express-differences"></a>

使用 Amazon S3 時，您可以選擇最適合您應用程式和效能要求的儲存貯體類型。目錄儲存貯體是最適合用於低延遲或資料落地使用案例的儲存貯體類型。如需目錄儲存貯體的詳細資訊，請參閱 [使用目錄儲存貯體](directory-buckets-overview.md)。

 如需使用目錄儲存貯體有何不同的詳細資訊，請參閱下列主題。

**Topics**
+ [目錄儲存貯體的不同之處](#s3-express-specifications)
+ [目錄儲存貯體支援的 API 操作](#s3-express-differences-api-operations)
+ [目錄儲存貯體不支援 Amazon S3 功能](#s3-express-differences-unsupported-features)

## 目錄儲存貯體的不同之處
<a name="s3-express-specifications"></a>
+ **目錄儲存貯體名稱** 
  +  目錄儲存貯體名稱包含您提供的基本名稱和尾碼，其中包含儲存貯體所在 AWS 區域 （可用區域或本機區域） 的 ID，後面接著 `--x-s`。如需規則清單和目錄儲存貯體名稱範例，請參閱[目錄儲存貯體命名規則](https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html)。
+ **`ListObjectsV2` 行為** 
  + 對於目錄儲存貯體，`ListObjectsV2` 不會按字典順序 (按字母順序) 傳回物件。此外，字首的結尾必須是分隔符號，並且只能指定「/」作為分隔符號。
  + 對於目錄儲存貯體，`ListObjectsV2` 回應包含僅與進行中分段上傳相關的字首。
+ **刪除行為**：當您刪除目錄儲存貯體中的物件時，Amazon S3 會週期性地刪除物件路徑中的所有空目錄。例如，如果您刪除物件金鑰 `dir1/dir2/file1.txt`，則 Amazon S3 會刪除 `file1.txt`。如果 ` dir1/` 和 `dir2/` 目錄是空的且未包含任何其他物件，則 Amazon S3 也會刪除這些目錄。
+ **ETag 和檢查總和** – 目錄儲存貯體的實體標籤 (ETag) 是物件唯一的隨機英數字元字串，而非 MD5 檢查總和。如需有關使用其他檢查總和及目錄儲存貯體的詳細資訊，請參閱 [S3 其他檢查總和最佳實務](s3-express-optimizing-performance.md#s3-express-optimizing-performance-checksums)。
+ **`DeleteObjects` 請求中的物件索引鍵** 
  + `DeleteObjects` 請求中的物件索引鍵必須至少包含一個非空格字元。`DeleteObjects` 請求中不支援只包含空格字元的字串。
  + `DeleteObjects` 請求中的物件索引鍵不得包含 Unicode 控制字元，但新增一行 (`\n`)、tab 鍵 (`\t`) 和換行 (`\r`) 字元除外。
+ **地區與區域端點** – 您可以透過地區端點對目錄儲存貯體執行儲存貯體管理 API 操作，這些操作也稱為地區端點 API 操作。地區端點 API 操作的範例為 CreateBucket 和 DeleteBucket。建立目錄儲存貯體後，您可以使用區域 (Zone) 端點 API 操作來上傳和管理目錄儲存貯體中的物件。區域端點 API 操作可透過區域端點提供使用。區域端點 API 操作的範例包括 `PutObject` 和 `CopyObject`。使用目錄儲存貯體時，您必須在所有請求中指定區域。對於區域 (Region) 端點，您可以指定「區域」，例如 `s3express-control.us-west-2.amazonaws.com`。對於區域 (Zone) 端點，您可以指定「區域」和「可用區域」，例如 `s3express-usw2-az1.us-west-2.amazonaws.com`。如需詳細資訊，請參閱[目錄儲存貯體的地區和區域端點](s3-express-Regions-and-Zones.md)。
+ **分段上傳** – 您可以使用分段上傳程序來上傳和複製儲存在目錄儲存貯體中的大型物件。然而，以下是對儲存在目錄儲存貯體中的物件使用分段上傳程序時的一些差異。如需詳細資訊，請參閱[搭配目錄儲存貯體使用分段上傳](s3-express-using-multipart-upload.md)。
  + 物件建立日期是指分段上傳的完成日期。
  + 分段的各段編號必須使用連續的分段編號。如果您嘗試使用非連續分段編號完成分段上傳請求，則 Amazon S3 會產生 HTTP `400 (Bad Request)` 錯誤。
  + 分段上傳的啟動器只有在透過 `s3express:CreateSession` 許可授予明確允許存取 `AbortMultipartUpload` 的情況下，才能中止分段上傳請求。如需詳細資訊，請參閱[使用 IAM 授權地區端點 API 操作](s3-express-security-iam.md)。
+ **清空目錄儲存貯體** – 透過 AWS Command Line Interface (CLI) 的`s3 rm`命令、透過掛載點`delete`的操作，以及透過 的**清空**儲存貯體選項按鈕， AWS 管理主控台 都無法刪除目錄儲存貯體中的進行中分段上傳。若要刪除這些進行中的分段上傳，請使用 `ListMultipartUploads` 操作列出儲存貯體內進行中的分段上傳，然後使用 `AbortMultipartUpload` 操作中止所有進行中的分段上傳。
+ **AWS Local Zones** – 只有目錄儲存貯體才支援 Local Zones，而非一般用途儲存貯體。
  +  位於 Local Zones 的目錄儲存貯體不支援將資料附加至現有物件。您只能將資料附加至位於可用區域中的目錄儲存貯體中的現有物件。

## 目錄儲存貯體支援的 API 操作
<a name="s3-express-differences-api-operations"></a>

目錄儲存貯體支援區域 (Region) (儲存貯體層級或控制平面) 和區域 (Zone) (物件層級或資料平面) 端點 API 操作。如需詳細資訊，請參閱[目錄儲存貯體的網路](s3-express-networking.md)及[端點和閘道 VPC 端點](directory-bucket-high-performance.md#s3-express-overview-endpoints)。如需支援的 API 操作清單，請參閱 [目錄儲存貯體 API 操作](s3-express-APIs.md)。

## 目錄儲存貯體不支援 Amazon S3 功能
<a name="s3-express-differences-unsupported-features"></a>

目錄儲存貯體不支援下列 Amazon S3 功能：
+ AWS 受管政策
+ AWS PrivateLink 適用於 S3 的
+ MD5 檢查總和
+ 多重要素驗證 (MFA) 刪除
+ S3 物件鎖定
+ 請求者付款
+ S3 存取授權
+ Amazon CloudWatch 請求指標
+ S3 事件通知
+ S3 生命週期轉換動作
+ S3 多區域存取點
+ S3 Object Lambda 存取點
+ S3 版本控制
+ S3 庫存
+ S3 複寫 
+ 物件標籤
+ S3 Select
+ 伺服器存取日誌
+ 靜態網站託管
+ S3 Storage Lens
+ S3 Storage Lens 群組
+ S3 Transfer Acceleration
+ 使用 AWS Key Management Service (AWS KMS) 金鑰的雙層伺服器端加密 (DSSE-KMS)
+ 使用客戶提供金鑰 (SSE-C) 的伺服器端加密
+ 在 Amazon S3 主控台中建立新的儲存貯體時，複製現有儲存貯體設定的選項
+ 增強型存取遭拒 (HTTP `403 Forbidden`) 錯誤訊息

# 目錄儲存貯體的網路
<a name="s3-express-networking"></a>

若要存取目錄儲存貯體和其中的物件，可使用與標準 Amazon S3 端點不同的地區與區域 API 端點。需要區域 (Zone) 或區域 (Region) 端點，取決於您使用的 S3 API 操作。如需依端點類型列出的完整 API 操作清單，請參閱 [目錄儲存貯體的不同之處](s3-express-differences.md)。

您可以透過閘道虛擬私有雲端 (VPC) 端點存取區域 (Zone) 和區域 (Region) API 操作。

下列主題說明使用閘道 VPC 端點存取 S3 Express One Zone 的網路功能需求。

**Topics**
+ [端點](#s3-express-endpoints)
+ [設定 VPC 閘道端點](#s3-express-networking-vpc-gateway-directory)

## 端點
<a name="s3-express-endpoints"></a>

您可以使用閘道 VPC 端點從 VPC 存取目錄儲存貯體和其中的物件。目錄儲存貯體使用地區與區域 API 端點。需要區域 (Region) 或區域 (Zone) 端點，取決於您使用的 Amazon S3 API 操作。使用閘道端點不需額外付費。

儲存貯體層級 (也就是控制平面) API 操作可透過區域 (Region) 端點提供使用，並且稱為區域端點 API 操作。區域端點 API 操作的範例包括 `CreateBucket` 和 `DeleteBucket`。當您建立目錄儲存貯體時，可以選擇要在其中建立目錄儲存貯體的單一區域 (可用區域或本機區域)。建立目錄儲存貯體後，您可以使用區域 (Zone) 端點 API 操作來上傳和管理目錄儲存貯體中的物件。

物件層級 (也就是資料平面) API 操作可透過區域 (Zone) 端點提供使用，並且稱為區域端點 API 操作。區域端點 API 操作的範例包括 `CreateSession` 和 `PutObject`。

如需支援可用區域中目錄儲存貯體的端點和位置詳細資訊，請參閱[可用區域中目錄儲存貯體的端點](directory-bucket-az-networking.md#s3-express-endpoints-az)。

如需支援本機區域中目錄儲存貯體的端點和位置詳細資訊，請參閱[啟用 Local Zones 的帳戶](opt-in-directory-bucket-lz.md)。

## 設定 VPC 閘道端點
<a name="s3-express-networking-vpc-gateway-directory"></a>

若要設定閘道 VPC 端點以存取可用區域中的目錄儲存貯體，請參閱[設定 VPC 閘道端點](directory-bucket-az-networking.md#s3-express-networking-vpc-gateway)。

若要設定閘道 VPC 端點以存取本機區域中的目錄儲存貯體，請參閱[來自 VPC 的私有連線](connectivity-lz-directory-buckets.md)。

# 目錄儲存貯體命名規則
<a name="directory-bucket-naming-rules"></a>

當您在 Amazon S3 中建立目錄儲存貯體時，須遵循下列儲存貯體命名規則。若要了解一般用途儲存貯體命名規則，請參閱 [一般用途儲存貯體命名規則](bucketnamingrules.md)。

目錄儲存貯體名稱包含您提供的基本名稱，以及包含儲存貯體位於 和 之 AWS 區域 （可用區域或本機區域） ID 的尾碼`--x-s3`。*zone-id* 可以是可用區域或本機區域的 ID。

```
base-name--zoneid--x-s3
```

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

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

**注意**  
當您使用主控台建立目錄儲存貯體時，您提供的基本名稱會自動新增字尾。此字尾包含您所選擇區域 (可用區域或本機區域) 的區域 ID。  
當您使用 API 建立目錄儲存貯體時，您必須在請求中提供完整的字尾，包括區域 ID。如需區域 ID 清單，請參閱[端點](s3-express-networking.md#s3-express-endpoints)。

目錄儲存貯體適用下列命名規則。
+ 在所選區域內是唯一的 (AWS 可用區域或 AWS 本機區域）。
+ 名稱長度必須介於 3 (最小值) 到 63 (最大值) 個字元之間，包括字尾在內。
+ 只能由小寫字母、數字和連字號 (-) 組成。
+ 開頭和結尾為字母或數字。
+ 必須包含下列字尾：`--zone-id--x-s3`。
+ 儲存貯體名稱必須以字首 `xn--` 開頭。
+ 儲存貯體名稱必須以字首 `sthree-` 開頭。
+ 儲存貯體名稱必須以字首 `sthree-configurator` 開頭。
+ 儲存貯體名稱必須以字首 ` amzn-s3-demo-` 開頭。
+ 儲存貯體名稱不得以尾碼 `-s3alias` 結尾。存取點別名名稱會保留此尾碼。如需詳細資訊，請參閱[存取點別名](access-points-naming.md#access-points-alias)。
+ 儲存貯體名稱不得以尾碼 `--ol-s3` 結尾。Object Lambda 存取點別名名稱會保留此尾碼。如需詳細資訊，請參閱[如何針對您的 S3 儲存貯體 Object Lambda 存取點使用儲存貯體樣式別名](olap-use.md#ol-access-points-alias)。
+ 儲存貯體名稱不得以尾碼 `.mrap` 結尾。多區域存取點名稱會保留此字尾。如需詳細資訊，請參閱[命名 Amazon S3 多區域存取點的規則](multi-region-access-point-naming.md)。

# 檢視目錄儲存貯體屬性
<a name="directory-bucket-view"></a>

您可以使用 Amazon S3 主控台檢視和設定 Amazon S3 目錄儲存貯體的屬性。如需詳細資訊，請參閱[使用目錄儲存貯體](directory-buckets-overview.md)。

## 使用 S3 主控台
<a name="directory-bucket-view-console"></a>

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**目錄儲存貯體**。

1. 在**目錄儲存貯體**清單中，選擇要檢視其屬性的儲存貯體名稱。

1. 選擇**屬性**索引標籤。

1. 您可以在**屬性**索引標籤上檢視儲存貯體的下列屬性：
   + **目錄儲存貯體概觀** – 您可以查看儲存貯體的 AWS 區域、區域 (可用區域或本機區域)、Amazon Resource Name (ARN) 和建立日期。
   + **伺服器端加密設定** – Amazon S3 會套用使用 Amazon S3 受管金鑰的伺服器端加密 (SSE-S3) 作為所有 S3 儲存貯體的基本加密層級。Amazon S3 會在將物件儲存到磁碟之前加密，並在下載物件時解密。如需詳細資訊，請參閱[設定和監控目錄儲存貯體的預設加密](s3-express-bucket-encryption.md)。

     如需目錄儲存貯體所支援功能的詳細資訊，請參閱 [建立和使用目錄儲存貯體](directory-buckets-overview.md#directory-buckets-working)。

# 管理目錄儲存貯體政策
<a name="directory-bucket-bucket-policy"></a>

您可以使用 Amazon S3 主控台、 AWS SDKs 和 AWS CLI 來新增、刪除、更新和檢視 Amazon S3 目錄儲存貯體的儲存貯體政策。如需詳細資訊，請參閱下列主題。如需 Supported AWS Identity and Access Management (IAM) 動作的詳細資訊，請參閱 [使用 IAM 授權地區端點 API 操作](s3-express-security-iam.md)。如需目錄儲存貯體的儲存貯體政策範例，請參閱 [目錄儲存貯體的範例儲存貯體政策](s3-express-security-iam-example-bucket-policies.md)。

**Topics**
+ [新增儲存貯體政策](#directory-bucket-bucket-policy-add)
+ [檢視儲存貯體政策](#directory-bucket-bucket-policy-view)
+ [刪除儲存貯體政策](#directory-bucket-bucket-policy-delete)

## 新增儲存貯體政策
<a name="directory-bucket-bucket-policy-add"></a>

若要將儲存貯體政策新增至目錄儲存貯體，您可以使用 Amazon S3 主控台、 AWS SDK 或 AWS CLI。

### 使用 S3 主控台
<a name="directory-bucket-bucket-policy-add-console"></a>

**建立或編輯儲存貯體政策**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**目錄儲存貯體**。

1. 在**儲存貯體**清單中，選擇您要為其新增政策的儲存貯體名稱。

1. 選擇**許可**索引標籤。

1. 在 **Bucket policy (儲存貯體政策)** 下方，選擇 **Edit (編輯)**。**Edit bucket policy** (編輯儲存貯體政策) 頁面隨即出現。

1. 若要自動產生政策，請選擇**政策產生器**。

   如果您選擇**政策產生器**， AWS 政策產生器會在新視窗中開啟。

   如果您不想使用 AWS 政策產生器，您可以在**政策**區段中新增或編輯 JSON 陳述式。

   1. 在 **AWS 政策產生器**頁面上，針對**選取政策類型**，選擇 **S3 儲存貯體政策**。

   1. 在提供的欄位中輸入資訊，以新增陳述式，然後選擇 **Add Statement** (新增陳述式)。針對您想要新增的任意數量陳述式重複此步驟。如需這些欄位的詳細資訊，請參閱《*IAM 使用者指南》*中的 [IAM JSON 政策元素參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)。
**注意**  
為了您的方便，**編輯儲存貯體政策**頁面會在**政策**文字欄位上方顯示目前儲存貯體的**儲存貯體 ARN **(Amazon Resource Name)。您可以複製此 ARN，以在 **AWS Policy Generator** ( 政策產生器) 頁面上的陳述式中使用。

   1. 完成新增陳述式後，選擇 **Generate Policy** (產生政策)。

   1. 複製產生的政策文字，選擇 **Close** (關閉)，然後退回 Amazon S3 主控台中的 **Edit bucket policy** (編輯儲存貯體政策) 頁面。

1. 在**政策**方塊中，從政策產生器編輯現有政策或貼上儲存貯體 AWS 政策。請務必先處理安全性警告、錯誤、一般警告，以及建議，然後再儲存政策。
**注意**  
儲存貯體政策的大小限制為 20 KB。

1. 選擇 **Save changes** (儲存變更)，這會讓您回到 **Permissions** (許可) 索引標籤。

### 使用 AWS SDKs
<a name="directory-bucket-bucket-policy-add-sdks"></a>

------
#### [ SDK for Java 2.x ]

**Example**  
`PutBucketPolicy` AWS SDK for Java 2.x   

```
public static void setBucketPolicy(S3Client s3Client, String bucketName, String policyText) {
     
       //sample policy text
       /**
        * policy_statement = {
         *         'Version': '2012-10-17',
         *         'Statement': [
         *             {
         *                 'Sid': 'AdminPolicy',
         *                 'Effect': 'Allow',
         *                 'Principal': {
         *                     "AWS": "111122223333"
         *                 },
         *                 'Action': 's3express:*',
         *                 'Resource': 'arn:aws:s3express:region:111122223333:bucket/bucket-base-name--zone-id--x-s3'
         *             }
         *         ]
         *     }
         */
         System.out.println("Setting policy:");
         System.out.println("----");
         System.out.println(policyText);
         System.out.println("----");
         System.out.format("On Amazon S3 bucket: \"%s\"\n", bucketName);
         
         try {
             PutBucketPolicyRequest policyReq = PutBucketPolicyRequest.builder()
                     .bucket(bucketName)
                     .policy(policyText)
                     .build();
             s3Client.putBucketPolicy(policyReq);
             System.out.println("Done!");
         }    
         
         catch (S3Exception e) {
             System.err.println(e.awsErrorDetails().errorMessage());
             System.exit(1);
         }
    }
```

------

### 使用 AWS CLI
<a name="directory-bucket-delete-cli"></a>

此範例示範如何使用 AWS CLI將儲存貯體政策新增至目錄儲存貯體。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
aws s3api put-bucket-policy --bucket bucket-base-name--zone-id--x-s3 --policy file://bucket_policy.json
```

bucket\$1policy.json：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AdminPolicy",
            "Effect": "Allow",
            "Principal": {
                "AWS": "111122223333"
            },
            "Action": "s3express*",
            "Resource": "arn:aws:s3express:us-west-2:111122223333:bucket/amzn-s3-demo-bucket--usw2-az1--x-s3"
        }
    ]
}
```

------

如需詳細資訊，請參閱 AWS Command Line Interface中的 [put-bucket-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-policy.html)。

## 檢視儲存貯體政策
<a name="directory-bucket-bucket-policy-view"></a>

若要檢視目錄儲存貯體的儲存貯體政策，請使用下列範例。

### 使用 AWS CLI
<a name="directory-bucket-bucket-policy-view-cli"></a>

此範例示範如何使用 AWS CLI檢視連接至目錄儲存貯體的儲存貯體政策。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
aws s3api get-bucket-policy --bucket bucket-base-name--zone-id--x-s3
```

如需詳細資訊，請參閱 AWS Command Line Interface中的 [get-bucket-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-policy.html)。

## 刪除儲存貯體政策
<a name="directory-bucket-bucket-policy-delete"></a>

若要刪除目錄儲存貯體的儲存貯體政策，請使用下列範例。

### 使用 AWS SDKs
<a name="directory-bucket-bucket-policy-delete-sdks"></a>

------
#### [ SDK for Java 2.x ]

**Example**  
`DeleteBucketPolicy` AWS SDK for Java 2.x   

```
public static void deleteBucketPolicy(S3Client s3Client, String bucketName) {
      try {
          DeleteBucketPolicyRequest deleteBucketPolicyRequest = DeleteBucketPolicyRequest
                  .builder()
                  .bucket(bucketName)
                  .build()
          s3Client.deleteBucketPolicy(deleteBucketPolicyRequest);
          System.out.println("Successfully deleted bucket policy");
      }
      
      catch (S3Exception e) {
          System.err.println(e.awsErrorDetails().errorMessage());
          System.exit(1);
      }
```

------

### 使用 AWS CLI
<a name="directory-bucket-delete-cli"></a>

此範例示範如何使用 AWS CLI刪除目錄儲存貯體的儲存貯體政策。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
aws s3api delete-bucket-policy --bucket bucket-base-name--zone-id--x-s3
```

如需詳細資訊，請參閱 AWS Command Line Interface中的 [delete-bucket-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-bucket-policy.html)。

# 清空目錄儲存貯體
<a name="directory-bucket-empty"></a>

您可以使用 Amazon S3 主控台來清空 Amazon S3 目錄儲存貯體。如需有關目錄儲存貯體的詳細資訊，請參閱 [使用目錄儲存貯體](directory-buckets-overview.md)。

清空目錄儲存貯體之前，請注意下列事項：
+ 當您清空目錄儲存貯體時，將會刪除內含的所有物件，但會保留目錄儲存貯體本身。
+ 清空目錄儲存貯體之後，清空動作就無法復原。
+ 清空儲存貯體動作正在進行時新增至目錄儲存貯體中的物件，可能會遭到刪除。

如果您也想刪除儲存貯體，請注意下列事項：
+ 您必須先刪除目錄儲存貯體中的所有物件，才能刪除儲存貯體本身。
+ 您必須先中止目錄儲存貯體中正在進行的分段上傳，才能刪除儲存貯體本身。
**注意**  
透過 AWS Command Line Interface (CLI) 的 `s3 rm`命令、透過掛載點`delete`的操作，以及透過 的**空白**儲存貯體選項按鈕， AWS 管理主控台 都無法刪除目錄儲存貯體中的進行中分段上傳。若要刪除這些進行中的分段上傳，請使用 `ListMultipartUploads` 操作列出儲存貯體內進行中的分段上傳，然後使用 `AbortMultipartUpload` 操作中止所有進行中的分段上傳。

若要刪除目錄儲存貯體，請參閱 [刪除目錄儲存貯體](directory-bucket-delete.md)。若要中止進行中的分段上傳，請參閱[中止分段上傳](abort-mpu.md)。

若要清空一般用途儲存貯體，請參閱 [清空一般用途儲存貯體](empty-bucket.md)。

## 使用 S3 主控台
<a name="directory-bucket-empty-console"></a>

**清空目錄儲存貯體。**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**目錄儲存貯體**。

1. 選擇您要清空之儲存貯體名稱旁的選項按鈕，然後選擇**清空**。

1. 在 **Empty bucket** (清空儲存貯體) 頁面上，在文字欄位中輸入 **permanently delete** 以確認您要清空儲存貯體，然後選擇 **Empty** (清空)。

1. 在**清空儲存貯體：狀態**頁面上監控儲存貯體清空的進度。

# 刪除目錄儲存貯體
<a name="directory-bucket-delete"></a>

您只能刪除空的 Amazon S3 目錄儲存貯體。刪除目錄儲存貯體之前，您必須先刪除儲存貯體中的所有物件，並中止所有進行中的分段上傳。

如果目錄儲存貯體連接到存取點，您必須先刪除存取點。如需詳細資訊，請參閱[刪除目錄儲存貯體的存取點](access-points-directory-buckets-delete.md)。

若要清空目錄儲存貯體，請參閱 [清空目錄儲存貯體](directory-bucket-empty.md)。若要中止進行中的分段上傳，請參閱[中止分段上傳](abort-mpu.md)。

若要刪除一般用途儲存貯體，請參閱 [刪除一般用途儲存貯體](delete-bucket.md)。

## 使用 S3 主控台
<a name="directory-bucket-delete-console"></a>

清空目錄儲存貯體並中止所有進行中的分段上傳之後，您可以刪除儲存貯體。

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**目錄儲存貯體**。

1. 在**目錄儲存貯體**清單中，選擇您要刪除之儲存貯體旁的選項按鈕。

1. 選擇 **刪除**。

1. 在**刪除儲存貯體**頁面上的文字欄位中輸入儲存貯體名稱，以確認刪除儲存貯體。
**重要**  
目錄儲存貯體刪除後，即無法復原。

1. 若要刪除目錄儲存貯體，請選擇**刪除儲存貯體**。

## 使用 AWS SDKs
<a name="directory-bucket-delete-sdks"></a>

下列範例使用 AWS SDK for Java 2.x 和 刪除目錄儲存貯體 適用於 Python (Boto3) 的 AWS SDK。

------
#### [ SDK for Java 2.x ]

**Example**  

```
public static void deleteBucket(S3Client s3Client, String bucketName) {
     
    try {
        DeleteBucketRequest del = DeleteBucketRequest.builder()
                .bucket(bucketName)
                .build();
        s3Client.deleteBucket(del);
        System.out.println("Bucket " + bucketName + " has been deleted");
    } 
    catch (S3Exception e) {
        System.err.println(e.awsErrorDetails().errorMessage());
        System.exit(1);
    }
}
```

------
#### [ SDK for Python ]

**Example**  

```
import logging
import boto3
from botocore.exceptions import ClientError

def delete_bucket(s3_client, bucket_name):
    '''
    Delete a directory bucket in a specified Region

    :param s3_client: boto3 S3 client
    :param bucket_name: Bucket to delete; for example, 'doc-example-bucket--usw2-az1--x-s3'
    :return: True if bucket is deleted, else False
    '''

    try:
        s3_client.delete_bucket(Bucket = bucket_name)
    except ClientError as e:
        logging.error(e)
        return False
    return True

if __name__ == '__main__':
    bucket_name = 'BUCKET_NAME'
    region = 'us-west-2'
    s3_client = boto3.client('s3', region_name = region)
```

------

## 使用 AWS CLI
<a name="directory-bucket-delete-cli"></a>

此範例示範如何使用 AWS CLI刪除目錄儲存貯體。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
aws s3api delete-bucket --bucket bucket-base-name--zone-id--x-s3 --region us-west-2
```

如需詳細資訊，請參閱 AWS Command Line Interface中的 [delete-bucket](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-bucket.html                 )。

# 列出目錄儲存貯體
<a name="directory-buckets-objects-ListExamples"></a>

下列範例示範如何使用 、 AWS 管理主控台 AWS SDKs 和 CLI AWS 列出目錄儲存貯體。

## 使用 S3 主控台
<a name="directory-bucket-list-console"></a>

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 開啟 Amazon S3 主控台。

1. 在頁面頂端的導覽列中，選擇目前顯示的名稱 AWS 區域。接著，選擇您要檢視目錄儲存貯體清單的區域。

1. 在左側導覽窗格中，選擇**目錄儲存貯體**。目錄儲存貯體清單隨即出現。若要檢視儲存貯體中的物件、儲存貯體屬性、儲存貯體許可、指標、與儲存貯體相關聯的存取點，或管理儲存貯體，請選擇儲存貯體名稱。

## 使用 AWS SDKs
<a name="directory-bucket-list-sdks"></a>

------
#### [ SDK for Java 2.x ]

**Example**  
下列範例會使用 AWS SDK for Java 2.x列出目錄儲存貯體。  

```
 public static void listBuckets(S3Client s3Client) {
        try {
            ListDirectoryBucketsRequest listDirectoryBucketsRequest = ListDirectoryBucketsRequest.builder().build();
            ListDirectoryBucketsResponse response = s3Client.listDirectoryBuckets(listDirectoryBucketsRequest);
            if (response.hasBuckets()) {
                for (Bucket bucket: response.buckets()) {
                    System.out.println(bucket.name());
                    System.out.println(bucket.creationDate());
                }
            }
        } 
        
        catch (S3Exception e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
```

------
#### [ SDK for Python ]

**Example**  
下列範例會使用 適用於 Python (Boto3) 的 AWS SDK列出目錄儲存貯體。  

```
import logging
import boto3
from botocore.exceptions import ClientError
                                       
def list_directory_buckets(s3_client):
'''
Prints a list of all directory buckets in a Region
                                           
:param s3_client: boto3 S3 client                                         
:return: True if there are buckets in the Region, else False
'''
try:
    response = s3_client.list_directory_buckets()
    for bucket in response['Buckets']:
        print (bucket['Name'])
except ClientError as e:
    logging.error(e)
    return False
return True
                                          
                                          
if __name__ == '__main__': 
    region = 'us-east-1'
    s3_client = boto3.client('s3', region_name = region)
    list_directory_buckets(s3_client)
```

------
#### [ 適用於 .NET 的 SDK ]

**Example**  
下列範例會使用 適用於 .NET 的 AWS SDK列出目錄儲存貯體。  

```
var listDirectoryBuckets = await amazonS3Client.ListDirectoryBucketsAsync(new ListDirectoryBucketsRequest
{
  MaxDirectoryBuckets = 10
  }).ConfigureAwait(false);
```

------
#### [ SDK for PHP ]

**Example**  
下列範例會使用 適用於 PHP 的 AWS SDK列出目錄儲存貯體。  

```
require 'vendor/autoload.php';

$s3Client = new S3Client([
    'region'      => 'us-east-1',
]);
$result = $s3Client->listDirectoryBuckets();
```

------
#### [ SDK for Ruby ]

**Example**  
下列範例會使用 適用於 Ruby 的 AWS SDK列出目錄儲存貯體。  

```
s3 = Aws::S3::Client.new(region:'us-west-1')
s3.list_directory_buckets
```

------

## 使用 AWS CLI
<a name="list-directory-buckets-cli"></a>

下列`list-directory-buckets`範例命令顯示如何使用 AWS CLI 列出 *us-east-1* 區域中的目錄儲存貯體。若要執行此命令，請以您自己的資訊取代 `user input placeholders`。

```
aws s3api list-directory-buckets --region us-east-1 
```

如需詳細資訊，請參閱《AWS CLI 命令參考》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/list-directory-buckets.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/list-directory-buckets.html)。

# 判斷您是否可以存取目錄儲存貯體
<a name="directory-buckets-objects-HeadExamples"></a>

下列 AWS SDK 範例示範如何使用 `HeadBucket` API 操作來判斷 Amazon S3 目錄儲存貯體是否存在，以及您是否具有存取它的許可。

## 使用 AWS SDKs
<a name="directory-bucket-copy-sdks"></a>

下列 AWS SDK for Java 2.x 範例顯示如何判斷儲存貯體是否存在，以及您是否具有存取儲存貯體的許可。

------
#### [ SDK for Java 2.x ]

**Example**  
 AWS SDK for Java 2.x   

```
public static void headBucket(S3Client s3Client, String bucketName) {
   try {
        HeadBucketRequest headBucketRequest = HeadBucketRequest
                .builder()
                .bucket(bucketName)
                .build();
        s3Client.headBucket(headBucketRequest);
        System.out.format("Amazon S3 bucket: \"%s\" found.", bucketName);
   }

   catch (S3Exception e) {
       System.err.println(e.awsErrorDetails().errorMessage());
       System.exit(1);
   }
}
```

------

## 使用 AWS CLI
<a name="directory-head-bucket-cli"></a>

下列 `head-bucket` 示範顯示如何使用 AWS CLI 判斷儲存貯體是否存在，以及您是否有存取的許可。若要執行此命令，請以您自己的資訊取代使用者輸入預留位置。

```
aws s3api head-bucket --bucket bucket-base-name--zone-id--x-s3 
```

如需詳細資訊，請參閱《AWS CLI 命令參考》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/head-bucket.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/head-bucket.html)。

# 使用目錄儲存貯體中的物件
<a name="directory-buckets-objects"></a>

建立 Amazon S3 目錄儲存貯體之後，您可以使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI) 和 AWS SDKs 來使用物件。

如需在目錄儲存貯體中執行大量操作、匯入、上傳、複製、刪除和下載物件的詳細資訊，請參閱下列主題。

**Topics**
+ [將物件匯入目錄儲存貯體](create-import-job.md)
+ [使用適用於目錄儲存貯體的 S3 生命週期](directory-buckets-objects-lifecycle.md)
+ [使用 Batch Operations 搭配目錄儲存貯體](directory-buckets-objects-Batch-Ops.md)
+ [將資料附加至目錄儲存貯體中的物件](directory-buckets-objects-append.md)
+ [重新命名目錄儲存貯體中的物件](directory-buckets-objects-rename.md)
+ [將物件上傳至目錄儲存貯體](directory-buckets-objects-upload.md)
+ [從目錄儲存貯體複製物件或將物件複製到目錄儲存貯體](directory-buckets-objects-copy.md)
+ [從目錄儲存貯體中刪除物件](directory-bucket-delete-object.md)
+ [從目錄儲存貯體下載物件](directory-buckets-objects-GetExamples.md)
+ [產生預先簽章的 URL 以共用物件目錄儲存貯體](directory-buckets-objects-generate-presigned-url-Examples.md)
+ [從目錄儲存貯體擷取物件中繼資料](directory-buckets-objects-HeadObjectExamples.md)
+ [列示目錄儲存貯體中的物件](directory-buckets-objects-listobjectsExamples.md)

# 將物件匯入目錄儲存貯體
<a name="create-import-job"></a>

在 Amazon S3 中建立目錄儲存貯體之後，您可以使用匯入動作將資料填入新的儲存貯體。匯入是用來建立 S3 Batch Operations 任務的簡化方法，可將物件從一般用途儲存貯體複製到目錄儲存貯體。

**注意**  
下列限制適用於匯入任務：  
來源儲存貯體和目的地儲存貯體必須位於相同的 AWS 區域 和 帳戶中。
來源儲存貯體不可以是目錄儲存貯體。
不支援大於 5GB 的物件，而且會從複製操作中省略。
Glacier Flexible Retrieval、Glacier Deep Archive、Intelligent-Tiering Archive Access 層和 Intelligent-Tiering Deep Archive 層儲存類別中的物件必須先還原才能匯入。
使用 MD5 檢查總和演算法匯入的物件會轉換為使用 CRC32 檢查總和。
匯入的物件會使用 Express One Zone 儲存類別，此類別的定價結構與一般用途儲存貯體使用的儲存類別不同。匯入大量物件時，請考慮這項成本上的差異。

當您設定匯入任務時，可以指定要從中複製現有物件的來源儲存貯體或字首。您也可以提供具有存取來源物件許可的 AWS Identity and Access Management (IAM) 角色。接著 Amazon S3 就會啟動 Batch Operations 任務來複製物件，並自動套用適當的儲存類別和檢查總和設定。

您可以使用 Amazon S3 主控台來設定匯入任務。

## 使用 Amazon S3 主控台
<a name="create-import-job-console-procedure"></a>

**將物件匯入目錄儲存貯體**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**儲存貯體**，然後選擇**目錄儲存貯體**索引標籤。選擇要將物件匯入其中的目錄儲存貯體旁的選項按鈕。

1. 選擇**匯入**。

1. 針對**來源**，輸入包含要匯入之物件的一般用途儲存貯體 (或包含字首的儲存貯體路徑)。若要從清單中選擇現有的一般用途儲存貯體，請選擇**瀏覽 S3**。

1. 針對**存取和複製來源物件的許可**，執行下列其中一項操作，以指定具有匯入來源物件所需許可的 IAM 角色：
   + 若要允許 Amazon S3 代表您建立新的 IAM 角色，請選擇**建立新的 IAM 角色**。
   + 若要從清單中選擇現有的 IAM 角色，請選擇**從現有的 IAM 角色中選擇**。
   + 若要透過輸入 Amazon Resource Name (ARN) 來指定現有的 IAM 角色，請選擇**輸入 IAM 角色 ARN**，然後在對應的欄位中輸入 ARN。

1. 檢閱**目的地**和**複製物件設定**區段中顯示的資訊。如果**目的地**區段中的資訊正確無誤，請選擇**匯入**以開始複製任務。

   Amazon S3 主控台會在 **Batch Operations** 頁面上顯示新任務的狀態。如需有關任務的詳細資訊，請選擇任務名稱旁的選項按鈕，然後在**動作**選單上選擇**檢視詳細資訊**。若要開啟要將物件匯入其中的目錄儲存貯體，請選擇**檢視匯入目的地**。

# 使用適用於目錄儲存貯體的 S3 生命週期
<a name="directory-buckets-objects-lifecycle"></a>

 S3 生命週期可協助您將物件儲存在 S3 Express One Zone 中，透過代表您刪除過期物件來實現目錄儲存貯體成本效益。若要管理物件的生命週期，請為您的目錄儲存貯體建立 S3 生命週期組態。S3 生命週期組態是一組定義 Amazon S3 動作的規則，適用於一組物件。您可以使用 AWS 命令列界面 (AWS CLI)、 AWS SDKs、Amazon S3 REST API 和 AWS CloudFormation，在目錄儲存貯體上設定 Amazon S3 生命週期組態。

在生命週期組態中，您可以使用規則來定義希望 Amazon S3 對物件採取的動作。對於儲存在目錄儲存貯體中的物件，您可以建立生命週期規則，在物件老化時使這些物件過期。您也可以建立生命週期規則，每天刪除目錄儲存貯體中未完成的分段上傳。

當您新增儲存貯體的生命週期組態時，組態規則會套用至現有物件以及稍後新增的物件。例如，如果您目前所新增生命週期組態規則包含過期動作，會讓具有特定字首的物件在建立 30 天之後過期，則 S3 會將任何超過 30 天且具有指定字首的現有物件排入佇列，等待移除。

## 適用於目錄儲存貯體的 S3 生命週期有何不同
<a name="directory-bucket-lifecycle-differences"></a>

對於目錄儲存貯體中的物件，您可以建立生命週期規則來使物件過期，並刪除未完成的分段上傳。不過，適用於目錄儲存貯體的 S3 生命週期不支援在儲存類別之間進行轉換的動作。

**CreateSession**

生命週期使用公有 `DeleteObject` 和 `DeleteObjects` API 操作來使目錄儲存貯體中的物件過期。若要使用這些 API 操作，S3 生命週期會使用 `CreateSession` API 建立臨時安全憑證，以存取目錄儲存貯體中的物件。如需詳細資訊，請參閱 [Amazon S3 API 參考**中的`CreateSession`](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html)。

如果您有拒絕刪除生命週期主體許可的作用中政策，此政策將使您無法允許 S3 生命週期代表您刪除物件。

### 使用儲存貯體政策授予 S3 生命週期服務主體許可
<a name="lifecycle-directory-bucket-policy"></a>

下列儲存貯體政策會授予 S3 生命週期服務主體許可，以建立執行 `DeleteObject`和 等操作的工作階段`DeleteObjects`。在`CreateSession`請求中未指定工作階段模式時，工作階段會由 中的許可以最大允許權限建立 (`ReadWrite`首先嘗試，如果`ReadWrite`不允許 `ReadOnly` )。不過，`ReadOnly`工作階段不足以進行修改或刪除物件的生命週期操作。因此，此範例使用 `s3express:SessionMode`條件索引鍵明確需要`ReadWrite`工作階段模式。

**Example – 允許使用明確`ReadWrite`工作階段模式進行生命週期操作的`CreateSession`呼叫的儲存貯體政策**  

```
 { 
   "Version":"2008-10-17",		 	 	  
   "Statement":[
      {
         "Effect":"Allow",
         "Principal": {
            "Service":"lifecycle.s3.amazonaws.com"
          },
          "Action":"s3express:CreateSession", 
          "Condition": { 
             "StringEquals": {
                "s3express:SessionMode": "ReadWrite"
              }
           }, 
           "Resource":"arn:aws:s3express:us-east-2:412345678921:bucket/amzn-s3-demo-bucket--use2-az2--x-s3"
       }
   ] 
}
```

### 監控生命週期規則
<a name="lifecycle-directory-bucket-monitoring"></a>

對於存放在目錄儲存貯體中的物件，S3 生命週期會產生 AWS CloudTrail 管理和資料事件日誌。如需詳細資訊，請參閱 [S3 Express One Zone 的 CloudTrail 日誌檔案範例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-log-files.html)。

如需建立生命週期組態及對 S3 生命週期相關問題進行故障診斷的詳細資訊，請參閱下列主題：

**Topics**

# 為目錄儲存貯體建立和管理生命週期組態
<a name="directory-bucket-create-lc"></a>

您可以使用 (AWS CLI)、 AWS Command Line Interface AWS SDKs和 REST APIs 來建立目錄儲存貯體的生命週期組態。

## 使用 AWS CLI
<a name="set-lifecycle-config-cli"></a>

您可以使用下列 AWS CLI 命令來管理 S3 生命週期組態：
+ `put-bucket-lifecycle-configuration`
+ `get-bucket-lifecycle-configuration`
+ `delete-bucket-lifecycle`

如需設定 的指示 AWS CLI，請參閱《[Amazon S3 API 參考》中的使用 AWS CLI 開發](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html) Amazon S3。 *Amazon S3 *

Amazon S3 生命週期組態是 XML 檔案。但是，當您使用 時 AWS CLI，您無法指定 XML 格式。您必須改為指定 JSON 格式。以下是範例 XML 生命週期組態，以及您可以在 AWS CLI命令中指定的同等 JSON 組態。

下列 AWS CLI 範例會在目錄儲存貯體上放置生命週期組態政策。此政策指定，所有包含標記字首 (myprefix) 並具有定義物件大小的物件會在 7 天後過期。若要使用此範例，請以您自己的資訊取代每個*使用者輸入預留位置*。

將生命週期組態原則儲存至 JSON 檔案。在此範例中，檔案會命名為 lifecycle1.json。

**Example**  

```
{
    "Rules": [
        {
        "Expiration": {
            "Days": 7
        },
        "ID": "Lifecycle expiration rule",
        "Filter": {
            "And": {
                "Prefix": "myprefix/",
                "ObjectSizeGreaterThan": 500,
                "ObjectSizeLessThan": 64000
            }
        },
        "Status": "Enabled"
    }
    ]
}
```
提交 JSON 檔案以做為 `put-bucket-lifecycle-configuration` CLI 命令的一部分。若要使用此命令，請以您自己的資訊取代每個*使用者輸入預留位置*。  

```
aws s3api put-bucket-lifecycle-configuration --region us-west-2 --profile default --bucket amzn-s3-demo-bucket--usw2-az1--x-s3 --lifecycle-configuration file://lc-policy.json --checksum-algorithm crc32c 
```

**Example**  

```
<LifecycleConfiguration>
    <Rule>
        <ID>Lifecycle expiration rule</ID>
        <Filter>
            <And>
                <Prefix>myprefix/</Prefix>
                <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan>
                <ObjectSizeLessThan>64000</ObjectSizeLessThan>
            </And>
        </Filter>
        <Status>Enabled</Status>     
        <Expiration>
             <Days>7</Days>
        </Expiration>
    </Rule>
</LifecycleConfiguration>
```

## 使用 AWS SDKs
<a name="directory-bucket-upload-sdks"></a>

------
#### [ SDK for Java ]

**Example**  

```
import software.amazon.awssdk.services.s3.model.PutBucketLifecycleConfigurationRequest;
import software.amazon.awssdk.services.s3.model.PutBucketLifecycleConfigurationResponse;
import software.amazon.awssdk.services.s3.model.ChecksumAlgorithm;
import software.amazon.awssdk.services.s3.model.BucketLifecycleConfiguration;
import software.amazon.awssdk.services.s3.model.LifecycleRule;
import software.amazon.awssdk.services.s3.model.LifecycleRuleFilter;
import software.amazon.awssdk.services.s3.model.LifecycleExpiration;
import software.amazon.awssdk.services.s3.model.LifecycleRuleAndOperator;
import software.amazon.awssdk.services.s3.model.GetBucketLifecycleConfigurationResponse;
import software.amazon.awssdk.services.s3.model.GetBucketLifecycleConfigurationRequest;
import software.amazon.awssdk.services.s3.model.DeleteBucketLifecycleRequest;
import software.amazon.awssdk.services.s3.model.DeleteBucketLifecycleResponse;
import software.amazon.awssdk.services.s3.model.AbortIncompleteMultipartUpload;

// PUT a Lifecycle policy
LifecycleRuleFilter objectExpirationFilter = LifecycleRuleFilter.builder().and(LifecycleRuleAndOperator.builder().prefix("dir1/").objectSizeGreaterThan(3L).objectSizeLessThan(20L).build()).build();
LifecycleRuleFilter mpuExpirationFilter = LifecycleRuleFilter.builder().prefix("dir2/").build();
       
LifecycleRule objectExpirationRule = LifecycleRule.builder().id("lc").filter(objectExpirationFilter).status("Enabled").expiration(LifecycleExpiration.builder()
                    .days(10)
                    .build())
                .build();
LifecycleRule mpuExpirationRule = LifecycleRule.builder().id("lc-mpu").filter(mpuExpirationFilter).status("Enabled").abortIncompleteMultipartUpload(AbortIncompleteMultipartUpload.builder()
                        .daysAfterInitiation(10)
                        .build())
                .build();
        
PutBucketLifecycleConfigurationRequest putLifecycleRequest = PutBucketLifecycleConfigurationRequest.builder()
                .bucket("amzn-s3-demo-bucket--usw2-az1--x-s3")
                .checksumAlgorithm(ChecksumAlgorithm.CRC32)
                .lifecycleConfiguration(
                        BucketLifecycleConfiguration.builder()
                                .rules(objectExpirationRule, mpuExpirationRule)
                                .build()
                ).build();

PutBucketLifecycleConfigurationResponse resp = client.putBucketLifecycleConfiguration(putLifecycleRequest);

// GET the Lifecycle policy 
GetBucketLifecycleConfigurationResponse getResp = client.getBucketLifecycleConfiguration(GetBucketLifecycleConfigurationRequest.builder().bucket("amzn-s3-demo-bucket--usw2-az1--x-s3").build());

// DELETE the Lifecycle policy
DeleteBucketLifecycleResponse delResp = client.deleteBucketLifecycle(DeleteBucketLifecycleRequest.builder().bucket("amzn-s3-demo-bucket--usw2-az1--x-s3").build());
```

------
#### [ SDK for Go ]

**Example**  

```
package main

import (
    "context"
    "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"
    "github.com/aws/aws-sdk-go-v2/service/s3/types"
)
// PUT a Lifecycle policy
func putBucketLifecycleConfiguration(client *s3.Client, bucketName string ) error {
    lifecycleConfig := &s3.PutBucketLifecycleConfigurationInput{
        Bucket: aws.String(bucketName),
        LifecycleConfiguration: &types.BucketLifecycleConfiguration{
            Rules: []types.LifecycleRule{
                {
                    ID:     aws.String("lc"),
                    Filter: &types.LifecycleRuleFilter{
                        And: &types.LifecycleRuleAndOperator{
                            Prefix: aws.String("foo/"), 
                            ObjectSizeGreaterThan: aws.Int64(1000000), 
                            ObjectSizeLessThan:    aws.Int64(100000000), 
                            },
                        },
                    
                    Status: types.ExpirationStatusEnabled,
                    Expiration: &types.LifecycleExpiration{
                        Days: aws.Int32(int32(1)), 
                    },
                },
                {
                    ID:     aws.String("abortmpu"),
                    Filter: &types.LifecycleRuleFilter{
                        Prefix: aws.String("bar/"), 
                    },
                    Status: types.ExpirationStatusEnabled,
                    AbortIncompleteMultipartUpload: &types.AbortIncompleteMultipartUpload{
                        DaysAfterInitiation: aws.Int32(int32(5)), 
                    },
                },
            },
        },
    }
    _, err := client.PutBucketLifecycleConfiguration(context.Background(), lifecycleConfig)
    return err
}
// Get the Lifecycle policy
func getBucketLifecycleConfiguration(client *s3.Client, bucketName string) error {
    getLifecycleConfig := &s3.GetBucketLifecycleConfigurationInput{
        Bucket: aws.String(bucketName),
    }

    resp, err := client.GetBucketLifecycleConfiguration(context.Background(), getLifecycleConfig)
    if err != nil {
        return err
    }
    return nil
}
// Delete the Lifecycle policy
func deleteBucketLifecycleConfiguration(client *s3.Client, bucketName string) error {
    deleteLifecycleConfig := &s3.DeleteBucketLifecycleInput{
        Bucket: aws.String(bucketName),
    }
    _, err := client.DeleteBucketLifecycle(context.Background(), deleteLifecycleConfig)
    return err
}
func main() {
    cfg, err := config.LoadDefaultConfig(context.Background(), config.WithRegion("us-west-2")) // Specify your region here
    if err != nil {
        log.Fatalf("unable to load SDK config, %v", err)
    }
    s3Client := s3.NewFromConfig(cfg)
    bucketName := "amzn-s3-demo-bucket--usw2-az1--x-s3" 
    putBucketLifecycleConfiguration(s3Client, bucketName)
    getBucketLifecycleConfiguration(s3Client, bucketName)
    deleteBucketLifecycleConfiguration(s3Client, bucketName)
    getBucketLifecycleConfiguration(s3Client, bucketName)
}
```

------
#### [ SDK for .NET ]

**Example**  

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class LifecycleTest
    {
        private const string bucketName = "amzn-s3-demo-bucket--usw2-az1--x-s3";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;
        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            AddUpdateDeleteLifecycleConfigAsync().Wait();
        }

        private static async Task AddUpdateDeleteLifecycleConfigAsync()
        {
            try
            {
                var lifeCycleConfiguration = new LifecycleConfiguration()
                {
                    Rules = new List <LifecycleRule>
                        {
                            new LifecycleRule
                            {
                                 Id = "delete rule",
                                  Filter = new LifecycleFilter()
                                 {
                                     LifecycleFilterPredicate = new LifecyclePrefixPredicate()
                                     {
                                         Prefix = "projectdocs/"
                                     }
                                 },
                                 Status = LifecycleRuleStatus.Enabled,
                                 Expiration = new LifecycleRuleExpiration()
                                 {
                                       Days = 10
                                 }
                            }
                        }
                };

                // Add the configuration to the bucket. 
                await AddExampleLifecycleConfigAsync(client, lifeCycleConfiguration);

                // Retrieve an existing configuration. 
                lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client);

                // Add a new rule.
                lifeCycleConfiguration.Rules.Add(new LifecycleRule
                {
                    Id = "mpu abort rule",
                    Filter = new LifecycleFilter()
                    {
                        LifecycleFilterPredicate = new LifecyclePrefixPredicate()
                        {
                            Prefix = "YearlyDocuments/"
                        }
                    },
                    Expiration = new LifecycleRuleExpiration()
                    {
                        Days = 10
                    },
                    AbortIncompleteMultipartUpload = new LifecycleRuleAbortIncompleteMultipartUpload()
                    {
                        DaysAfterInitiation = 10
                    }
                });

                // Add the configuration to the bucket. 
                await AddExampleLifecycleConfigAsync(client, lifeCycleConfiguration);

                // Verify that there are now two rules.
                lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client);
                Console.WriteLine("Expected # of rulest=2; found:{0}", lifeCycleConfiguration.Rules.Count);

                // Delete the configuration.
                await RemoveLifecycleConfigAsync(client);

                // Retrieve a nonexistent configuration.
                lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client);

            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }

        static async Task AddExampleLifecycleConfigAsync(IAmazonS3 client, LifecycleConfiguration configuration)
        {

            PutLifecycleConfigurationRequest request = new PutLifecycleConfigurationRequest
            {
                BucketName = bucketName,
                Configuration = configuration
            };
            var response = await client.PutLifecycleConfigurationAsync(request);
        }

        static async Task <LifecycleConfiguration> RetrieveLifecycleConfigAsync(IAmazonS3 client)
        {
            GetLifecycleConfigurationRequest request = new GetLifecycleConfigurationRequest
            {
                BucketName = bucketName
            };
            var response = await client.GetLifecycleConfigurationAsync(request);
            var configuration = response.Configuration;
            return configuration;
        }

        static async Task RemoveLifecycleConfigAsync(IAmazonS3 client)
        {
            DeleteLifecycleConfigurationRequest request = new DeleteLifecycleConfigurationRequest
            {
                BucketName = bucketName
            };
            await client.DeleteLifecycleConfigurationAsync(request);
        }
    }
}
```

------
#### [ SDK for Python ]

**Example**  

```
import boto3

client = boto3.client("s3", region_name="us-west-2")
bucket_name = 'amzn-s3-demo-bucket--usw2-az1--x-s3'

client.put_bucket_lifecycle_configuration(
    Bucket=bucket_name,
    ChecksumAlgorithm='CRC32',
    LifecycleConfiguration={
        'Rules': [
            {
                'ID': 'lc',
                'Filter': {
                    'And': {
                        'Prefix': 'foo/',
                        'ObjectSizeGreaterThan': 1000000,
                        'ObjectSizeLessThan': 100000000,
                    }
                },
                'Status': 'Enabled',
                'Expiration': {
                    'Days': 1
                }
            },
            {
                'ID': 'abortmpu',
                'Filter': {
                    'Prefix': 'bar/'
                },
                'Status': 'Enabled',
                'AbortIncompleteMultipartUpload': {
                    'DaysAfterInitiation': 5
                }
            }
        ]
    }
)

result = client.get_bucket_lifecycle_configuration(
    Bucket=bucket_name
)

client.delete_bucket_lifecycle(
    Bucket=bucket_name
)
```

------

# 對適用於目錄儲存貯體的 S3 生命週期問題進行故障診斷
<a name="directory-buckets-lifecycle-troubleshooting"></a>

**Topics**
+ [我設定了生命週期組態，但目錄儲存貯體中的物件未能過期](#troubleshoot-directory-bucket-lifecycle-1)
+ [如何監控生命週期規則採取的動作？](#troubleshoot-directory-bucket-lifecycle-2)

## 我設定了生命週期組態，但目錄儲存貯體中的物件未能過期
<a name="troubleshoot-directory-bucket-lifecycle-1"></a>

適用於目錄儲存貯體的 S3 生命週期會使用公有 API 來刪除 S3 Express One Zone 中的物件。若要使用物件層級公有 API，您必須授予 `CreateSession` 許可，並允許 S3 生命週期許可來刪除您的物件。如果您有拒絕刪除的作用中政策，此政策將使您無法允許 S3 生命週期代表您刪除物件。

請務必正確設定儲存貯體政策，以確保要刪除的物件符合過期資格。您可以在 AWS CloudTrail 中檢查`AccessDenied`追蹤 `CreateSession` API 調用的 CloudTrail 日誌，以驗證存取是否遭拒。檢查 CloudTrail 日誌可協助您對存取問題進行故障診斷，並找出存取遭拒錯誤的根本原因。然後，您可以透過更新相關政策來修正不正確的存取控制。

如果您確認儲存貯體政策設定正確，但仍遇到問題，建議您檢閱生命週期規則，確保已將其套用至正確的物件子集。

## 如何監控生命週期規則採取的動作？
<a name="troubleshoot-directory-bucket-lifecycle-2"></a>

 您可以使用 AWS CloudTrail 資料事件日誌來監控 S3 生命週期在目錄儲存貯體中採取的動作。如需詳細資訊，請參閱 [CloudTrail 日誌檔案範例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-log-files.html)。

# 使用 Batch Operations 搭配目錄儲存貯體
<a name="directory-buckets-objects-Batch-Ops"></a>

您可以使用 Amazon S3 Batch Operations 對存放在 S3 儲存貯體中的物件執行操作。若要深入了解 S3 Batch Operations，請參閱[在 Amazon S3 物件上執行大規模批次操作](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops.html)。

下列主題討論如何對儲存在目錄貯體中 S3 Express One Zone 儲存類別的物件執行批次操作。

**Topics**
+ [使用 Batch Operations 搭配目錄儲存貯體](#UsingBOPsDirectoryBuckets)
+ [主要差異](#UsingBOPsDirectoryBucketsKeyDiffs)

## 使用 Batch Operations 搭配目錄儲存貯體
<a name="UsingBOPsDirectoryBuckets"></a>

您可以對儲存在目錄儲存貯體中的物件執行**複製**操作和**調用 AWS Lambda 函數**操作。您可以使用**複製**，在相同類型的儲存貯體之間複製物件 (例如從一個目錄儲存貯體複製到另一個目錄儲存貯體)。您也可以在一般用途儲存貯體和目錄儲存貯體之間進行複製。使用**叫用 AWS Lambda 函數**，您可以使用 Lambda 函數，透過您定義的程式碼對目錄儲存貯體中的物件執行動作。

**複製物件**  
您可以在相同的儲存貯體類型之間，或目錄儲存貯體與一般用途儲存貯體之間進行複製。當您複製到目錄儲存貯體時，必須針對此儲存貯體類型使用正確的 Amazon Resource Name (ARN) 格式。目錄儲存貯體的 ARN 格式為 `arn:aws:s3express:region:account-id:bucket/bucket-base-name--x-s3`。

**注意**  
當來源或目的地儲存貯體位於 AWS 本機區域時， AWS 區域 不支援跨不同 複製物件。來源儲存貯體和目的地儲存貯體必須具有相同的父 AWS 區域。來源儲存貯體和目的地儲存貯體可以是不同的儲存貯體位置類型 (可用區域或本機區域)。

您也可以使用 S3 主控台中的**匯入**動作，將資料填入目錄儲存貯體。**匯入**是用來建立 Batch Operations 任務的簡化方法，可將物件從一般用途儲存貯體複製到目錄儲存貯體。針對從一般用途儲存貯體到目錄儲存貯體的**匯入**複製任務，S3 會自動產生清單檔案。如需詳細資訊，請參閱[將物件匯入目錄儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job.html)和[指定資訊清單](https://docs.aws.amazon.com/AmazonS3/latest/userguide/specify-batchjob-manifest.html)。

**調用 Lambda 函數 (`LambdaInvoke`)**  
使用 Batch Operations 調用對目錄儲存貯體執行動作的 Lambda 函式時，須遵循特殊需求。例如，您必須使用 v2 JSON 調用結構描述來建構 Lambda 請求，並在建立作業時指定 InvocationSchemaVersion 2.0。如需詳細資訊，請參閱[調用 AWS Lambda 函數](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-invoke-lambda.html)。

## 主要差異
<a name="UsingBOPsDirectoryBucketsKeyDiffs"></a>

以下列出使用 Batch Operations 對儲存在具有 S3 Express One Zone 儲存類別之目錄儲存貯體中的物件執行大量操作時的主要差異：
+ 對於目錄儲存貯體，支援使用 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 的 SSE-S3 和伺服器端加密。如果您提出 `CopyObject` 請求，指定在目錄儲存貯體 (來源或目的地) 上使用客戶提供的金鑰的伺服器端加密 (SSE-C)，回應會傳回 HTTP `400 (Bad Request)` 錯誤。

  建議儲存貯體的預設加密使用所需的加密組態，而且您不會覆寫 `CreateSession` 請求或 `PUT` 物件請求中的儲存貯體預設加密。然後，新的物件會以所需的加密設定自動加密。如需在目錄儲存貯體中覆寫加密行為，以及如何使用 SSE-KMS 加密目錄儲存貯體中新物件複本的詳細資訊，請參閱[使用 指定伺服器端加密 AWS KMS 以進行新物件上傳](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html)。

  當您透過 [Batch Operations 中的 Copy 操作](#directory-buckets-objects-Batch-Ops)，將 SSE-KMS 加密物件從一般用途儲存貯體複製到目錄儲存貯體、從目錄儲存貯體複製到一般用途儲存貯體或在目錄儲存貯體之間複製時，不支援 S3 儲存貯體金鑰。在此情況下，Amazon S3 AWS KMS 每次對 KMS 加密物件提出複製請求時都會呼叫 。如需在目錄儲存貯體上使用 SSE-KMS 的詳細資訊，請參閱[設定和監控目錄儲存貯體的預設加密](s3-express-bucket-encryption.md)和[在目錄儲存貯體中使用伺服器端加密與 AWS KMS 金鑰 (SSE-KMS)](s3-express-UsingKMSEncryption.md)。
+ 目錄儲存貯體中的物件無法加上標籤。您只能指定空的標籤集。根據預設，Batch Operations 會複製標籤。如果您在一般用途儲存貯體與目錄儲存貯體之間複製具有標籤的物件，您會收到 `501 (Not Implemented)` 回應。
+ S3 Express One Zone 可讓您選擇在上傳或下載期間用於驗證資料的檢查總和演算法。您可以選擇以下 Secure Hash 演算法 (SHA) 或循環宂餘檢查 (CRC) 資料完整性演算法之一：CRC32、CRC32C、SHA-1 和 SHA-256。S3 Express One Zone 儲存類別不支援 MD5 型檢查總和。
+ 根據預設，所有 Amazon S3 儲存貯體都會將 S3 物件擁有權設定為儲存貯體擁有者強制執行，並停用存取控制清單 (ACL)。目錄儲存貯體的此設定無法修改。您也可以將物件從一般用途儲存貯體複製到目錄儲存貯體。不過，當您在目錄儲存貯體上來回複製時，無法覆寫預設 ACL。
+ 無論您如何指定清單檔案，此清單本身都必須儲存在一般用途儲存貯體中。Batch Operations 無法從目錄儲存貯體匯入現有的資訊清單，也無法將產生的資訊清單儲存至目錄儲存貯體。不過，清單檔案內描述的物件可以儲存在目錄儲存貯體中。
+ Batch Operations 無法指定目錄儲存貯體作為 S3 庫存報告中的位置。庫存報告不支援目錄儲存貯體。您可以透過使用 `ListObjectsV2` API 操作列出物件，來為目錄儲存貯體內的物件建立資訊清單。然後，您可以將清單插入 CSV 檔案。

### 授與 存取權
<a name="BOPsAccess"></a>

 若要執行複製任務，您必須具有下列許可：
+ 若要在目錄儲存貯體之間複製物件，您必須具有 `s3express:CreateSession` 許可。
+ 若要將物件從目錄儲存貯體複製到一般用途儲存貯體，您必須具有 `s3express:CreateSession` 許可和 `s3:PutObject` 許可，以將複製的物件寫入目的地儲存貯體。
+ 若要將物件從一般用途儲存貯體複製到目錄儲存貯體，您必須具有 `s3express:CreateSession` 許可和 `s3:GetObject` 許可，以讀取要複製的來源物件。

   如需詳細資訊，請參閱 Amazon Simple Storage Service API 參考**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)。
+ 若要調用 Lambda 函數，您必須根據 Lambda 函數為資源授予許可。若要判斷需要哪些許可，請查看對應的 API 操作。

# 將資料附加至目錄儲存貯體中的物件
<a name="directory-buckets-objects-append"></a>

您可以將資料新增至儲存在目錄儲存貯體中 S3 Express One Zone 儲存類別的現有物件結尾。如果資料連續寫入一段時間，或者如果您在寫入物件時需要讀取物件，建議您使用將資料附加至物件的功能。將資料附加至物件的常見使用案例包括將新的日誌項目加入日誌檔案，或是將新的影片片段加入影片檔案，以在轉碼後進行串流。透過將資料附加至物件，您可以簡化先前必須先合併本機儲存的資料，再將最終物件複製到 Amazon S3 的應用程式。

您可以附加至物件的資料沒有大小下限要求。不過，您可以在單一請求中附加至物件的資料大小上限為 5 GB。這與使用任何 Amazon S3 API 上傳資料時的最大請求大小限制相同。

每個成功的附加操作都會建立物件的一個組件，每個物件最多可以有 10,000 個組件。這表示您最多可以將資料附加至物件 10,000 次。如果使用 S3 分段上傳建立物件，則每個上傳的組件都會計入 10,000 個組件的總計上限。例如，您最多可以附加至透過分段上傳 1,000 個組件所建立的物件 9,000 次。

**注意**  
 如果達到組件數上限，則會收到 [TooManyParts](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#API_PutObject_Errors) 錯誤。您可以使用 `CopyObject` API 來重設計數。

 如果您想要將多個組件平行上傳至物件，而且在上傳組件時不需要讀取組件，建議您使用 Amazon S3 分段上傳。如需詳細資訊，請參閱[使用分段上傳](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-using-multipart-upload.html)。

只有儲存在 S3 Express One Zone 儲存類別之目錄儲存貯體中的物件，才支援將資料附加至物件。如需 S3 Express One Zone 的詳細資訊，請參閱[開始使用 S3 Express One Zone](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-getting-started.html)。

若要開始將 AWS 資料附加至目錄儲存貯體中的物件，您可以使用 SDKs、 AWS CLI 和 `PutObject` API 。當您提出 `PutObject` 請求時，請將 `x-amz-write-offset-bytes` 標頭設定為您要附加的目的地物件大小。若要使用 `PutObject` API 操作，您必須使用 `CreateSession` API 建立臨時安全憑證，以存取目錄儲存貯體中的物件。如需詳細資訊，請參閱 Amazon S3 API 參考**中的[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)和[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html)。

每個成功的附加操作都會以一個 `PutObject` 請求來計費。若要進一步了解定價，請參閱[https://aws.amazon.com/s3/pricing/](https://aws.amazon.com/s3/pricing/)。

**注意**  
從 1.12 版開始，適用於 Amazon S3 的掛載點支援將資料附加至儲存在 S3 Express One Zone 中的物件。若要開始使用，您必須設定 `--incremental-upload ` 旗標以選擇加入。如需掛載點的詳細資訊，請參閱[使用掛載點](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mountpoint.html)。

 如果您在上傳附加資料時使用 CRC (循環冗餘檢查) 演算法，您可以使用 `HeadObject` 或 `GetObject` 請求來擷取完整物件 CRC 型檢查總和。如果您在上傳附加資料時使用 SHA-1 或 SHA-256 演算法，您可以擷取附加組件的檢查總和，並使用先前 PutObject 回應傳回的 SHA 檢查總和來驗證其完整性。如需詳細資訊，請參閱[資料保護和加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-data-protection.html.html)。

## 使用 CLI、 AWS SDKs AWS 和 REST API 將資料附加至物件
<a name="directory-bucket-append"></a>

您可以使用 AWS Command Line Interface (AWS CLI)、 AWS SDKs和 REST API 將資料附加至物件。

### 使用 AWS CLI
<a name="set-append--cli"></a>

下列`put-object`範例命令顯示如何使用 AWS CLI 將資料附加至物件。若要執行此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
aws s3api put-object --bucket amzn-s3-demo-bucket--azid--x-s3 --key sampleinput/file001.bin --body bucket-seed/file001.bin --write-offset-bytes size-of-sampleinput/file001.bin
```

### 使用 AWS SDKs
<a name="directory-bucket-append-sdks"></a>

------
#### [ SDK for Java ]

您可以使用 適用於 Java 的 AWS SDK 將資料附加至物件。

```
var putObjectRequestBuilder = PutObjectRequest.builder()
                                              .key(key)
                                              .bucket(bucketName)
                                              .writeOffsetBytes(9);
var response = s3Client.putObject(putObjectRequestBuilder.build());
```

------
#### [ SDK for Python ]

```
s3.put_object(Bucket='amzn-s3-demo-bucket--use2-az2--x-s3', Key='2024-11-05-sdk-test', Body=b'123456789', WriteOffsetBytes=9)
```

------

### 使用 REST API
<a name="directory-bucket-append-api"></a>

 您可以傳送 REST 請求，將資料附加至物件。如需詳細資訊，請參閱[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#API_PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#API_PutObject)。

# 重新命名目錄儲存貯體中的物件
<a name="directory-buckets-objects-rename"></a>

您可以使用 `RenameObject` 操作，在使用 S3 Express One Zone 儲存類別的目錄儲存貯體中以原子方式重新命名現有物件，而不需移動任何資料。您可以將現有物件的名稱指定為來源，並將物件的新名稱指定為相同目錄儲存貯體中的目的地，藉以重新命名物件。`RenameObject` API 操作對於以斜線 (`/`) 分隔符號字元結尾的物件無效。如需詳細資訊，請參閱[命名 Amazon S3 物件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html)。

無論物件大小為何，`RenameObject` 操作通常以毫秒為單位完成。此功能可加速日誌檔案管理、媒體處理和資料分析等應用程式。此外，`RenameObject` 會保留所有物件中繼資料屬性，包括儲存類別、加密類型、建立日期、上次修改日期和檢查總和屬性。

**注意**  
`RenameObject` 僅支援儲存在 S3 Express One Zone 儲存類別中的物件。

 若要授予 `RenameObject` 操作的存取權，建議您使用 `CreateSession` 操作進行工作階段型授權。具體而言，您會將 `s3express:CreateSession` 許可權授予儲存貯體政策或身分型政策中的目錄儲存貯體。然後在目錄儲存貯體上進行 `CreateSession` API 呼叫，以取得工作階段字符。若使用您的請求標頭中的工作階段字符，您就可以對此操作提出 API 請求。工作階段字符過期後，您會進行另一個 `CreateSession` API 呼叫來產生新的工作階段字符以供使用。CLI 和 AWS SDKs AWS 將建立和管理工作階段，包括自動重新整理工作階段權杖，以避免工作階段過期時服務中斷。如需有關授權的詳細資訊，請參閱《Amazon S3 API 參考》**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html)。若要進一步了解區域端點 API 操作，請參閱[使用 `CreateSession` 授權區域端點 API 操作](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-create-session.html)。

 如果您不想要覆寫現有的物件，您可以在 `RenameObject` 請求中新增具有值 `‘*’` 的 `If-None-Match` 條件式標頭。如果物件名稱已存在，Amazon S3 會傳回 `412 Precondition Failed` 錯誤。如需詳細資訊，請參閱 *Amazon S3 API 參考*中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_RenameObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_RenameObject.html)。

 `RenameObject` 是一種區域端點 API 操作 (物件層級或資料平面操作)，會記錄到 AWS CloudTrail。您可以使用 CloudTrail 來收集對目錄儲存貯體中物件執行之 `RenameObject` 操作的相關資訊。如需詳細資訊，請參閱[使用 記錄目錄儲存貯 AWS CloudTrail 體，](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone-logging.html)以及 [CloudTrail 記錄檔案範例記錄目錄儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-log-files.html)。

S3 Express One Zone 是唯一支援 `RenameObject` 的儲存類別，其定價與 S3 Express One Zone 中的 `PUT`、`COPY`、`POST` 和 `LIST` 請求 (每 1,000 個請求) 相同。如需詳細資訊，請參閱 [Simple Storage Service (Amazon S3) 定價](https://aws.amazon.com/s3/pricing/)。

## 重新命名物件
<a name="directory-bucket-rename"></a>

若要重新命名目錄儲存貯體中的物件，您可以使用 Amazon S3 主控台、 AWS CLI、 AWS SDKs、REST API 或 Amazon S3 掛載點 (1.19.0 版或更新版本）。

### 使用 S3 主控台
<a name="set-rename--console"></a>

**重新命名目錄儲存貯體中的物件**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在導覽窗格中，選擇**儲存貯體**，然後選擇**目錄儲存貯體**索引標籤。導覽至包含要重新命名之物件的 Amazon S3 目錄儲存貯體。

1. 選取您要重新命名之物件的核取方塊。

1. 在**動作**功能表上，選擇**重新命名物件**。

1. 在**新物件名稱**方塊中，輸入物件的新名稱。
**注意**  
如果您指定與現有物件相同的物件名稱，操作將會失敗，Amazon S3 會傳回 `412 Precondition Failed` 錯誤。物件索引鍵名稱長度不可超過 1,024 個位元組。物件名稱中包含的字首會納入總長度計算。

1. 選擇**重新命名物件**。Amazon S3 會重新命名您的物件。

### 使用 AWS CLI
<a name="set-rename--cli"></a>

這些 `rename-object` 範例示範如何使用 AWS CLI 重新命名物件。若要執行這些命令，請以您自己的資訊取代*使用者輸入預留位置*。

下列範例示範如何對來源物件的 ETag 使用條件式檢查功能來重新命名物件。

```
aws s3api rename-object \                                    
    --bucket amzn-s3-demo-bucket--usw2-az1--x-s3 \
    --key new-file.txt \
    --rename-source original-file.txt \
    --source-if-match "\"a1b7c3d2e5f6\""
```

此命令會執行下列動作：
+ 在 *amzn-s3-demo-bucket--usw2-az1--x-s3*目錄儲存貯體中，將物件從 *original-file.txt* 重新命名為 *new-file.txt*。
+ 只有在來源物件的 ETag 符合 "*a1b7c3d4e5f6*" 時，才會執行重新命名。

如果 ETag 不相符，則操作會失敗，並顯示 `412 Precondition Failed` 錯誤。

下列範例示範如何使用新指定物件名稱的條件式檢查功能來重新命名物件。

```
aws s3api rename-object \
    --bucket amzn-s3-demo-bucket--usw2-az1--x-s3 \
    --key new-file.txt \
    --rename-source amzn-s3-demo-bucket--usw2-az1--x-s3/original-file.txt \
    --destination-if-none-match "\"e5f3g7h8i9j0\""
```

此命令會執行下列動作：
+ 在 *amzn-s3-demo-bucket--usw2-az1--x-s3*目錄儲存貯體中，將物件從 *original-file.txt* 重新命名為 *new-file.txt*。
+ 只有在物件存在，且物件的 ETag 不符合 "*e5f3g7h8i9j0*" 時，才會執行重新命名操作。

如果具有新指定名稱和相符 ETag 的物件已存在，則操作將會失敗，並顯示 `412 Precondition Failed` 錯誤。

### 使用 AWS SDKs
<a name="directory-bucket-rename-sdks"></a>

------
#### [ SDK for Java ]

您可以使用 適用於 Java 的 AWS SDK 來重新命名物件。若要使用這些範例，請以您自己的資訊取代*使用者輸入預留位置*。

下列範例示範如何使用適用於 Java `RenameObjectRequest`的 AWS 開發套件建立

```
String key = "key";
String newKey = "new-key";
String expectedETag = "e5f3g7h8i9j0";
RenameObjectRequest renameRequest = RenameObjectRequest.builder()
    .bucket(amzn-s3-demo-bucket--usw2-az1--x-s3)
    .key(newKey)
    .renameSource(key)
    .destinationIfMatch(e5f3g7h8i9j0)
    .build();
```

該程式碼會執行下列作業：
+ 在 *amzn-s3-demo-bucket--usw2-az1--x-s3* 目錄儲存貯體中，建立將物件從 "*key*" 重新命名為 "*new-key*" 的請求。
+ 包括只有在物件的 ETag 符合 "*e5f3g7h8i9j0*" 時，才會產生重新命名的條件。
+ 如果 ETag 不相符或物件不存在，操作將會失敗。

下列範例示範如何使用適用於 Java 的 AWS 開發套件建立`RenameObjectRequest`具有無相符條件的 。

```
String key = "key";
String newKey = "new-key";
String noneMatchETag = "e5f3g7h8i9j0";
RenameObjectRequest renameRequest = RenameObjectRequest.builder()
    .bucket(amzn-s3-demo-bucket--usw2-az1--x-s3)
    .key(newKey)
    .renameSource(key)
    .destinationIfNoneMatch(noneMatchETag)
    .build();
```

該程式碼會執行下列作業：
+ 建立請求，以在 *amzn-s3-demo-bucket--usw2-az1--x-s3* 目錄儲存貯體中將物件從 "*key*" 重新命名為 "*new-key*"。
+ 包含使用 `.destinationIfNoneMatch(noneMatchETag)` 的條件，確保只有在目的地物件的 ETag 不符合 "*e5f3g7h8i9j0*" 時，才會重新命名。

如果具有新指定名稱的物件存在，且具有指定的 ETag，則操作會失敗，並顯示 `412 Precondition Failed` 錯誤。

------
#### [ SDK for Python ]

您可以使用適用於 Python 的 SDK 來重新命名物件。若要使用這些範例，請以您自己的資訊取代*使用者輸入預留位置*。

下列範例示範如何使用適用於 Python 的 AWS SDK (Boto3) 重新命名物件。

```
def basic_rename(bucket, source_key, destination_key):
    try:
        s3.rename_object(
            Bucket=amzn-s3-demo-bucket--usw2-az1--x-s3,
            Key=destination_key,
            RenameSource=f"{source_key}"
        )
        print(f"Successfully renamed {source_key} to {destination_key}")
    except ClientError as e:
        print(f"Error renaming object: {e}")
```

該程式碼會執行下列作業：
+ 在 *amzn-s3-demo-bucket--usw2-az1--x-s3* 目錄儲存貯體中，將物件從 *source\$1key* 重新命名為 *destination\$1key*。
+ 如果物件的重新命名成功，則列印成功訊息；如果失敗，則列印錯誤訊息。

下列範例示範如何使用適用於 Python 的 AWS SDK (Boto3) 重新命名具有 `SourceIfMatch`和 `DestinationIfNoneMatch`條件的物件。

```
def rename_with_conditions(bucket, source_key, destination_key, source_etag, dest_etag):
    try:
        s3.rename_object(
            Bucket=amzn-s3-demo-bucket--usw2-az1--x-s3,
            Key=destination_key,
            RenameSource=f"{amzn-s3-demo-bucket--usw2-az1--x-s3}/{source_key}",
            SourceIfMatch=source_ETag,
            DestinationIfNoneMatch=dest_ETag
        )
        print(f"Successfully renamed {source_key} to {destination_key} with conditions")
    except ClientError as e:
        print(f"Error renaming object: {e}")
```

該程式碼會執行下列作業：
+ 執行條件式重新命名操作，並套用兩個條件，即 `SourceIfMatch` 和 `DestinationIfNoneMatch`。這些條件的組合可確保物件尚未修改，且物件不存在，並具有新的指定名稱。
+ 在 *amzn-s3-demo-bucket--usw2-az1--x-s3* 目錄儲存貯體中，將物件從 *source\$1key* 重新命名為 *destination\$1key*。
+ 如果物件的重新命名成功，則列印成功訊息；如果失敗或不符合條件，則列印錯誤訊息。

------
#### [ SDK for Rust ]

您可以使用 SDK for Rust 重新命名物件。若要使用這些範例，請以您自己的資訊取代*使用者輸入預留位置*。

下列範例示範如何使用 SDK for Rust 重新命名 *amzn-s3-demo-bucket--usw2-az1--x-s3* 目錄儲存貯體中的物件。

```
async fn basic_rename_example(client: &Client) -> Result<(), Box<dyn Error>> {
    let response = client
        .rename_object()
        .bucket(" amzn-s3-demo-bucket--usw2-az1--x-s3")
        .key("new-name.txt")  // New name/path for the object
        .rename_source("old-name.txt")  // Original object name/path
        .send()
        .await?;
    Ok(())
}
```

該程式碼會執行下列作業：
+ 建立請求，以在 *amzn-s3-demo-bucket--usw2-az1--x-s3* 目錄儲存貯體中，將物件從 "*old-name.tx*" 重新命名為 "*new-name.txt*"。
+ 傳回可處理潛在錯誤的 `Result` 類型。

------

### 使用 REST API
<a name="directory-bucket-rename-api"></a>

 您可以傳送 REST 請求以重新命名物件。如需詳細資訊，請參閱 *Amazon S3 API 參考*中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_RenameObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_RenameObject.html)。

### 使用適用於 Amazon S3 的掛載點
<a name="directory-bucket-rename-api"></a>

 從 1.19.0 版或更新版本開始，適用於 Amazon S3 的掛載點支援在 S3 Express One Zone 中重新命名物件。如需掛載點的詳細資訊，請參閱[使用掛載點](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mountpoint.html)。

# 將物件上傳至目錄儲存貯體
<a name="directory-buckets-objects-upload"></a>

建立 Amazon S3 目錄儲存貯體之後，您可以將物件上傳至其中。下列範例示範如何使用 S3 主控台和 AWS SDK 將物件上傳至目錄儲存貯體。如需使用 S3 Express One Zone 執行大量物件上傳操作的資訊，請參閱[物件管理](directory-bucket-high-performance.md#s3-express-features-object-management)。

## 使用 S3 主控台
<a name="directory-bucket-upload-console"></a>

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**目錄儲存貯體**。

1. 選擇您要上傳資料夾和檔案的目的地儲存貯體名稱。

1. 在**物件**清單中，選擇**上傳**。

1. 在**上傳**頁面上，執行下列任一步驟：
   + 將檔案和資料夾拖放至上傳區域。
   + 選擇**新增檔案**或**新增資料夾**，選擇要上傳的檔案或資料夾，然後選擇**開啟**或**上傳**。

1. 在**檢查總和**下，選擇您要使用的**檢查總和函數**。

   (選用) 如果您上傳的單一物件大小小於 16 MB，您也可以指定預先計算的檢查總和值。當您提供預先計算的值時，Amazon S3 會將該值與使用所選檢查總和函數計算的值進行比較。如果值不相符，則不會開始上傳。

1. **許可**和**屬性**區段中的選項會自動設定為預設設定，且無法修改。封鎖公開存取會自動啟用，且無法針對目錄儲存貯體啟用 S3 版本控制和 S3 物件鎖定。

   (選用) 如果您要以金鑰/值對的形式將中繼資料新增至物件，請展開**屬性**區段，然後在**中繼資料**區段中選擇**新增中繼資料**。

1. 若要上傳列出的檔案和資料夾，請選擇**上傳**。

   Amazon S3 會上傳您的物件和資料夾。上傳完成後，您可以在**上傳：狀態**頁面上看到成功訊息。

## 使用 AWS SDKs
<a name="directory-bucket-upload-sdks"></a>

------
#### [ SDK for Java 2.x ]

**Example**  

```
public static void putObject(S3Client s3Client, String bucketName, String objectKey, Path filePath) {
       //Using File Path to avoid loading the whole file into memory
       try {
           PutObjectRequest putObj = PutObjectRequest.builder()
                   .bucket(bucketName)
                   .key(objectKey)
                   //.metadata(metadata)
                   .build();
           s3Client.putObject(putObj, filePath);               
           System.out.println("Successfully placed " + objectKey +" into bucket "+bucketName);
                                              
       }
       
       catch (S3Exception e) {
           System.err.println(e.getMessage());
           System.exit(1);
       }
}
```

------
#### [ SDK for Python ]

**Example**  

```
import boto3
import botocore
from botocore.exceptions import ClientError
    
    
def put_object(s3_client, bucket_name, key_name, object_bytes):
    """  
    Upload data to a directory bucket.
    :param s3_client: The boto3 S3 client
    :param bucket_name: The bucket that will contain the object
    :param key_name: The key of the object to be uploaded
    :param object_bytes: The data to upload
    """
    try:
        response = s3_client.put_object(Bucket=bucket_name, Key=key_name,
                             Body=object_bytes)
        print(f"Upload object '{key_name}' to bucket '{bucket_name}'.") 
        return response
    except ClientError:    
        print(f"Couldn't upload object '{key_name}' to bucket '{bucket_name}'.")
        raise

def main():
    # Share the client session with functions and objects to benefit from S3 Express One Zone auth key
    s3_client = boto3.client('s3')
    # Directory bucket name must end with --zone-id--x-s3
    resp = put_object(s3_client, 'doc-bucket-example--use1-az5--x-s3', 'sample.txt', b'Hello, World!')
    print(resp)

if __name__ == "__main__":
    main()
```

------

## 使用 AWS CLI
<a name="directory-upload-object-cli"></a>

下列 `put-object` 範例命令示範如何使用 AWS CLI 將物件上傳至 Amazon S3。若要執行此命令，請以您自己的資訊取代 `user input placeholders`。

```
aws s3api put-object --bucket bucket-base-name--zone-id--x-s3 --key sampleinut/file001.bin --body bucket-seed/file001.bin
```

如需詳細資訊，請參閱《AWS CLI 命令參考》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object.html)。

**Topics**
+ [搭配目錄儲存貯體使用分段上傳](s3-express-using-multipart-upload.md)

# 搭配目錄儲存貯體使用分段上傳
<a name="s3-express-using-multipart-upload"></a>

您可以使用分段上傳程序，將單一物件以一組組件進行上傳。每個組件都是物件資料的接續部分。您可依任何順序分別上傳這些物件組件。若任何組件的傳輸失敗，您可再次傳輸該組件，而不會影響其他組件。當物件的所有組件都全部上傳完後，Amazon S3 會將這些組件組合起來建立該物件。一般而言，當物件大小達到 100 MB 時，應考慮使用分段上傳，而不是以單次操作上傳物件。

使用分段上傳具備下列優勢：
+ **改善輸送量** - 您可平行上傳各組件以改進輸送量。
+ **快速從任何網路問題復原** – 組件大小若較小，對於重新開始因為網路發生錯誤而上傳失敗的影響可降到最低。
+ **暫停及繼續上傳物件** - 您可在一段時間內上傳物件組件。啟動分段上傳之後，就沒有過期日。您必須明確完成或中止分段上傳。
+ **在您知道最終物件大小前開始上傳** - 您可在建立物件的同時上傳物件。

建議您依照下列方式使用分段上傳：
+ 如果您透過穩定的高頻寬網路上傳大型物件，使用分段上傳可同時上傳多個物件組件以取得多執行緒效能，因而充分利用可用的頻寬。
+ 如果您透過不穩定的網路進行上傳，使用分段上傳可避免上傳重新開始，因而更快從網路錯誤中復原。使用分段上傳時，只有上傳期間遭到中斷的組件才需要重試上傳。您不需要從頭開始重新上傳物件。

當您使用分段上傳將物件上傳至目錄儲存貯體中的 Amazon S3 Express One Zone 儲存類別時，分段上傳程序類似於使用分段上傳將物件上傳至一般用途儲存貯體的程序。不過，還是有一些顯著的差異。

如需使用分段上傳將物件上傳至 S3 Express One Zone 的詳細資訊，請參閱下列主題。

**Topics**
+ [分段上傳程序](#s3-express-mpu-process)
+ [使用分段上傳操作的檢查總和](#s3-express-mpuchecksums)
+ [並行分段上傳操作](#s3-express-distributedmpupload)
+ [分段上傳與定價](#s3-express-mpuploadpricing)
+ [分段上傳 API 操作與許可](#s3-express-mpuAndPermissions)
+ [範例](#directory-buckets-multipart-upload-examples)

## 分段上傳程序
<a name="s3-express-mpu-process"></a>

分段上傳是三個步驟的程序：
+ 啟動上傳。
+ 上傳物件組件。
+ 上傳所有組件之後，即完成分段上傳。



Amazon S3 一收到完成分段上傳請求，就會從上傳的組件建構物件，然後您即可像存取儲存貯體中的任何其他物件一樣存取該物件。

**啟動分段上傳**  
當您傳送要求要啟動分段上傳時，Amazon S3 會傳回具有上傳 ID 的回應，其為分段上傳的唯一識別符。每次上傳分段各組件、列出各組件、完成上傳或中止上傳時，都必須納入此上傳 ID。

**組件上傳**  
上傳某個分段組件時，除了上傳 ID 之外，還必須指定組件編號。搭配 S3 Express One Zone 使用分段上傳時，分段組件編號必須是連續的組件編號。如果您嘗試使用非連續的組件編號完成分段上傳請求，則會產生 `HTTP 400 Bad Request` 錯誤 (組件順序無效)。

組件編號可找出獨特的某個組件，以及其在上傳中物件內的位置。若使用和前一個上傳組件相同的組件編號上傳新的組件，將會覆寫前一個已上傳的組件。

每次上傳一個組件時，Amazon S3 會在其回應中傳回 企業標籤 (ETag) 標頭。您必須記錄每個上傳組件的組件編號與 ETag 值。所有物件組件上傳的 ETag 值將保持不變，但每個組件將獲指派不同的組件編號。後續的要求中必須包含這些值，才能完成分段上傳。

Amazon S3 會自動加密上傳到 S3 儲存貯體的所有新物件。進行分段上傳時，若您未在請求中指定加密資訊，所上傳分段的加密設定會設為目的地儲存貯體的預設加密組態。Amazon S3 儲存貯體的預設加密組態一律為啟用狀態，且最低限度設定為使用 Amazon S3 受管金鑰 (SSE-S3) 的伺服器端加密。對於目錄儲存貯體，支援 SSE-S3 和伺服器端加密與 AWS KMS 金鑰 (SSE-KMS)。如需詳細資訊，請參閱[資料保護和加密](s3-express-data-protection.md)。

**完成分段上傳**  
當您完成分段上傳時，Amazon S3 會根據組件編號以遞增順序串連各個組件，建立物件。成功*完成*請求之後，這些片段就不再存在。

您的「完成分段上傳」**請求必須包含上傳 ID，以及組件編號和其對應 ETag 值的清單。Amazon S3 回應包含的 ETag 可識別獨特的物件資料組合。這個 ETag 不是物件資料的 MD5 雜湊。

**分段上傳清單**  
您可列出特定分段上傳的組件或所有進行中之分段上傳。列出組件操作會傳回特定分段上傳之已上傳組件的資訊。Amazon S3 會為每項列出的組件要求，傳回指定分段上傳組件的資訊，上限為 1,000 個組件。若分段上傳中有超過 1,000 個分段，您必須使用分頁來擷取所有分段。

傳回的組件清單不會包含尚未完成上傳的組件。使用*列出分段上傳*操作，即可取得正在進行中的分段上傳清單。

進行中的分段上傳是您已啟動但尚未完成或已中止的上傳。每個要求最多可傳回 1,000 個分段上傳。若正在進行超過 1,000 個的分段上傳，您必須另行傳送請求以擷取剩餘的分段上傳。傳回的清單僅用於進行驗證。傳送*完成分段上傳*請求時，請不要使用此清單的結果。而是在上傳 Amazon S3 傳回的組件與相對應之 ETag 值時，保有您自己的組件編號清單。

如需分段上傳清單的詳細資訊，請參閱 Amazon Simple Storage Service API 參考**中的[https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)。

## 使用分段上傳操作的檢查總和
<a name="s3-express-mpuchecksums"></a>

當您上傳物件時，可以指定檢查總和演算法來檢查物件完整性。目錄儲存貯體不支援 MD5。您可以指定以下 Secure Hash 演算法 (SHA) 或循環冗餘檢查 (CRC) 資料完整性演算法之一：
+ CRC32 
+ CRC32C 
+ SHA-1
+ SHA-256

您可以使用 Amazon S3 REST API 或 AWS SDKs，使用 `GetObject`或 擷取個別組件的檢查總和值`HeadObject`。如果想要擷取分段上傳 (仍在進行中) 之個別部分的總和檢查值，您可以使用 `ListParts`。

**重要**  
使用上述檢查總和演算法時，分段上傳組件編號必須使用連續的組件編號。如果您嘗試使用非連續的組件編號完成分段上傳請求，則 Amazon S3 會產生 `HTTP 400 Bad Request` (組件順序無效) 錯誤。

 如需如何搭配分段上傳物件使用檢查總和的詳細資訊，請參閱[在 Amazon S3 中檢查物件完整性](checking-object-integrity.md)。

## 並行分段上傳操作
<a name="s3-express-distributedmpupload"></a>

在分散式開發環境中，您的應用程式可以同時對相同的物件啟動數項更新。例如，您的應用程式可能使用相同的物件金鑰啟動數個分段上傳。然後針對這些每一個上傳，應用程式會上傳各組件，並對 Amazon S3 傳送完成上傳要求，以建立物件。對於 S3 Express One Zone 來說，物件建立時間是指分段上傳的完成日期。

**重要**  
儲存在目錄儲存貯體中的物件不支援版本控制。

## 分段上傳與定價
<a name="s3-express-mpuploadpricing"></a>

啟動分段上傳之後，Amazon S3 就會保留所有分段，直到您完成或中止上傳為止。在其整個生命週期內，您都要支付此分段上傳及其相關組件的儲存體、頻寬與要求之費用。如果您中止分段上傳，Amazon S3 會刪除上傳成品及任何已上傳的組件，而且您不需要再支付其費用。無論指定的儲存類別為何，刪除未完成的分段上傳都不會收取提前刪除費用。如需定價的詳細資訊，請參閱 [Amazon S3 定價](https://aws.amazon.com/s3/pricing/)。

**重要**  
若未能成功傳送完成分段上傳請求，就不會組合物件組件，也不會建立物件。系統會向您收取與已上傳部分相關的所有儲存空間費用。請務必完成分段上傳以建立物件，或者中止分段上傳以刪除任何已上傳的組件。  
刪除目錄儲存貯體之前，您必須先完成或中止所有進行中的分段上傳。目錄儲存貯體不支援 S3 生命週期組態。如有需要，您可以列出作用中分段上傳，然後中止上傳，再刪除儲存貯體。

## 分段上傳 API 操作與許可
<a name="s3-express-mpuAndPermissions"></a>

若要允許存取目錄儲存貯體上的物件管理 API 操作，您可以在儲存貯體政策或 AWS Identity and Access Management (IAM) 身分型政策中授予 `s3express:CreateSession` 許可。

您必須要有必要許可，才可使用分段上傳操作。您可以使用儲存貯體政策或 IAM 身分型政策，授予 IAM 主體執行這些操作的許可。下表列出各種分段上傳操作所需的許可。

您可以透過 `Initiator` 元素識別分段上傳的啟動者。如果啟動器是 AWS 帳戶，此元素會提供與 `Owner`元素相同的資訊。若啟動者是 IAM 使用者，此元素會提供使用者 ARN 與顯示名稱。


| Action | 所需的許可 | 
| --- | --- | 
|  建立分段上傳  |  若要建立分段上傳，您必須能夠對目錄儲存貯體執行 `s3express:CreateSession` 動作。  | 
|  啟動分段上傳  |  若要啟動分段上傳，您必須能夠對目錄儲存貯體執行 `s3express:CreateSession` 動作。  | 
| 上傳組件 |  若要上傳組件，您必須能夠對目錄儲存貯體執行 `s3express:CreateSession` 動作。 若要讓啟動者上傳組件，儲存貯體擁有者必須允許啟動者對目錄儲存貯體執行 `s3express:CreateSession` 動作。  | 
| 上傳組件 (複製) |  若要上傳組件，您必須能夠對目錄儲存貯體執行 `s3express:CreateSession` 動作。 啟動者若要分段上傳該物件，儲存貯體擁有者必須允許啟動者對物件執行 `s3express:CreateSession` 動作。  | 
| 完成分段上傳 |  若要完成分段上傳，您必須能夠對目錄儲存貯體執行 `s3express:CreateSession` 動作。 若要讓啟動者完成分段上傳，儲存貯體擁有者必須允許啟動者對物件執行 `s3express:CreateSession` 動作。  | 
| 中止分段上傳 |  若要中止分段上傳，您必須能夠執行 `s3express:CreateSession` 動作。 若要讓啟動者中止分段上載，必須明確授權允許啟動者執行 `s3express:CreateSession` 動作。  | 
| 列出組件 |  若要列出分段上傳的組件，您必須能夠對目錄儲存貯體執行 `s3express:CreateSession` 動作。  | 
| 列出進行中的分段上傳 |  若要列出對儲存貯體的進行中分段上傳，您必須能夠對該儲存貯體執行 `s3:ListBucketMultipartUploads` 動作。  | 

### 分段上傳的 API 操作支援
<a name="s3-express-mpu-apis"></a>

Amazon Simple Storage Service API 參考中的下列各節將描述用於分段上傳的 Amazon S3 REST API 操作。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)

## 範例
<a name="directory-buckets-multipart-upload-examples"></a>

若要使用分段上傳將物件上傳至目錄儲存貯體中的 S3 Express One Zone，請參閱下列範例。

**Topics**
+ [建立分段上傳](#directory-buckets-multipart-upload-examples-create)
+ [上傳分段上傳的組件](#directory-buckets-multipart-upload-examples-upload-part)
+ [完成分段上傳](#directory-buckets-multipart-upload-examples-complete)
+ [中止分段上傳](#directory-buckets-multipart-upload-examples-abort)
+ [建立分段上傳複製操作](#directory-buckets-multipart-upload-examples-upload-part-copy)
+ [列出進行中的分段上傳](#directory-buckets-multipart-upload-examples-list)
+ [列出分段上傳的分段](#directory-buckets-multipart-upload-examples-list-parts)

### 建立分段上傳
<a name="directory-buckets-multipart-upload-examples-create"></a>

**注意**  
對於目錄儲存貯體，當您執行 `CreateMultipartUpload` 操作和 `UploadPartCopy` 操作時，儲存貯體的預設加密必須使用所需的加密組態，而且您在 `CreateMultipartUpload` 請求中提供的請求標頭必須符合目的地儲存貯體的預設加密組態。

下列範例示範如何建立分段上傳。

#### 使用 AWS SDKs
<a name="directory-buckets-multipart-upload-create-sdks"></a>

------
#### [ SDK for Java 2.x ]

**Example**  

```
/**
 * This method creates a multipart upload request that generates a unique upload ID that is used to track
 * all the upload parts
 *
 * @param s3
 * @param bucketName - for example, 'doc-example-bucket--use1-az4--x-s3'
 * @param key
 * @return
 */
 private static String createMultipartUpload(S3Client s3, String bucketName, String key) {
 
     CreateMultipartUploadRequest createMultipartUploadRequest = CreateMultipartUploadRequest.builder() 
             .bucket(bucketName)
             .key(key)
             .build();
             
     String uploadId = null;
     
     try {
         CreateMultipartUploadResponse response = s3.createMultipartUpload(createMultipartUploadRequest);
         uploadId = response.uploadId();
     }
     catch (S3Exception e) {
         System.err.println(e.awsErrorDetails().errorMessage());
         System.exit(1);
     }
     return uploadId;
```

------
#### [ SDK for Python ]

**Example**  

```
def create_multipart_upload(s3_client, bucket_name, key_name):
    '''
   Create a multipart upload to a directory bucket
   
   :param s3_client: boto3 S3 client
   :param bucket_name: The destination bucket for the multipart upload
   :param key_name: The key name for the object to be uploaded
   :return: The UploadId for the multipart upload if created successfully, else None
   '''
   
   try:
        mpu = s3_client.create_multipart_upload(Bucket = bucket_name, Key = key_name)
        return mpu['UploadId'] 
    except ClientError as e:
        logging.error(e)
        return None
```

------

#### 使用 AWS CLI
<a name="directory-bucket-multipart-upload-create-cli"></a>

此範例示範如何使用 AWS CLI建立對目錄儲存貯體的分段上傳。此命令會開始將物件 *KEY\$1NAME* 分段上傳至目錄儲存貯體 *bucket-base-name*--*zone-id*--x-s3。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
aws s3api create-multipart-upload --bucket bucket-base-name--zone-id--x-s3 --key KEY_NAME
```

如需詳細資訊，請參閱 AWS Command Line Interface中的 [create-multipart-upload](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-multipart-upload.html)。

### 上傳分段上傳的組件
<a name="directory-buckets-multipart-upload-examples-upload-part"></a>

下列範例示範如何上傳分段上傳的組件。

#### 使用 AWS SDKs
<a name="directory-buckets-multipart-upload-part-sdks"></a>

------
#### [ SDK for Java 2.x ]

下列範例示範如何將單一物件分成多個組件，然後使用適用於 Java 2.x 的 SDK 將這些組件上傳至目錄儲存貯體。

**Example**  

```
/**
 * This method creates part requests and uploads individual parts to S3 and then returns all the completed parts
 *
 * @param s3
 * @param bucketName
 * @param key
 * @param uploadId
 * @throws IOException
 */
 private static ListCompletedPartmultipartUpload(S3Client s3, String bucketName, String key, String uploadId, String filePath) throws IOException {

        int partNumber = 1;
        ListCompletedPart completedParts = new ArrayList<>();
        ByteBuffer bb = ByteBuffer.allocate(1024 * 1024 * 5); // 5 MB byte buffer

        // read the local file, breakdown into chunks and process
        try (RandomAccessFile file = new RandomAccessFile(filePath, "r")) {
            long fileSize = file.length();
            int position = 0;
            while (position < fileSize) {
                file.seek(position);
                int read = file.getChannel().read(bb);

                bb.flip(); // Swap position and limit before reading from the buffer.
                UploadPartRequest uploadPartRequest = UploadPartRequest.builder()
                        .bucket(bucketName)
                        .key(key)
                        .uploadId(uploadId)
                        .partNumber(partNumber)
                        .build();

                UploadPartResponse partResponse = s3.uploadPart(
                        uploadPartRequest,
                        RequestBody.fromByteBuffer(bb));

                CompletedPart part = CompletedPart.builder()
                        .partNumber(partNumber)
                        .eTag(partResponse.eTag())
                        .build();
                completedParts.add(part);

                bb.clear();
                position += read;
                partNumber++;
            }
        } 
        
        catch (IOException e) {
            throw e;
        }
        return completedParts;
    }
```

------
#### [ SDK for Python ]

下列範例示範如何將單一物件分成多個組件，然後使用適用於 Python 的 SDK 將這些組件上傳至目錄儲存貯體。

**Example**  

```
def multipart_upload(s3_client, bucket_name, key_name, mpu_id, part_size):
    '''
    Break up a file into multiple parts and upload those parts to a directory bucket

    :param s3_client: boto3 S3 client
    :param bucket_name: Destination bucket for the multipart upload
    :param key_name: Key name for object to be uploaded and for the local file that's being uploaded
    :param mpu_id: The UploadId returned from the create_multipart_upload call
    :param part_size: The size parts that the object will be broken into, in bytes. 
                      Minimum 5 MiB, Maximum 5 GiB. There is no minimum size for the last part of your multipart upload.
    :return: part_list for the multipart upload if all parts are uploaded successfully, else None
    '''
    
    part_list = []
    try:
        with open(key_name, 'rb') as file:
            part_counter = 1
            while True:
                file_part = file.read(part_size)
                if not len(file_part):
                    break
                upload_part = s3_client.upload_part(
                    Bucket = bucket_name,
                    Key = key_name,
                    UploadId = mpu_id,
                    Body = file_part,
                    PartNumber = part_counter
                )
                part_list.append({'PartNumber': part_counter, 'ETag': upload_part['ETag']})
                part_counter += 1
    except ClientError as e:
        logging.error(e)
        return None
    return part_list
```

------

#### 使用 AWS CLI
<a name="directory-bucket-multipart-upload-part-cli"></a>

此範例示範如何將單一物件分成多個組件，然後使用 AWS CLI將這些組件上傳至目錄儲存貯體。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
aws s3api upload-part --bucket bucket-base-name--zone-id--x-s3 --key KEY_NAME --part-number 1 --body LOCAL_FILE_NAME --upload-id "AS_mgt9RaQE9GEaifATue15dAAAAAAAAAAEMAAAAAAAAADQwNzI4MDU0MjUyMBYAAAAAAAAAAA0AAAAAAAAAAAH2AfYAAAAAAAAEBSD0WBKMAQAAAABneY9yBVsK89iFkvWdQhRCcXohE8RbYtc9QvBOG8tNpA"
```

如需詳細資訊，請參閱 AWS Command Line Interface中的 [upload-part](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/upload-part.html)。

### 完成分段上傳
<a name="directory-buckets-multipart-upload-examples-complete"></a>

下列範例示範如何完成分段上傳。

#### 使用 AWS SDKs
<a name="directory-buckets-multipart-upload-complete-sdks"></a>

------
#### [ SDK for Java 2.x ]

下列範例示範如何使用適用於 Java 2.x 的 SDK 完成分段上傳。

**Example**  

```
/**
 * This method completes the multipart upload request by collating all the upload parts
 * @param s3
 * @param bucketName - for example, 'doc-example-bucket--usw2-az1--x-s3'
 * @param key
 * @param uploadId
 * @param uploadParts
 */
 private static void completeMultipartUpload(S3Client s3, String bucketName, String key, String uploadId, ListCompletedPart uploadParts) {
        CompletedMultipartUpload completedMultipartUpload = CompletedMultipartUpload.builder()
                .parts(uploadParts)
                .build();

        CompleteMultipartUploadRequest completeMultipartUploadRequest =
                CompleteMultipartUploadRequest.builder()
                        .bucket(bucketName)
                        .key(key)
                        .uploadId(uploadId)
                        .multipartUpload(completedMultipartUpload)
                        .build();

        s3.completeMultipartUpload(completeMultipartUploadRequest);
    }

    public static void multipartUploadTest(S3Client s3, String bucketName, String key, String localFilePath)  {
        System.out.println("Starting multipart upload for: " + key);
        try {
            String uploadId = createMultipartUpload(s3, bucketName, key);
            System.out.println(uploadId);
            ListCompletedPart parts = multipartUpload(s3, bucketName, key, uploadId, localFilePath);
            completeMultipartUpload(s3, bucketName, key, uploadId, parts);
            System.out.println("Multipart upload completed for: " + key);
        } 
        
        catch (Exception e) {
            System.err.println(e.getMessage());
            System.exit(1);
        }
    }
```

------
#### [ SDK for Python ]

下列範例示範如何使用適用於 Python 的 SDK 完成分段上傳。

**Example**  

```
def complete_multipart_upload(s3_client, bucket_name, key_name, mpu_id, part_list):
    '''
    Completes a multipart upload to a directory bucket

    :param s3_client: boto3 S3 client
    :param bucket_name: The destination bucket for the multipart upload
    :param key_name: The key name for the object to be uploaded
    :param mpu_id: The UploadId returned from the create_multipart_upload call
    :param part_list: The list of uploaded part numbers with their associated ETags 
    :return: True if the multipart upload was completed successfully, else False
    '''
    
    try:
        s3_client.complete_multipart_upload(
            Bucket = bucket_name,
            Key = key_name,
            UploadId = mpu_id,
            MultipartUpload = {
                'Parts': part_list
            }
        )
    except ClientError as e:
        logging.error(e)
        return False
    return True
    
if __name__ == '__main__':
    MB = 1024 ** 2
    region = 'us-west-2'
    bucket_name = 'BUCKET_NAME'
    key_name = 'OBJECT_NAME'
    part_size = 10 * MB
    s3_client = boto3.client('s3', region_name = region)
    mpu_id = create_multipart_upload(s3_client, bucket_name, key_name)
    if mpu_id is not None:
        part_list = multipart_upload(s3_client, bucket_name, key_name, mpu_id, part_size)
        if part_list is not None:
            if complete_multipart_upload(s3_client, bucket_name, key_name, mpu_id, part_list):
                print (f'{key_name} successfully uploaded through a ultipart upload to {bucket_name}')
            else:
                print (f'Could not upload {key_name} hrough a multipart upload to {bucket_name}')
```

------

#### 使用 AWS CLI
<a name="directory-bucket-multipart-upload-complete-cli"></a>

此範例示範如何使用 AWS CLI完成目錄儲存貯體的分段上傳。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
aws s3api complete-multipart-upload --bucket bucket-base-name--zone-id--x-s3 --key KEY_NAME --upload-id "AS_mgt9RaQE9GEaifATue15dAAAAAAAAAAEMAAAAAAAAADQwNzI4MDU0MjUyMBYAAAAAAAAAAA0AAAAAAAAAAAH2AfYAAAAAAAAEBSD0WBKMAQAAAABneY9yBVsK89iFkvWdQhRCcXohE8RbYtc9QvBOG8tNpA" --multipart-upload file://parts.json
```

此範例採用 JSON 結構，描述應重新組合成完整檔案的分段上傳組件。在此範例中，`file://` 字首用於從本機資料夾中名為 `parts` 的檔案載入 JSON 結構。

parts.json：

```
parts.json
{
  "Parts": [
    {
      "ETag": "6b78c4a64dd641a58dac8d9258b88147",
      "PartNumber": 1
    }
  ]
}
```

如需詳細資訊，請參閱 AWS Command Line Interface中的 [complete-multipart-upload](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/complete-multipart-upload.html)。

### 中止分段上傳
<a name="directory-buckets-multipart-upload-examples-abort"></a>

下列範例示範如何中止分段上傳。

#### 使用 AWS SDKs
<a name="directory-bucket-multipart-upload-abort-sdk"></a>

------
#### [ SDK for Java 2.x ]

下列範例示範如何使用適用於 Java 2.x 的 SDK 中止分段上傳。

**Example**  

```
public static void abortMultiPartUploads( S3Client s3, String bucketName ) {

         try {
             ListMultipartUploadsRequest listMultipartUploadsRequest = ListMultipartUploadsRequest.builder()
                     .bucket(bucketName)
                     .build();

             ListMultipartUploadsResponse response = s3.listMultipartUploads(listMultipartUploadsRequest);
             ListMultipartUpload uploads = response.uploads();

             AbortMultipartUploadRequest abortMultipartUploadRequest;
             for (MultipartUpload upload: uploads) {
                 abortMultipartUploadRequest = AbortMultipartUploadRequest.builder()
                         .bucket(bucketName)
                         .key(upload.key())
                         .uploadId(upload.uploadId())
                         .build();

                 s3.abortMultipartUpload(abortMultipartUploadRequest);
             }

         } 
         
         catch (S3Exception e) {
             System.err.println(e.getMessage());
             System.exit(1);
         }
     }
```

------
#### [ SDK for Python ]

下列範例示範如何使用適用於 Python 的 SDK 中止分段上傳。

**Example**  

```
import logging
import boto3
from botocore.exceptions import ClientError


def abort_multipart_upload(s3_client, bucket_name, key_name, upload_id):
    '''
    Aborts a partial multipart upload in a directory bucket.
    
    :param s3_client: boto3 S3 client
    :param bucket_name: Bucket where the multipart upload was initiated - for example, 'doc-example-bucket--usw2-az1--x-s3'
    :param key_name: Name of the object for which the multipart upload needs to be aborted
    :param upload_id: Multipart upload ID for the multipart upload to be aborted
    :return: True if the multipart upload was successfully aborted, False if not
    '''
    try:
        s3_client.abort_multipart_upload(
            Bucket = bucket_name,
            Key = key_name,
            UploadId = upload_id
        )
    except ClientError as e:
        logging.error(e)
        return False
    return True


if __name__ == '__main__':
    region = 'us-west-2'
    bucket_name = 'BUCKET_NAME'
    key_name = 'KEY_NAME'
        upload_id = 'UPLOAD_ID'
    s3_client = boto3.client('s3', region_name = region)
    if abort_multipart_upload(s3_client, bucket_name, key_name, upload_id):
        print (f'Multipart upload for object {key_name} in {bucket_name} bucket has been aborted')
    else:
        print (f'Unable to abort multipart upload for object {key_name} in {bucket_name} bucket')
```

------

#### 使用 AWS CLI
<a name="directory-bucket-multipart-upload-complete-cli"></a>

下列範例示範如何使用 AWS CLI中止分段上傳。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
aws s3api abort-multipart-upload --bucket bucket-base-name--zone-id--x-s3 --key KEY_NAME --upload-id "AS_mgt9RaQE9GEaifATue15dAAAAAAAAAAEMAAAAAAAAADQwNzI4MDU0MjUyMBYAAAAAAAAAAA0AAAAAAAAAAAH2AfYAAAAAAAAEAX5hFw-MAQAAAAB0OxUFeA7LTbWWFS8WYwhrxDxTIDN-pdEEq_agIHqsbg"
```

如需詳細資訊，請參閱 AWS Command Line Interface中的 [abort-multipart-upload](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/abort-multipart-upload.html)。

### 建立分段上傳複製操作
<a name="directory-buckets-multipart-upload-examples-upload-part-copy"></a>

**注意**  
若要使用 SSE-KMS 加密目錄儲存貯體中的新物件組件複本，您必須使用 KMS 金鑰 (特別是[客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)) 將 SSE-KMS 指定為目錄儲存貯體的預設加密組態。不支援 [AWS 受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) (`aws/s3`)。您的 SSE-KMS 組態在儲存貯體的生命週期內，每個目錄儲存貯體只能支援 1 個[客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。為 SSE-KMS 指定客戶自管金鑰之後，即無法覆寫儲存貯體 SSE-KMS 組態的客戶自管金鑰。您無法在 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 請求標頭中，使用 SSE-KMS 為新的物件組件複本指定伺服器端加密設定。此外，您在 `CreateMultipartUpload` 請求中提供的請求標頭必須符合目的地儲存貯體的預設加密組態。
當您透過 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)，將 SSE-KMS 加密物件從一般用途儲存貯體複製到目錄儲存貯體、從目錄儲存貯體複製到一般用途儲存貯體或在目錄儲存貯體之間複製時，不支援 S3 儲存貯體金鑰。在此情況下，Amazon S3 AWS KMS 每次對 KMS 加密物件提出複製請求時都會呼叫 。

下列範例示範如何使用分段上傳，將物件從一個儲存貯體複製到另一個。

#### 使用 AWS SDKs
<a name="directory-bucket-multipart-upload-copy-sdk"></a>

------
#### [ SDK for Java 2.x ]

下列範例示範如何透過適用於 Java 2.x 的 SDK，使用分段上傳以程式設計方式將物件從一個儲存貯體複製到另一個。

**Example**  

```
/**
 * This method creates a multipart upload request that generates a unique upload ID that is used to track
 * all the upload parts.
 *
 * @param s3
 * @param bucketName
 * @param key
 * @return
 */
 private static String createMultipartUpload(S3Client s3, String bucketName, String key) {
        CreateMultipartUploadRequest createMultipartUploadRequest = CreateMultipartUploadRequest.builder()
                .bucket(bucketName)
                .key(key)
                .build();
        String uploadId = null;
        try {
            CreateMultipartUploadResponse response = s3.createMultipartUpload(createMultipartUploadRequest);
            uploadId = response.uploadId();
        } catch (S3Exception e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return uploadId;
  }

  /**
   * Creates copy parts based on source object size and copies over individual parts
   *
   * @param s3
   * @param sourceBucket
   * @param sourceKey
   * @param destnBucket
   * @param destnKey
   * @param uploadId
   * @return
   * @throws IOException
   */
    public static ListCompletedPart multipartUploadCopy(S3Client s3, String sourceBucket, String sourceKey, String destnBucket, String destnKey, String uploadId) throws IOException {

        // Get the object size to track the end of the copy operation.
        HeadObjectRequest headObjectRequest = HeadObjectRequest
                .builder()
                .bucket(sourceBucket)
                .key(sourceKey)
                .build();
        HeadObjectResponse response = s3.headObject(headObjectRequest);
        Long objectSize = response.contentLength();

        System.out.println("Source Object size: " + objectSize);

        // Copy the object using 20 MB parts.
        long partSize = 20 * 1024 * 1024;
        long bytePosition = 0;
        int partNum = 1;
        ListCompletedPart completedParts = new ArrayList<>();
        while (bytePosition < objectSize) {
            // The last part might be smaller than partSize, so check to make sure
            // that lastByte isn't beyond the end of the object.
            long lastByte = Math.min(bytePosition + partSize - 1, objectSize - 1);

            System.out.println("part no: " + partNum + ", bytePosition: " + bytePosition + ", lastByte: " + lastByte);

            // Copy this part.
            UploadPartCopyRequest req = UploadPartCopyRequest.builder()
                    .uploadId(uploadId)
                    .sourceBucket(sourceBucket)
                    .sourceKey(sourceKey)
                    .destinationBucket(destnBucket)
                    .destinationKey(destnKey)
                    .copySourceRange("bytes="+bytePosition+"-"+lastByte)
                    .partNumber(partNum)
                    .build();
            UploadPartCopyResponse res = s3.uploadPartCopy(req);
            CompletedPart part = CompletedPart.builder()
                    .partNumber(partNum)
                    .eTag(res.copyPartResult().eTag())
                    .build();
            completedParts.add(part);
            partNum++;
            bytePosition += partSize;
        }
        return completedParts;
    }


    public static void multipartCopyUploadTest(S3Client s3, String srcBucket, String srcKey, String destnBucket, String destnKey)  {
        System.out.println("Starting multipart copy for: " + srcKey);
        try {
            String uploadId = createMultipartUpload(s3, destnBucket, destnKey);
            System.out.println(uploadId);
            ListCompletedPart parts = multipartUploadCopy(s3, srcBucket, srcKey,destnBucket,  destnKey, uploadId);
            completeMultipartUpload(s3, destnBucket, destnKey, uploadId, parts);
            System.out.println("Multipart copy completed for: " + srcKey);
        } catch (Exception e) {
            System.err.println(e.getMessage());
            System.exit(1);
        }
    }
```

------
#### [ SDK for Python ]

下列範例示範如何透過適用於 Python 的 SDK，使用分段上傳以程式設計方式將物件從一個儲存貯體複製到另一個。

**Example**  

```
import logging
import boto3
from botocore.exceptions import ClientError

def head_object(s3_client, bucket_name, key_name):
    '''
    Returns metadata for an object in a directory bucket

    :param s3_client: boto3 S3 client
    :param bucket_name: Bucket that contains the object to query for metadata
    :param key_name: Key name to query for metadata
    :return: Metadata for the specified object if successful, else None
    '''

    try:
        response = s3_client.head_object(
            Bucket = bucket_name,
            Key = key_name
        )
        return response
    except ClientError as e:
        logging.error(e)
        return None
    
def create_multipart_upload(s3_client, bucket_name, key_name):
    '''
    Create a multipart upload to a directory bucket

    :param s3_client: boto3 S3 client
    :param bucket_name: Destination bucket for the multipart upload
    :param key_name: Key name of the object to be uploaded
    :return: UploadId for the multipart upload if created successfully, else None
    '''
    
    try:
        mpu = s3_client.create_multipart_upload(Bucket = bucket_name, Key = key_name)
        return mpu['UploadId'] 
    except ClientError as e:
        logging.error(e)
        return None

def multipart_copy_upload(s3_client, source_bucket_name, key_name, target_bucket_name, mpu_id, part_size):
    '''
    Copy an object in a directory bucket to another bucket in multiple parts of a specified size
    
    :param s3_client: boto3 S3 client
    :param source_bucket_name: Bucket where the source object exists
    :param key_name: Key name of the object to be copied
    :param target_bucket_name: Destination bucket for copied object
    :param mpu_id: The UploadId returned from the create_multipart_upload call
    :param part_size: The size parts that the object will be broken into, in bytes. 
                      Minimum 5 MiB, Maximum 5 GiB. There is no minimum size for the last part of your multipart upload.
    :return: part_list for the multipart copy if all parts are copied successfully, else None
    '''
    
    part_list = []
    copy_source = {
        'Bucket': source_bucket_name,
        'Key': key_name
    }
    try:
        part_counter = 1
        object_size = head_object(s3_client, source_bucket_name, key_name)
        if object_size is not None:
            object_size = object_size['ContentLength']
        while (part_counter - 1) * part_size <object_size:
            bytes_start = (part_counter - 1) * part_size
            bytes_end = (part_counter * part_size) - 1
            upload_copy_part = s3_client.upload_part_copy (
                Bucket = target_bucket_name,
                CopySource = copy_source,
                CopySourceRange = f'bytes={bytes_start}-{bytes_end}',
                Key = key_name,
                PartNumber = part_counter,
                UploadId = mpu_id
            )
            part_list.append({'PartNumber': part_counter, 'ETag': upload_copy_part['CopyPartResult']['ETag']})
            part_counter += 1
    except ClientError as e:
        logging.error(e)
        return None
    return part_list

def complete_multipart_upload(s3_client, bucket_name, key_name, mpu_id, part_list):
    '''
    Completes a multipart upload to a directory bucket

    :param s3_client: boto3 S3 client
    :param bucket_name: Destination bucket for the multipart upload
    :param key_name: Key name of the object to be uploaded
    :param mpu_id: The UploadId returned from the create_multipart_upload call
    :param part_list: List of uploaded part numbers with associated ETags 
    :return: True if the multipart upload was completed successfully, else False
    '''
    
    try:
        s3_client.complete_multipart_upload(
            Bucket = bucket_name,
            Key = key_name,
            UploadId = mpu_id,
            MultipartUpload = {
                'Parts': part_list
            }
        )
    except ClientError as e:
        logging.error(e)
        return False
    return True

if __name__ == '__main__':
    MB = 1024 ** 2
    region = 'us-west-2'
    source_bucket_name = 'SOURCE_BUCKET_NAME'
    target_bucket_name = 'TARGET_BUCKET_NAME'
    key_name = 'KEY_NAME'
    part_size = 10 * MB
    s3_client = boto3.client('s3', region_name = region)
    mpu_id = create_multipart_upload(s3_client, target_bucket_name, key_name)
    if mpu_id is not None:
        part_list = multipart_copy_upload(s3_client, source_bucket_name, key_name, target_bucket_name, mpu_id, part_size)
        if part_list is not None:
            if complete_multipart_upload(s3_client, target_bucket_name, key_name, mpu_id, part_list):
                print (f'{key_name} successfully copied through multipart copy from {source_bucket_name} to {target_bucket_name}')
            else:
                print (f'Could not copy {key_name} through multipart copy from {source_bucket_name} to {target_bucket_name}')
```

------

#### 使用 AWS CLI
<a name="directory-bucket-multipart-upload-copy-cli"></a>

下列範例示範如何透過 AWS CLI，使用分段上傳以程式設計方式將物件從一個儲存貯體複製到另一個。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
aws s3api upload-part-copy --bucket bucket-base-name--zone-id--x-s3 --key TARGET_KEY_NAME --copy-source SOURCE_BUCKET_NAME/SOURCE_KEY_NAME --part-number 1 --upload-id "AS_mgt9RaQE9GEaifATue15dAAAAAAAAAAEMAAAAAAAAADQwNzI4MDU0MjUyMBYAAAAAAAAAAA0AAAAAAAAAAAH2AfYAAAAAAAAEBnJ4cxKMAQAAAABiNXpOFVZJ1tZcKWib9YKE1C565_hCkDJ_4AfCap2svg"
```

如需詳細資訊，請參閱 AWS Command Line Interface中的 [upload-part-copy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/upload-part-copy.html                         )。

### 列出進行中的分段上傳
<a name="directory-buckets-multipart-upload-examples-list"></a>

若要列出對目錄儲存貯體進行中的分段上傳，您可以使用 AWS SDKs或 AWS CLI。

#### 使用 AWS SDKs
<a name="directory-bucket-multipart-upload-list-sdk"></a>

------
#### [ SDK for Java 2.x ]

下列範例示範如何使用適用於 Java 2.x 的 SDK 列出進行中 (未完成) 的分段上傳。

**Example**  

```
 public static void listMultiPartUploads( S3Client s3, String bucketName) {
        try {
            ListMultipartUploadsRequest listMultipartUploadsRequest = ListMultipartUploadsRequest.builder()
                .bucket(bucketName)
                .build();
                
            ListMultipartUploadsResponse response = s3.listMultipartUploads(listMultipartUploadsRequest);
            List MultipartUpload uploads = response.uploads();
            for (MultipartUpload upload: uploads) {
                System.out.println("Upload in progress: Key = \"" + upload.key() + "\", id = " + upload.uploadId());
            }
      }
      catch (S3Exception e) {
            System.err.println(e.getMessage());
            System.exit(1);
      }
  }
```

------
#### [ SDK for Python ]

下列範例示範如何使用適用於 Python 的 SDK 列出進行中 (未完成) 的分段上傳。

**Example**  

```
import logging
import boto3
from botocore.exceptions import ClientError

def list_multipart_uploads(s3_client, bucket_name):
    '''
    List any incomplete multipart uploads in a directory bucket in e specified gion

    :param s3_client: boto3 S3 client
    :param bucket_name: Bucket to check for incomplete multipart uploads
    :return: List of incomplete multipart uploads if there are any, None if not
    '''
    
    try:
        response = s3_client.list_multipart_uploads(Bucket = bucket_name)
        if 'Uploads' in response.keys():
            return response['Uploads']
        else:
            return None 
    except ClientError as e:
        logging.error(e)

if __name__ == '__main__':
    bucket_name = 'BUCKET_NAME'
    region = 'us-west-2'
    s3_client = boto3.client('s3', region_name = region)
    multipart_uploads = list_multipart_uploads(s3_client, bucket_name)
    if multipart_uploads is not None:
        print (f'There are {len(multipart_uploads)} ncomplete multipart uploads for {bucket_name}')
    else:
        print (f'There are no incomplete multipart uploads for {bucket_name}')
```

------

#### 使用 AWS CLI
<a name="directory-bucket-multipart-upload-list-cli"></a>

下列範例示範如何使用 AWS CLI列出進行中 (未完成) 的分段上傳。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
aws s3api list-multipart-uploads --bucket bucket-base-name--zone-id--x-s3
```

如需詳細資訊，請參閱 AWS Command Line Interface中的 [list-multipart-uploads](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/list-multipart-uploads.html                         )。

### 列出分段上傳的分段
<a name="directory-buckets-multipart-upload-examples-list-parts"></a>

下列範例示範如何列出分段上傳至目錄儲存貯體的組件。

#### 使用 AWS SDKs
<a name="directory-bucket-multipart-upload-list-parts-sdk"></a>

------
#### [ SDK for Java 2.x ]

下列範例示範如何使用適用於 Java 2.x 的 SDK 列出分段上傳至目錄儲存貯體的組件。

```
public static void listMultiPartUploadsParts( S3Client s3, String bucketName, String objKey, String uploadID) {
         
         try {
             ListPartsRequest listPartsRequest = ListPartsRequest.builder()
                 .bucket(bucketName)
                 .uploadId(uploadID)
                 .key(objKey)
                 .build();

             ListPartsResponse response = s3.listParts(listPartsRequest);
             ListPart parts = response.parts();
             for (Part part: parts) {
                 System.out.println("Upload in progress: Part number = \"" + part.partNumber() + "\", etag = " + part.eTag());
             }

         } 
         
         catch (S3Exception e) {
             System.err.println(e.getMessage());
             System.exit(1);
         }
         
         
     }
```

------
#### [ SDK for Python ]

下列範例示範如何使用適用於 Python 的 SDK 列出分段上傳至目錄儲存貯體的組件。

```
import logging
import boto3
from botocore.exceptions import ClientError

def list_parts(s3_client, bucket_name, key_name, upload_id):
    '''
    Lists the parts that have been uploaded for a specific multipart upload to a directory bucket.
    
    :param s3_client: boto3 S3 client
    :param bucket_name: Bucket that multipart uploads parts have been uploaded to
    :param key_name: Name of the object that has parts uploaded
    :param upload_id: Multipart upload ID that the parts are associated with
    :return: List of parts associated with the specified multipart upload, None if there are no parts
    '''
    parts_list = []
    next_part_marker = ''
    continuation_flag = True
    try:
        while continuation_flag:
            if next_part_marker == '':
                response = s3_client.list_parts(
                    Bucket = bucket_name,
                    Key = key_name,
                    UploadId = upload_id
                )
            else:
                response = s3_client.list_parts(
                    Bucket = bucket_name,
                    Key = key_name,
                    UploadId = upload_id,
                    NextPartMarker = next_part_marker
                )
            if 'Parts' in response:
                for part in response['Parts']:
                    parts_list.append(part)
                if response['IsTruncated']:
                    next_part_marker = response['NextPartNumberMarker']
                else:
                    continuation_flag = False
            else:
                continuation_flag = False
        return parts_list
    except ClientError as e:
        logging.error(e)
        return None

if __name__ == '__main__':
    region = 'us-west-2'
    bucket_name = 'BUCKET_NAME'
    key_name = 'KEY_NAME'
    upload_id = 'UPLOAD_ID'
    s3_client = boto3.client('s3', region_name = region)
    parts_list = list_parts(s3_client, bucket_name, key_name, upload_id)
    if parts_list is not None:
        print (f'{key_name} has {len(parts_list)} parts uploaded to {bucket_name}')
    else:
        print (f'There are no multipart uploads with that upload ID for {bucket_name} bucket')
```

------

#### 使用 AWS CLI
<a name="directory-bucket-multipart-upload-list-parts-cli"></a>

下列範例示範如何使用 AWS CLI列出分段上傳至目錄儲存貯體的組件。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
aws s3api list-parts --bucket bucket-base-name--zone-id--x-s3 --key KEY_NAME --upload-id "AS_mgt9RaQE9GEaifATue15dAAAAAAAAAAEMAAAAAAAAADQwNzI4MDU0MjUyMBYAAAAAAAAAAA0AAAAAAAAAAAH2AfYAAAAAAAAEBSD0WBKMAQAAAABneY9yBVsK89iFkvWdQhRCcXohE8RbYtc9QvBOG8tNpA"
```

如需詳細資訊，請參閱 AWS Command Line Interface中的 [list-parts](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/list-parts.html)。

# 從目錄儲存貯體複製物件或將物件複製到目錄儲存貯體
<a name="directory-buckets-objects-copy"></a>

該複製操作會為已存放在 Amazon S3 中的物件建立複本。您可以在目錄儲存貯體和一般用途儲存貯體之間複製物件。您也可以在儲存貯體內以及相同類型的儲存貯體之間複製物件，例如從目錄儲存貯體複製到目錄儲存貯體。

**注意**  
當來源或目的地儲存貯體位於 AWS 本機區域時， AWS 區域 不支援跨不同 複製物件。來源儲存貯體和目的地儲存貯體必須具有相同的父 AWS 區域。來源儲存貯體和目的地儲存貯體可以是不同的儲存貯體位置類型 (可用區域或本機區域)。

單一非敗即成 (atomic operation) 操作最多可以為 5 GB 的物件建立複本。但若複製的物件大於 5 GB，則必須使用分段上傳 API 操作。如需詳細資訊，請參閱[搭配目錄儲存貯體使用分段上傳](s3-express-using-multipart-upload.md)。

**許可**  
 若要複製物件，您必須具有下列許可：
+ 若要在目錄儲存貯體之間複製物件，您必須具有 `s3express:CreateSession` 許可。
+ 若要將物件從目錄儲存貯體複製到一般用途儲存貯體，您必須具有 `s3express:CreateSession` 許可和 `s3:PutObject` 許可，以將複製的物件寫入目的地儲存貯體。
+ 若要將物件從一般用途儲存貯體複製到目錄儲存貯體，您必須具有 `s3express:CreateSession` 許可和 `s3:GetObject` 許可，以讀取要複製的來源物件。

   如需詳細資訊，請參閱 Amazon Simple Storage Service API 參考**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)。

**加密**  
Amazon S3 會自動加密上傳到 S3 儲存貯體的所有新物件。S3 儲存貯體的預設加密組態一律為啟用狀態，且最低限度設定為使用 Amazon S3 受管金鑰 (SSE-S3) 的伺服器端加密。

對於目錄儲存貯體，支援使用 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 的 SSE-S3 和伺服器端加密。當目的地儲存貯體是目錄儲存貯體時，建議目的地儲存貯體的預設加密使用所需的加密組態，而且您不會覆寫儲存貯體的預設加密。然後，新的物件會以所需的加密設定自動加密。此外，當您透過 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)，將 SSE-KMS 加密物件從一般用途儲存貯體複製到目錄儲存貯體、從目錄儲存貯體複製到一般用途儲存貯體或在目錄儲存貯體之間複製時，不支援 S3 儲存貯體金鑰。在此情況下，Amazon S3 AWS KMS 每次對 KMS 加密物件提出複製請求時都會呼叫 。如需在目錄儲存貯體中覆寫加密行為的詳細資訊，請參閱[使用 指定伺服器端加密 AWS KMS 以進行新物件上傳](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html)。

對於一般用途儲存貯體，您可以使用 SSE-S3 （預設值）、伺服器端加密搭配 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS)、雙層伺服器端加密搭配 AWS KMS 金鑰 (DSSE-KMS)，或伺服器端加密搭配客戶提供的金鑰 (SSE-C)。

如果您提出複製請求，指定對目錄儲存貯體 (來源或目的地儲存貯體) 使用 DSSE-KMS 或 SSE-C，回應會傳回錯誤。

**Tags (標籤)**  
目錄儲存貯體不支援標籤。如果您將具有標籤的物件從一般用途儲存貯體複製到目錄儲存貯體，您會收到 HTTP `501 (Not Implemented)` 回應。如需詳細資訊，請參閱 Amazon Simple Storage Service API 參考**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)。

**ETag**  
S3 Express One Zone 的實體標籤 (ETag) 是隨機的英數字串，而不是 MD5 檢查總和。為了協助確保物件完整性，請使用額外的檢查總和。

**其他檢查總和**  
S3 Express One Zone 可讓您選擇用於在上傳或下載過程中驗證資料的檢查總和演算法選項。您可以選擇以下 Secure Hash 演算法 (SHA) 或循環宂餘檢查 (CRC) 資料完整性演算法之一：CRC32、CRC32C、SHA-1 和 SHA-256。S3 Express One Zone 儲存類別不支援 MD5 型檢查總和。

如需詳細資訊，請參閱[S3 其他檢查總和最佳實務](s3-express-optimizing-performance.md#s3-express-optimizing-performance-checksums)。

**支援的功能**  
如需 S3 Express One Zone 支援哪些 Amazon S3 功能的詳細資訊，請參閱[目錄儲存貯體的不同之處](s3-express-differences.md)。

## 使用 S3 主控台 (複製到目錄儲存貯體)
<a name="directory-bucket-copy-console"></a>

**注意**  
當您使用主控台將物件複製到目錄儲存貯體時，您有下列限制：  
`Copy` 動作會套用至指定資料夾中 (指定字首) 的所有物件。在動作進行期間加入這些資料夾的物件可能會受到影響。
使用客戶提供的加密金鑰 (SSE-C) 加密的物件無法經由 S3 主控台複製。若要複製使用 SSE-C 加密的物件，請使用 AWS CLI、 AWS SDK 或 Amazon S3 REST API。
複製的物件不會保留原始物件的物件鎖定設定。
如果複製物件的來源儲存貯體使用儲存貯體擁有者強制執行的 S3 物件擁有權設定，則不會將物件 ACL 複製到指定的目的地。
如果您想要將物件複製到使用儲存貯體擁有者強制執行的 S3 物件擁有權設定的儲存貯體，請確定來源儲存貯體也使用儲存貯體擁有者強制執行的設定，或移除任何物件 ACL 授予其他 AWS 帳戶和群組。
從一般用途儲存貯體複製到目錄儲存貯體的物件不會保留物件標籤、ACL 或 Etag 值。檢查總和值可以複製，但不等同於 Etag。檢查總和值與新增時相比可能有所變更。
 複製到目錄儲存貯體的所有物件都會具有儲存貯體擁有者強制執行的 S3 物件擁有權設定。

**將物件從一般用途儲存貯體複製到目錄儲存貯體或從一個目錄儲存貯體複製到另一個目錄儲存貯體**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 在左側導覽窗格中，您要從中複製物件的儲存貯體類型：
   + 若要從一般用途儲存貯體進行複製，請選擇**一般用途儲存貯體**索引標籤。
   + 若要從目錄儲存貯體進行複製，請選擇**目錄儲存貯體**索引標籤。

1. 選擇包含您要複製之物件的一般用途儲存貯體或目錄儲存貯體。

1. 選擇 **Objects** (物件) 索引標籤。在**物件**頁面上，選取您要複製之物件名稱左側的核取方塊。

1. 在 **Actions (動作)** 功能表上，選擇 **Copy (複製)**。

   **複製**頁面隨即出現。

1. 在**目的地**下，選擇**目錄儲存貯體**作為目的地類型。若要指定目的地路徑，請選擇**瀏覽 S3**，導覽至目的地，然後選擇目的地左側的選項按鈕。選擇右下角的 **Choose destination** (選擇目的地)。

   或者，輸入目的地路徑。

1. 在**其他複製設定**下，選擇**複製來源設定**、**不要指定設定**或**指定設定**。**複製來源設定**是預設選項。如果您只想複製物件但不想包含來源設定屬性，請選擇**不要指定設定**。選擇**指定設定**以指定伺服器端加密、檢查總和及中繼資料的設定。

1. 選擇右下角的 **Copy** (複製)。Amazon S3 會將您的物件複製到目的地。

## 使用 S3 主控台 (複製到一般用途儲存貯體)
<a name="directory-bucket-copy-console"></a>

**注意**  
當您使用主控台將物件複製到一般用途儲存貯體時，您有下列限制：  
`Copy` 動作會套用至指定資料夾中 (指定字首) 的所有物件。在動作進行期間加入這些資料夾的物件可能會受到影響。
使用客戶提供的加密金鑰 (SSE-C) 加密的物件無法經由 S3 主控台複製。若要複製使用 SSE-C 加密的物件，請使用 AWS CLI、 AWS SDK 或 Amazon S3 REST API。
複製的物件不會保留原始物件的物件鎖定設定。
如果複製物件的來源儲存貯體使用儲存貯體擁有者強制執行的 S3 物件擁有權設定，則不會將物件 ACL 複製到指定的目的地。
如果您想要將物件複製到使用儲存貯體擁有者強制執行的 S3 物件擁有權設定的儲存貯體，請確定來源儲存貯體也使用儲存貯體擁有者強制執行的設定，或移除任何物件 ACL 授予其他 AWS 帳戶和群組。

**將物件從目錄儲存貯體複製到一般用途儲存貯體**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇 **Buckets** (儲存貯體)。

1. 選擇**目錄儲存貯體**索引標籤。

1. 選擇包含您要複製之物件的目錄儲存貯體。

1. 選擇 **Objects** (物件) 索引標籤。在**物件**頁面上，選取您要複製之物件名稱左側的核取方塊。

1. 在 **Actions (動作)** 功能表上，選擇 **Copy (複製)**。

    

1. 在**目的地**下，選擇**一般用途儲存貯體**作為目的地類型。若要指定目的地路徑，請選擇**瀏覽 S3**，導覽至目的地，然後選擇目的地左側的選項按鈕。選擇右下角的 **Choose destination** (選擇目的地)。

   或者，輸入目的地路徑。

1. 在**其他複製設定**下，選擇**複製來源設定**、**不要指定設定**或**指定設定**。**複製來源設定**是預設選項。如果您只想複製物件但不想包含來源設定屬性，請選擇**不要指定設定**。選擇**指定設定**以指定儲存類別、ACL、物件標籤、中繼資料、伺服器端加密和額外檢查總和的設定。

1. 選擇右下角的 **Copy** (複製)。Amazon S3 會將您的物件複製到目的地。

## 使用 AWS SDKs
<a name="directory-bucket-copy-sdks"></a>

------
#### [ SDK for Java 2.x ]

**Example**  

```
 public static void copyBucketObject (S3Client s3, String sourceBucket, String objectKey, String targetBucket) {
      CopyObjectRequest copyReq = CopyObjectRequest.builder()
          .sourceBucket(sourceBucket)
          .sourceKey(objectKey)
          .destinationBucket(targetBucket)
          .destinationKey(objectKey)
          .build();
       String temp = "";
                                             
       try {
           CopyObjectResponse copyRes = s3.copyObject(copyReq);
           System.out.println("Successfully copied " + objectKey +" from bucket " + sourceBucket +" into bucket "+targetBucket);
       }
       
       catch (S3Exception e) {
           System.err.println(e.awsErrorDetails().errorMessage());
           System.exit(1);
       }
 }
```

------

## 使用 AWS CLI
<a name="directory-copy-object-cli"></a>

下列`copy-object`範例命令顯示如何使用 AWS CLI 將物件從一個儲存貯體複製到另一個儲存貯體。您可以在儲存貯體類型之間複製物件。若要執行此命令，請以您自己的資訊取代使用者輸入預留位置。

```
aws s3api copy-object --copy-source SOURCE_BUCKET/SOURCE_KEY_NAME --key TARGET_KEY_NAME --bucket TARGET_BUCKET_NAME
```

如需詳細資訊，請參閱《AWS CLI 命令參考》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/copy-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/copy-object.html)。

# 從目錄儲存貯體中刪除物件
<a name="directory-bucket-delete-object"></a>

您可以使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI) 或 AWS SDKs 從 Amazon S3 目錄儲存貯體刪除物件。如需詳細資訊，請參閱[使用目錄儲存貯體](directory-buckets-overview.md)及[S3 Express One Zone](directory-bucket-high-performance.md#s3-express-one-zone)。

**警告**  
刪除物件無法復原。
此動作會刪除所有指定的物件。刪除資料夾時，請等待刪除動作完成，然後再將新物件加入至資料夾。否則，系統也可能會刪除新物件。

**注意**  
當您以程式設計方式從目錄儲存貯體中刪除多個物件時，請注意下列事項：  
`DeleteObjects` 請求中的物件索引鍵必須至少包含一個非空格字元。不支援只包含空格字元的字串。
`DeleteObjects` 請求中的物件金鑰不得包含 Unicode 控制字元，但新行字元 (`\n`)、定位字元 (`\t`) 和歸位字元 (`\r`) 則除外。

## 使用 S3 主控台
<a name="delete-object-directory-bucket-console"></a>

**刪除物件**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**目錄儲存貯體**。

1. 選擇包含您要刪除之物件的目錄儲存貯體。

1. 選擇 **Objects** (物件) 索引標籤。在**物件**清單中，選取您要刪除之一或多個物件左側的核取方塊。

1. 選擇 **刪除**。

   

1. 在**刪除物件**頁面上的文字方塊中輸入 **permanently delete**。

1. 選擇 **Delete objects** (刪除物件)。

## 使用 AWS SDKs
<a name="delete-object-directory-bucket-sdks"></a>

------
#### [ SDK for Java 2.x ]

**Example**  
下列範例使用 AWS SDK for Java 2.x刪除目錄儲存貯體中的物件。  

```
static void deleteObject(S3Client s3Client, String bucketName, String objectKey) {


        
        try {
            
            DeleteObjectRequest del = DeleteObjectRequest.builder()
                    .bucket(bucketName)
                    .key(objectKey)
                    .build();

            s3Client.deleteObject(del);
            
            System.out.println("Object " + objectKey + " has been deleted");
            
            
        } catch (S3Exception e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        
    }
```

------
#### [ SDK for Python ]

**Example**  
下列範例使用 適用於 Python (Boto3) 的 AWS SDK刪除目錄儲存貯體中的物件。  

```
import logging
import boto3
from botocore.exceptions import ClientError

def delete_objects(s3_client, bucket_name, objects):
    '''
    Delete a list of objects in a directory bucket

    :param s3_client: boto3 S3 client
    :param bucket_name: Bucket that contains objects to be deleted; for example, 'doc-example-bucket--usw2-az1--x-s3'
    :param objects: List of dictionaries that specify the key names to delete
    :return: Response output, else False
    '''

    try:
        response = s3_client.delete_objects(
            Bucket = bucket_name,
            Delete = {
                'Objects': objects
            } 
        )
        return response
    except ClientError as e:
        logging.error(e)
        return False
    

if __name__ == '__main__':
    region = 'us-west-2'
    bucket_name = 'BUCKET_NAME'
    objects = [
        {
            'Key': '0.txt'
        },
        {
            'Key': '1.txt'
        },
        {
            'Key': '2.txt'
        },
        {
            'Key': '3.txt'
        },
        {
            'Key': '4.txt'
        }
    ]
    
    s3_client = boto3.client('s3', region_name = region)
    results = delete_objects(s3_client, bucket_name, objects)
    if results is not None:
        if 'Deleted' in results:
            print (f'Deleted {len(results["Deleted"])} objects from {bucket_name}')
        if 'Errors' in results:
            print (f'Failed to delete {len(results["Errors"])} objects from {bucket_name}')
```

------

## 使用 AWS CLI
<a name="directory-download-object-cli"></a>

下列 `delete-object` 範例命令示範如何使用 AWS CLI 從儲存貯體中刪除物件。若要執行此命令，請以您自己的資訊取代 `user input placeholders`。

```
aws s3api delete-object --bucket bucket-base-name--zone-id--x-s3 --key KEY_NAME 
```

如需詳細資訊，請參閱《AWS CLI 命令參考》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-object.html)。

下列 `delete-objects` 範例命令示範如何使用 AWS CLI 從目錄儲存貯體刪除物件。若要執行此命令，請以您自己的資訊取代 `user input placeholders`。

`delete.json` 檔案如下所示：

```
{
    "Objects": [
        {
            "Key": "0.txt"
        },
        {
            "Key": "1.txt"
        },
        {
            "Key": "2.txt"
        },
        {
            "Key": "3.txt"
        }
    ]
}
```

`delete-objects` 範例命令如下所示：

```
aws s3api delete-objects --bucket bucket-base-name--zone-id--x-s3 --delete file://delete.json 
```

如需詳細資訊，請參閱《AWS CLI 命令參考》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-objects.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-objects.html)。

# 從目錄儲存貯體下載物件
<a name="directory-buckets-objects-GetExamples"></a>

 下列程式碼範例示範如何使用 `GetObject` API 操作，從 Amazon S3 目錄儲存貯體中的物件讀取 (下載) 資料。

## 使用 AWS SDKs
<a name="directory-bucket-copy-sdks"></a>

------
#### [ SDK for Java 2.x ]

**Example**  
下列程式碼範例示範如何使用 AWS SDK for Java 2.x，從目錄儲存貯體中的物件讀取資料。  

```
public static void getObject(S3Client s3Client, String bucketName, String objectKey) {
     try {
         GetObjectRequest objectRequest = GetObjectRequest
            .builder()
            .key(objectKey)
            .bucket(bucketName)
            .build();
            
         ResponseBytes GetObjectResponse objectBytes = s3Client.getObjectAsBytes(objectRequest);
         byte[] data = objectBytes.asByteArray();
         
         //Print object contents to console
         String s = new String(data, StandardCharsets.UTF_8);
         System.out.println(s);
    }
    
    catch (S3Exception e) {
        System.err.println(e.awsErrorDetails().errorMessage());
        System.exit(1);
    }
}
```

------
#### [ SDK for Python ]

**Example**  
下列程式碼範例示範如何使用 適用於 Python (Boto3) 的 AWS SDK，從目錄儲存貯體中的物件讀取資料。  

```
import boto3
from botocore.exceptions import ClientError
from botocore.response import StreamingBody

def get_object(s3_client: boto3.client, bucket_name: str, key_name: str) -> StreamingBody:
    """
    Gets the object.
    :param s3_client:
    :param bucket_name: The bucket that contains the object. 
    :param key_name: The key of the object to be downloaded.
    :return: The object data in bytes.
    """
    try:
        response = s3_client.get_object(Bucket=bucket_name, Key=key_name)
        body = response['Body'].read()
        print(f"Got object '{key_name}' from bucket '{bucket_name}'.")
    except ClientError:
        print(f"Couldn't get object '{key_name}' from bucket '{bucket_name}'.")
        raise
    else:
        return body
        
def main():
    s3_client = boto3.client('s3')
    resp = get_object(s3_client, 'doc-example-bucket--use1-az4--x-s3', 'sample.txt')
    print(resp)
    
if __name__ == "__main__":
     main()
```

------

## 使用 AWS CLI
<a name="directory-download-object-cli"></a>

以下 `get-object` 範例命令顯示如何使用 AWS CLI 從 Amazon S3 下載物件。此命令會從目錄儲存貯體 `bucket-base-name--zone-id--x-s3` 取得物件 `KEY_NAME`。物件將下載到名為 `LOCAL_FILE_NAME` 的檔案中。若要執行此命令，請以您自己的資訊取代 `user input placeholders`。

```
aws s3api get-object --bucket bucket-base-name--zone-id--x-s3 --key KEY_NAME LOCAL_FILE_NAME
```

如需詳細資訊，請參閱《AWS CLI 命令參考》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object.html)。

# 產生預先簽章的 URL 以共用物件目錄儲存貯體
<a name="directory-buckets-objects-generate-presigned-url-Examples"></a>

 下列程式碼範例示範如何產生預先簽章的 URL，以從 Amazon S3 目錄儲存貯體共用物件。

## 使用 AWS CLI
<a name="directory-download-object-cli"></a>

下列範例命令示範如何使用 AWS CLI ，針對 Amazon S3 的物件產生預先簽章的 URL。此命令會針對來自目錄儲存貯體 `bucket-base-name--zone-id--x-s3` 的物件 `KEY_NAME`，產生預先簽章的 URL。若要執行此命令，請以您自己的資訊取代 `user input placeholders`。

```
aws s3 presign s3://bucket-base-name--zone-id--x-s3/KEY_NAME --expires-in 7200
```

如需詳細資訊，請參閱《AWS CLI 命令參考》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/presign.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/presign.html)。

# 從目錄儲存貯體擷取物件中繼資料
<a name="directory-buckets-objects-HeadObjectExamples"></a>

下列 AWS SDK 和 AWS CLI 範例示範如何使用 `HeadObject`和 `GetObjectAttributes` API 操作，從 Amazon S3 目錄儲存貯體中的物件擷取中繼資料，而不傳回物件本身。

## 使用 AWS SDKs
<a name="directory-bucket-copy-sdks"></a>

------
#### [ SDK for Java 2.x ]

**Example**  

```
public static void headObject(S3Client s3Client, String bucketName, String objectKey) {
     try {
         HeadObjectRequest headObjectRequest = HeadObjectRequest
                 .builder()
                 .bucket(bucketName)
                 .key(objectKey)
                 .build();
         HeadObjectResponse response = s3Client.headObject(headObjectRequest);
         System.out.format("Amazon S3 object: \"%s\" found in bucket: \"%s\" with ETag: \"%s\"", objectKey, bucketName, response.eTag());
     }
     catch (S3Exception e) {
         System.err.println(e.awsErrorDetails().errorMessage());
```

------

## 使用 AWS CLI
<a name="directory-head-object-cli"></a>

下列`head-object`範例命令顯示如何使用 從 物件 AWS CLI 擷取中繼資料。若要執行此命令，請以您自己的資訊取代 `user input placeholders`。

```
aws s3api head-object --bucket bucket-base-name--zone-id--x-s3 --key KEY_NAME
```

如需詳細資訊，請參閱《AWS CLI 命令參考》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/head-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/head-object.html)。

下列`get-object-attributes`範例命令顯示如何使用 從 物件 AWS CLI 擷取中繼資料。若要執行此命令，請以您自己的資訊取代 `user input placeholders`。

```
aws s3api get-object-attributes --bucket bucket-base-name--zone-id--x-s3 --key KEY_NAME --object-attributes "StorageClass" "ETag" "ObjectSize"
```

如需詳細資訊，請參閱《AWS CLI 命令參考》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object-attributes.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object-attributes.html)。

# 列示目錄儲存貯體中的物件
<a name="directory-buckets-objects-listobjectsExamples"></a>

 下列程式碼範例示範如何使用 `ListObjectsV2` API 操作，列出 Amazon S3 目錄儲存貯體中的物件的範例。

## 使用 AWS CLI
<a name="directory-download-object-cli"></a>

下列 `list-objects-v2` 範例命令示範如何使用 AWS CLI 列出來自 Amazon S3 的物件。此命令會列出目錄儲存貯體 `bucket-base-name--zone-id--x-s3` 的物件。若要執行此命令，請以您自己的資訊取代 `user input placeholders`。

```
aws s3api list-objects-v2 --bucket bucket-base-name--zone-id--x-s3
```

如需詳細資訊，請參閱《AWS CLI 命令參考》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/list-objects-v2.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/list-objects-v2.html)。

# 目錄儲存貯體的安全性
<a name="s3-express-security"></a>

的雲端安全性 AWS 是最高優先順序。身為 AWS 客戶，您可以受益於資料中心和網路架構，這些架構是為了滿足最安全敏感組織的需求而建置。安全性是 AWS 與您之間的共同責任。‬共同責任模型‭‬ 將此描述為雲端‬的‭‬安全和雲端‬內‬的安全：
+ **雲端的安全性** – AWS 負責保護在 AWS 服務 中執行的基礎設施 AWS 雲端。 AWS 也為您提供可安全使用的服務。在 [https://aws.amazon.com/compliance/programs/](https://aws.amazon.com/compliance/programs/) 中，第三方稽核員會定期測試並驗證我們的安全成效。

  若要了解合規計劃，請參閱[https://aws.amazon.com/compliance/services-in-scope/](https://aws.amazon.com/compliance/services-in-scope/)。
+ **雲端的安全性** – 您的責任取決於您使用 AWS 服務 的 。您也必須對其他因素負責，包括資料的機密性、您公司的要求和適用法律和法規。

本文件將協助您了解如何在使用目錄儲存貯體時套用共同責任模式。下列主題說明如何設定目錄儲存貯體以達到您的安全及合規目標。您也將了解如何使用其他 AWS 服務 來協助您監控和保護目錄儲存貯體中的物件。

# 資料保護和加密
<a name="s3-express-data-protection"></a>

 如需如何為目錄儲存貯體設定加密的詳細資訊，請參閱下列主題。

**Topics**
+ [伺服器端加密](#s3-express-ecnryption)
+ [設定和監控目錄儲存貯體的預設加密](s3-express-bucket-encryption.md)
+ [在目錄儲存貯體中使用伺服器端加密與 AWS KMS 金鑰 (SSE-KMS)](s3-express-UsingKMSEncryption.md)
+ [傳輸中加密](#s3-express-ecnryption-transit)
+ [資料刪除](#s3-express-data-deletion)

## 伺服器端加密
<a name="s3-express-ecnryption"></a>

根據預設，所有目錄儲存貯體都設定了加密，所有上傳至目錄儲存貯體的新物件都會在靜態時自動加密。使用 Amazon S3 受管金鑰的伺服器端加密 (SSE-S3) 是所有儲存貯體的預設加密組態。如果您想要指定不同的加密類型，您可以使用伺服器端加密搭配 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS)，方法是設定儲存貯體的預設加密組態。如需目錄儲存貯體中 SSE-KMS 的詳細資訊，請參閱[在目錄儲存貯體中使用伺服器端加密與 AWS KMS 金鑰 (SSE-KMS)](s3-express-UsingKMSEncryption.md)。

建議儲存貯體的預設加密使用所需的加密組態，而且您不會覆寫 `CreateSession` 請求或 `PUT` 物件請求中的儲存貯體預設加密。然後，新的物件會以所需的加密設定自動加密。如需在目錄儲存貯體中覆寫加密行為的詳細資訊，請參閱[使用 指定伺服器端加密 AWS KMS 以進行新物件上傳](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html)。

目錄儲存貯體中的 SSE-KMS 與一般用途儲存貯體中的 SSE-KMS 在下列層面不同。
+ 您的 SSE-KMS 組態在儲存貯體的生命週期內，每個目錄儲存貯體只能支援 1 個[客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。不支援 [https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) (`aws/s3`)。此外，為 SSE-KMS 指定客戶自管金鑰之後，即無法覆寫儲存貯體 SSE-KMS 組態的客戶自管金鑰。

  您可以透過下列方式識別為儲存貯體的 SSE-KMS 組態指定的客戶自管金鑰：
  + 您可以提出 `HeadObject` API 操作請求，在回應中尋找 `x-amz-server-side-encryption-aws-kms-key-id` 的值。

  若要為資料使用新的客戶自管金鑰，建議您使用新的客戶自管金鑰，將現有的物件複製到新的目錄儲存貯體。
+ 對於 [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 和 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 以外的[區域端點 (物件層級) API 操作](s3-express-differences.md#s3-express-differences-api-operations)，您會透過 [CreateSession](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html) 驗證和授權請求，以取得低延遲。建議儲存貯體的預設加密使用所需的加密組態，而且您不會覆寫 `CreateSession` 請求或 `PUT` 物件請求中的儲存貯體預設加密。然後，新的物件會以所需的加密設定自動加密。若要使用 SSE-KMS 加密目錄儲存貯體中的新物件，您必須使用 KMS 金鑰 (特別是[客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)) 將 SSE-KMS 指定為目錄儲存貯體的預設加密組態。然後，在為區域端點 API 操作建立工作階段時，系統會在工作階段期間使用 SSE-KMS 和 S3 儲存貯體金鑰自動加密和解密新物件。如需在目錄儲存貯體中覆寫加密行為的詳細資訊，請參閱[使用 指定伺服器端加密 AWS KMS 以進行新物件上傳](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html)。

  在區域端點 API 呼叫中 ([CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 和 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 除外)，您無法覆寫 `CreateSession` 請求的加密設定值 (`x-amz-server-side-encryption`、`x-amz-server-side-encryption-aws-kms-key-id`、`x-amz-server-side-encryption-context` 和 `x-amz-server-side-encryption-bucket-key-enabled`)。您不需要在區域端點 API 呼叫中明確指定這些加密設定值，Amazon S3 將使用 `CreateSession` 請求中的加密設定值來保護目錄儲存貯體中的新物件。
**注意**  
當您使用 AWS CLI 或 AWS SDKs 時，對於 `CreateSession`，工作階段字符會自動重新整理，以避免工作階段過期時服務中斷。 AWS CLI 或 AWS SDKs 會對`CreateSession`請求使用儲存貯體的預設加密組態。不支援覆寫 `CreateSession` 請求中的加密設定值。此外，在區域端點 API 呼叫中 ([CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 和 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 除外)，不支援覆寫 `CreateSession` 請求中的加密設定值。
+ 對於 [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)，若要使用 SSE-KMS 加密目錄儲存貯體中的新物件複本，您必須使用 KMS 金鑰 (特別是[客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)) 將 SSE-KMS 指定為目錄儲存貯體的預設加密組態。然後，當您使用 SSE-KMS 為新物件複本指定伺服器端加密設定時，您必須確保加密金鑰與您為目錄儲存貯體的預設加密組態指定的客戶自管金鑰相同。對於 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)，若要使用 SSE-KMS 加密目錄儲存貯體中的新物件組件複本，您必須使用 KMS 金鑰 (特別是[客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)) 將 SSE-KMS 指定為目錄儲存貯體的預設加密組態。您無法在 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 請求標頭中，使用 SSE-KMS 為新的物件組件複本指定伺服器端加密設定。此外，您在 [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html) 請求中提供的加密設定必須符合目的地儲存貯體的預設加密組態。
+ 目錄儲存貯體中的 `GET` 和 `PUT` 操作一律會啟用 S3 儲存貯體金鑰，且無法停用。當您透過 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)、[Batch Operations 中的 Copy 操作](directory-buckets-objects-Batch-Ops.md)或 [import 作業](create-import-job.md)，將 SSE-KMS 加密物件從一般用途儲存貯體複製到目錄儲存貯體、從目錄儲存貯體複製到一般用途儲存貯體或在目錄儲存貯體之間複製時，不支援 S3 儲存貯體金鑰。在此情況下，Amazon S3 AWS KMS 會在每次對 KMS 加密物件提出複製請求時呼叫 。
+ 當您在目錄儲存貯體中指定用於加密的 [AWS KMS 客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)時，請僅使用金鑰 ID 或金鑰 ARN。不支援 KMS 金鑰的金鑰別名格式。

目錄儲存貯體不支援使用 AWS Key Management Service (AWS KMS) 金鑰 (DSSE-KMS) 的雙層伺服器端加密，或使用客戶提供加密金鑰 (SSE-C) 的伺服器端加密。

# 設定和監控目錄儲存貯體的預設加密
<a name="s3-express-bucket-encryption"></a>

根據預設，Amazon S3 儲存貯體皆已啟動儲存貯體加密，且使用伺服器端加密與 Amazon S3 受管金鑰 (SSE-S3) 自動加密新物件。此加密免費適用於 Amazon S3 儲存貯體中的所有新物件。

如果您需要對加密金鑰進行更多控制，例如管理金鑰輪換和存取政策授予，您可以選擇使用伺服器端加密搭配 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS)。

**注意**  
建議儲存貯體的預設加密使用所需的加密組態，而且您不會覆寫 `CreateSession` 請求或 `PUT` 物件請求中的儲存貯體預設加密。然後，新的物件會以所需的加密設定自動加密。如需在目錄儲存貯體中覆寫加密行為的詳細資訊，請參閱[使用 指定伺服器端加密 AWS KMS 以進行新物件上傳](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html)。
若要使用 SSE-KMS 加密目錄儲存貯體中的新物件，您必須使用 KMS 金鑰 (特別是客戶自管金鑰) 將 SSE-KMS 指定為目錄儲存貯體的預設加密組態。然後，在為區域端點 API 操作建立工作階段時，系統會在工作階段期間使用 SSE-KMS 和 S3 儲存貯體金鑰自動加密和解密新物件。
當您將預設儲存貯體加密設定為 SSE-KMS 時，目錄儲存貯體中的 `GET` 和 `PUT` 操作一律會啟用 S3 儲存貯體金鑰，且無法停用。當您透過 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)、[Batch Operations 中的 Copy 操作](directory-buckets-objects-Batch-Ops.md)或 [import 作業](create-import-job.md)，將 SSE-KMS 加密物件從一般用途儲存貯體複製到目錄儲存貯體、從目錄儲存貯體複製到一般用途儲存貯體或在目錄儲存貯體之間複製時，不支援 S3 儲存貯體金鑰。在此情況下，Amazon S3 AWS KMS 會在每次對 KMS 加密物件提出複製請求時呼叫 。如需 S3 儲存貯體金鑰如何降低 AWS KMS 請求成本的詳細資訊，請參閱 [使用 Amazon S3 儲存貯體金鑰降低 SSE-KMS 的成本](bucket-key.md)。
當您在目錄儲存貯體中指定用於加密的 [AWS KMS 客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)時，請僅使用金鑰 ID 或金鑰 ARN。不支援 KMS 金鑰的金鑰別名格式。
目錄儲存貯體中的預設加密不支援使用 AWS KMS 金鑰的雙層伺服器端加密 (DSSE-KMS) 和使用客戶提供金鑰的伺服器端加密 (SSE-C)。

如需設定預設加密的詳細資訊，請參閱[設定預設加密](default-bucket-encryption.md)。

如需預設加密所需許可的詳細資訊，請參閱 Amazon Simple Storage Service API 參考**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)。

您可以使用 Amazon S3 主控台、 AWS SDKs、Amazon S3 REST API 和 AWS Command Line Interface () 來S3Amazon S3 儲存貯體的 Amazon S3 預設加密AWS CLI。

## 使用 S3 主控台
<a name="s3-express-bucket-encryption-how-to-set-up-console"></a>

**設定 Amazon S3 儲存貯體的預設加密**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇 **Buckets** (儲存貯體)。

1. 在 **Buckets** (儲存貯體) 清單中，選擇您所需的儲存貯體名稱。

1. 選擇**屬性**索引標籤。

1. 在**伺服器端加密設定**下，目錄儲存貯體會使用 **Amazon S3 受管金鑰的伺服器端加密 (SSE-S3)**。

1. 選擇**儲存變更**。

## 使用 AWS CLI
<a name="s3-express-default-bucket-encryption-cli"></a>

這些範例說明如何使用 SSE-S3 或具有 S3 儲存貯體金鑰的 SSE-KMS 來設定預設加密。

如需預設加密的詳細資訊，請參閱[對 Amazon S3 儲存貯體設定預設伺服器端加密行為](bucket-encryption.md)。如需使用 AWS CLI 設定預設加密的詳細資訊，請參閱 [put-bucket-encryption](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-encryption.html)。

**Example – 使用 SSE-S3 預設加密**  
此範例會使用 Amazon S3 受管金鑰設定預設儲存貯體加密。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。  

```
aws s3api put-bucket-encryption --bucket bucket-base-name--zone-id--x-s3 --server-side-encryption-configuration '{
    "Rules": [
        {
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
            }
        }
    ]
}'
```

**Example – 使用 S3 儲存貯體金鑰以 SSE-KMS 預設加密**  
此範例會使用 S3 儲存貯體金鑰，以 SSE-KMS 設定預設儲存貯體加密。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。  

```
aws s3api put-bucket-encryption --bucket bucket-base-name--zone-id--x-s3 --server-side-encryption-configuration '{
    "Rules": [
            {
                "ApplyServerSideEncryptionByDefault": {
                    "SSEAlgorithm": "aws:kms",
                    "KMSMasterKeyID": "KMS-Key-ARN"
                },
                "BucketKeyEnabled": true
            }
        ]
    }'
```

## 使用 REST API
<a name="s3-express-bucket-encryption-how-to-set-up-api"></a>

使用 REST API `PutBucketEncryption` 操作，將預設加密設定為要使用的伺服器端加密類型 (SSE-S3 或 SSE-KMS)。

如需詳細資訊，請參閱 Amazon Simple Storage Service API 參考**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html)。

## 使用 AWS SDKs
<a name="s3-express-kms-put-bucket-encryption-using-sdks"></a>

使用 AWS SDKs時，您可以請求 Amazon S3 使用 AWS KMS keys 進行伺服器端加密。下列適用於 Java 和 .NET AWS SDKs 範例使用 SSE-KMS 和 S3 儲存貯體金鑰設定目錄儲存貯體的預設加密組態。如需其他 SDKs的資訊，請參閱 AWS 開發人員中心上的[範例程式碼和程式庫](https://aws.amazon.com/code)。

**重要**  
當您在 Amazon S3 中使用 AWS KMS key 進行伺服器端加密時，您必須選擇對稱加密 KMS 金鑰。Amazon S3 只支援對稱加密 KMS 金鑰。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[對稱加密 KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks)。

------
#### [ Java ]

透過 AWS SDK for Java 2.x，您可以使用 `applyServerSideEncryptionByDefault`方法來指定目錄儲存貯體的預設加密組態，以使用 SSE-KMS 進行資料加密， AWS KMS key 以請求 Amazon S3 使用 。您可以建立對稱加密 KMS 金鑰，並在請求中指定該金鑰。

```
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.PutBucketEncryptionRequest;
import software.amazon.awssdk.services.s3.model.ServerSideEncryption;
import software.amazon.awssdk.services.s3.model.ServerSideEncryptionByDefault;
import software.amazon.awssdk.services.s3.model.ServerSideEncryptionConfiguration;
import software.amazon.awssdk.services.s3.model.ServerSideEncryptionRule;

public class Main {
    public static void main(String[] args) {
        S3Client s3 = S3Client.create();
        String bucketName = "bucket-base-name--zoneid--x-s3";
        String kmsKeyId = "your-kms-customer-managed-key-id";

        // AWS managed KMS keys aren't supported. Only customer-managed keys are supported.
        ServerSideEncryptionByDefault serverSideEncryptionByDefault = ServerSideEncryptionByDefault.builder()
                .sseAlgorithm(ServerSideEncryption.AWS_KMS)
                .kmsMasterKeyID(kmsKeyId)
                .build();

        // The bucketKeyEnabled field is enforced to be true.
        ServerSideEncryptionRule rule = ServerSideEncryptionRule.builder()
                .bucketKeyEnabled(true)
                .applyServerSideEncryptionByDefault(serverSideEncryptionByDefault)
                .build();
  
        ServerSideEncryptionConfiguration serverSideEncryptionConfiguration = ServerSideEncryptionConfiguration.builder()
                .rules(rule)
                .build();

        PutBucketEncryptionRequest putRequest = PutBucketEncryptionRequest.builder()
                .bucket(bucketName)
                .serverSideEncryptionConfiguration(serverSideEncryptionConfiguration)
                .build();

        s3.putBucketEncryption(putRequest);
        
    }
}
```

如需建立客戶受管金鑰的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[程式設計 AWS KMS API](https://docs.aws.amazon.com/kms/latest/developerguide/programming-top.html)。

如需上傳物件的可行程式碼範例，請參閱下列主題。若要使用這些範例，您必須更新這些程式碼範例並提供加密資訊，如上述程式碼片段所示。
+ 如需以單一操作上傳物件，請參閱 [將物件上傳至目錄儲存貯體](directory-buckets-objects-upload.md)。
+ 如需分段上傳 API 操作，請參閱[搭配目錄儲存貯體使用分段上傳](s3-express-using-multipart-upload.md)。

------
#### [ .NET ]

透過 適用於 .NET 的 AWS SDK，您可以使用 `ServerSideEncryptionByDefault` 屬性來指定目錄儲存貯體的預設加密組態，以使用 SSE-KMS 進行資料加密， AWS KMS key 以請求 Amazon S3 使用 。您可以建立對稱加密客戶自管金鑰，並在請求中指定該金鑰。

```
    // Set the bucket server side encryption to use AWSKMS with a customer-managed key id.
    // bucketName: Name of the directory bucket. "bucket-base-name--zonsid--x-s3"
    // kmsKeyId: The Id of the customer managed KMS Key. "your-kms-customer-managed-key-id"
    // Returns True if successful.
    public static async Task<bool> SetBucketServerSideEncryption(string bucketName, string kmsKeyId)
    {
        var serverSideEncryptionByDefault = new ServerSideEncryptionConfiguration
        {
            ServerSideEncryptionRules = new List<ServerSideEncryptionRule>
            {
                new ServerSideEncryptionRule
                {
                    ServerSideEncryptionByDefault = new ServerSideEncryptionByDefault
                    {
                        ServerSideEncryptionAlgorithm = ServerSideEncryptionMethod.AWSKMS,
                        ServerSideEncryptionKeyManagementServiceKeyId = kmsKeyId
                    }
                }
            }
        };
        try
        {
            var encryptionResponse =await _s3Client.PutBucketEncryptionAsync(new PutBucketEncryptionRequest
            {
                BucketName = bucketName,
                ServerSideEncryptionConfiguration = serverSideEncryptionByDefault,
            });
            
            return encryptionResponse.HttpStatusCode == HttpStatusCode.OK;
        }
        catch (AmazonS3Exception ex)
        {
            Console.WriteLine(ex.ErrorCode == "AccessDenied"
                ? $"This account does not have permission to set encryption on {bucketName}, please try again."
                : $"Unable to set bucket encryption for bucket {bucketName}, {ex.Message}");
        }
        return false;
    }
```

如需建立客戶受管金鑰的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[程式設計 AWS KMS API](https://docs.aws.amazon.com/kms/latest/developerguide/programming-top.html)。

如需上傳物件的可行程式碼範例，請參閱下列主題。若要使用這些範例，您必須更新這些程式碼範例並提供加密資訊，如上述程式碼片段所示。
+ 如需以單一操作上傳物件，請參閱 [將物件上傳至目錄儲存貯體](directory-buckets-objects-upload.md)。
+ 如需分段上傳 API 操作，請參閱[搭配目錄儲存貯體使用分段上傳](s3-express-using-multipart-upload.md)。

------

## 使用 監控目錄儲存貯體的預設加密 AWS CloudTrail
<a name="s3-express-bucket-encryption-tracking"></a>

您可以使用 AWS CloudTrail 事件追蹤 Amazon S3 目錄儲存貯體的預設加密組態請求。CloudTrail 日誌使用下列 API 事件名稱：
+ `PutBucketEncryption`
+ `GetBucketEncryption`
+ `DeleteBucketEncryption`

**注意**  
目錄儲存貯體不支援 EventBridge。
目錄儲存貯體不支援使用 AWS Key Management Service (AWS KMS) 金鑰的雙層伺服器端加密 (DSSE-KMS) 或使用客戶提供加密金鑰 (SSE-C) 的伺服器端加密。

如需使用 AWS CloudTrail監控預設加密的詳細資訊，請參閱[使用 AWS CloudTrail 和 Amazon EventBridge 監控預設加密](bucket-encryption-tracking.md)。

# 在目錄儲存貯體中使用伺服器端加密與 AWS KMS 金鑰 (SSE-KMS)
<a name="s3-express-UsingKMSEncryption"></a>

 中的安全控制 AWS KMS 可協助您符合加密相關的合規要求。您可以選擇將目錄儲存貯體設定為搭配 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 使用伺服器端加密，並使用這些 KMS 金鑰來保護 Amazon S3 目錄儲存貯體中的資料。如需 SSE-KMS 的詳細資訊，請參閱「[搭配 AWS KMS 金鑰使用伺服器端加密 (SSE-KMS)](UsingKMSEncryption.md)」。

**許可**  
若要 AWS KMS key 在 Amazon S3 之間上傳或下載使用 加密的物件，您需要 金鑰的 `kms:GenerateDataKey`和 `kms:Decrypt`許可。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[允許金鑰使用者在密碼編譯操作中使用 KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-users-crypto)。如需分段上傳所需的 AWS KMS 許可資訊，請參閱 [分段上傳 API 與許可](mpuoverview.md#mpuAndPermissions)。

如需用於 SSE-KMS 的 KMS 金鑰詳細資訊，請參閱[使用 AWS KMS (SSE-KMS) 指定伺服器端加密](specifying-kms-encryption.md)。

**Topics**
+ [AWS KMS keys](#s3-express-aws-managed-customer-managed-keys)
+ [對跨帳戶操作使用 SSE-KMS](#s3-express-bucket-encryption-update-bucket-policy)
+ [Amazon S3 儲存貯體金鑰](#s3-express-sse-kms-bucket-keys)
+ [需要 SSE-KMS](#s3-express-require-sse-kms)
+ [加密內容](#s3-express-encryption-context)
+ [傳送 AWS KMS 加密物件的請求](#s3-express-aws-signature-version-4-sse-kms)
+ [稽核目錄儲存貯體中的 SSE-KMS 加密](#s3-express-bucket-encryption-sse-auditing)
+ [使用 AWS KMS (SSE-KMS) 為目錄儲存貯體中的新物件上傳指定伺服器端加密](s3-express-specifying-kms-encryption.md)

## AWS KMS keys
<a name="s3-express-aws-managed-customer-managed-keys"></a>

您的 SSE-KMS 組態在儲存貯體的生命週期內，每個目錄儲存貯體只能支援 1 個[客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。不支援 [https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) (`aws/s3`)。此外，為 SSE-KMS 指定客戶自管金鑰之後，即無法覆寫儲存貯體 SSE-KMS 組態的客戶自管金鑰。

您可以透過下列方式識別為儲存貯體的 SSE-KMS 組態指定的客戶自管金鑰：
+ 您可以提出 `HeadObject` API 操作請求，在回應中尋找 `x-amz-server-side-encryption-aws-kms-key-id` 的值。

若要為資料使用新的客戶自管金鑰，建議您使用新的客戶自管金鑰，將現有的物件複製到新的目錄儲存貯體。

當您在目錄儲存貯體中指定用於加密的 [AWS KMS 客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)時，請僅使用金鑰 ID 或金鑰 ARN。不支援 KMS 金鑰的金鑰別名格式。

如需用於 SSE-KMS 的 KMS 金鑰詳細資訊，請參閱[AWS KMS keys](UsingKMSEncryption.md#aws-managed-customer-managed-keys)。

## 對跨帳戶操作使用 SSE-KMS
<a name="s3-express-bucket-encryption-update-bucket-policy"></a>

對目錄儲存貯體中的跨帳戶操作使用加密時，請注意下列事項：
+ 如果您想要授予 S3 物件的跨帳戶存取權，請設定客戶自管金鑰政策，以允許從另一個帳戶進行存取。
+ 若要指定客戶自管金鑰，您必須使用完整 KMS 金鑰 ARN。

## Amazon S3 儲存貯體金鑰
<a name="s3-express-sse-kms-bucket-keys"></a>

目錄儲存貯體中的 `GET` 和 `PUT` 操作一律會啟用 S3 儲存貯體金鑰，且無法停用。當您透過 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)、[Batch Operations 中的 Copy 操作](directory-buckets-objects-Batch-Ops.md)或 [import 作業](create-import-job.md)，將 SSE-KMS 加密物件從一般用途儲存貯體複製到目錄儲存貯體、從目錄儲存貯體複製到一般用途儲存貯體或在目錄儲存貯體之間複製時，不支援 S3 儲存貯體金鑰。在此情況下，Amazon S3 AWS KMS 會在每次對 KMS 加密物件提出複製請求時呼叫 。

對於 [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 和 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 以外的[區域端點 (物件層級) API 操作](s3-express-differences.md#s3-express-differences-api-operations)，您會透過 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html) 驗證和授權請求，以取得低延遲。建議儲存貯體的預設加密使用所需的加密組態，而且您不會覆寫 `CreateSession` 請求或 `PUT` 物件請求中的儲存貯體預設加密。然後，新的物件會以所需的加密設定自動加密。若要使用 SSE-KMS 加密目錄儲存貯體中的新物件，您必須使用 KMS 金鑰 (特別是[客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)) 將 SSE-KMS 指定為目錄儲存貯體的預設加密組態。然後，在為區域端點 API 操作建立工作階段時，系統會在工作階段期間使用 SSE-KMS 和 S3 儲存貯體金鑰自動加密和解密新物件。如需在目錄儲存貯體中覆寫加密行為的詳細資訊，請參閱[使用 指定伺服器端加密 AWS KMS 以進行新物件上傳](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html)。

S3 儲存貯體金鑰在 Amazon S3 內使用一段時間，進一步減少 Amazon S3 向 提出請求 AWS KMS 以完成加密操作的需求。如需使用 S3 儲存貯體金鑰的詳細資訊，請參閱[Amazon S3 儲存貯體金鑰](UsingKMSEncryption.md#sse-kms-bucket-keys)和[使用 Amazon S3 儲存貯體金鑰降低 SSE-KMS 的成本](bucket-key.md)。

## 需要 SSE-KMS
<a name="s3-express-require-sse-kms"></a>

若要針對特定目錄儲存貯體中的所有物件要求 SSE-KMS，您可以使用儲存貯體政策。例如，當您使用 `CreateSession` API 操作來授予上傳新物件 (`PutObject`、`CopyObject` 和 `CreateMultipartUpload`) 的許可時，如果 `CreateSession` 請求不包含請求 SSE-KMS 的 `x-amz-server-side-encryption-aws-kms-key-id` 標頭，則下列儲存貯體政策會拒絕上傳物件許可 (`s3express:CreateSession`)。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Id":"UploadObjectPolicy",
   "Statement":[{
         "Sid":"DenyObjectsThatAreNotSSEKMS",
         "Effect":"Deny",
         "Principal":"*",
         "Action":"s3express:CreateSession",
         "Resource":"arn:aws:s3express:us-east-1:111122223333:bucket/amzn-s3-demo-bucket--usw2-az1--x-s3",
         "Condition":{
            "Null":{
               "s3express:x-amz-server-side-encryption-aws-kms-key-id":"true"
            }
         }
      }
   ]
}
```

------

若要要求 AWS KMS key 使用特定 來加密儲存貯體中的物件，您可以使用 `s3express:x-amz-server-side-encryption-aws-kms-key-id`條件金鑰。若要指定 KMS 金鑰，您必須使用 `arn:aws:kms:region:acct-id:key/key-id` 格式的金鑰 Amazon Resource Name (ARN)。 AWS Identity and Access Management 不會驗證 的字串`s3express:x-amz-server-side-encryption-aws-kms-key-id`是否存在。Amazon S3 用於物件加密的 AWS KMS 金鑰 ID 必須符合政策中的 AWS KMS 金鑰 ID，否則 Amazon S3 會拒絕請求。

如需如何將 SSE-KMS 用於新物件上傳的詳細資訊，請參閱[使用 AWS KMS (SSE-KMS) 為目錄儲存貯體中的新物件上傳指定伺服器端加密](s3-express-specifying-kms-encryption.md)。

如需目錄儲存貯體特定條件索引鍵的完整清單，請參閱[使用 IAM 授權地區端點 API 操作](s3-express-security-iam.md)。

## 加密內容
<a name="s3-express-encryption-context"></a>

對於目錄儲存貯體，「加密內容」**是一組金鑰/值對，其中包含資料的相關內容資訊。不支援額外的加密內容值。如需加密內容的詳細資訊，請參閱[加密內容](UsingKMSEncryption.md#encryption-context)。



根據預設，如果您在目錄儲存貯體上使用 SSE-KMS，Amazon S3 會使用儲存貯體 Amazon Resource Name (ARN) 作為加密內容對：

```
arn:aws:s3express:region:account-id:bucket/bucket-base-name--zone-id--x-s3
```

確保您的 IAM 政策或 AWS KMS 金鑰政策使用儲存貯體 ARN 做為加密內容。

您可以選擇在區域端點 API 請求中使用 `x-amz-server-side-encryption-context` 標頭 (例如 [CreateSession](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html#API_CreateSession_RequestSyntax))，來提供明確的加密內容對。此標頭的值是 UTF-8 編碼 JSON 的 Base64 編碼字串，其中包含加密內容作為金鑰/值對。對於目錄儲存貯體，加密內容必須符合預設加密內容，也就是儲存貯體的 Amazon Resource Name (ARN)。此外，由於加密內容未加密，因此請確保其中不包含敏感資訊。

您可以使用加密內容來識別和分類密碼編譯操作。您也可以透過檢視與哪個加密金鑰搭配使用的目錄儲存貯體 ARN AWS CloudTrail ，使用預設加密內容 ARN 值來追蹤 中的相關請求。

在 CloudTrail 日誌檔案的 `requestParameters` 欄位中，如果您在目錄儲存貯體上使用 SSE-KMS，加密內容值是儲存貯體的 ARN。

```
"encryptionContext": {
    "aws:s3express:arn": "arn:aws:s3:::arn:aws:s3express:region:account-id:bucket/bucket-base-name--zone-id--x-s3"
}
```

此外，對於目錄儲存貯體中使用 SSE-KMS 進行物件加密， AWS KMS CloudTrail 事件會記錄儲存貯體 ARN，而不是物件 ARN。

## 傳送 AWS KMS 加密物件的請求
<a name="s3-express-aws-signature-version-4-sse-kms"></a>

目錄儲存貯體只能透過 HTTPS (TLS) 存取。此外，目錄儲存貯體會使用 AWS Signature 第 4 版 (SigV4) 簽署請求。如需傳送 AWS KMS 加密物件請求的詳細資訊，請參閱 [傳送 AWS KMS 加密物件的請求](UsingKMSEncryption.md#aws-signature-version-4-sse-kms)。

如果您的物件使用 SSE-KMS，請不要傳送 `GET` 請求與 `HEAD` 請求的加密請求標頭。否則，您會收到 HTTP 400 Bad Request (HTTP 400 錯誤的請求) 錯誤。

## 稽核目錄儲存貯體中的 SSE-KMS 加密
<a name="s3-express-bucket-encryption-sse-auditing"></a>

若要稽核 SSE-KMS 加密資料的 AWS KMS 金鑰使用情況，您可以使用 AWS CloudTrail 日誌。您可以深入了解[密碼編譯操作](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations)，例如 [https://docs.aws.amazon.com/kms/latest/developerguide/ct-generatedatakey.html](https://docs.aws.amazon.com/kms/latest/developerguide/ct-generatedatakey.html) 和 [https://docs.aws.amazon.com/kms/latest/developerguide/ct-decrypt.html](https://docs.aws.amazon.com/kms/latest/developerguide/ct-decrypt.html)。CloudTrail 支援多種[屬性值](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_LookupEvents.html)來篩選搜尋，包括事件名稱、使用者名稱和事件來源。

**Topics**
+ [AWS KMS keys](#s3-express-aws-managed-customer-managed-keys)
+ [對跨帳戶操作使用 SSE-KMS](#s3-express-bucket-encryption-update-bucket-policy)
+ [Amazon S3 儲存貯體金鑰](#s3-express-sse-kms-bucket-keys)
+ [需要 SSE-KMS](#s3-express-require-sse-kms)
+ [加密內容](#s3-express-encryption-context)
+ [傳送 AWS KMS 加密物件的請求](#s3-express-aws-signature-version-4-sse-kms)
+ [稽核目錄儲存貯體中的 SSE-KMS 加密](#s3-express-bucket-encryption-sse-auditing)
+ [使用 AWS KMS (SSE-KMS) 為目錄儲存貯體中的新物件上傳指定伺服器端加密](s3-express-specifying-kms-encryption.md)

# 使用 AWS KMS (SSE-KMS) 為目錄儲存貯體中的新物件上傳指定伺服器端加密
<a name="s3-express-specifying-kms-encryption"></a>

對於目錄儲存貯體，若要使用伺服器端加密來加密資料，您可以使用伺服器端加密搭配 Amazon S3 受管金鑰 (SSE-S3) （預設） 或伺服器端加密搭配 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS)。建議儲存貯體的預設加密使用所需的加密組態，而且您不會覆寫 `CreateSession` 請求或 `PUT` 物件請求中的儲存貯體預設加密。然後，新的物件會以所需的加密設定自動加密。如需在目錄儲存貯體中覆寫加密行為的詳細資訊，請參閱[使用 指定伺服器端加密 AWS KMS 以進行新物件上傳](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html)。

根據預設，所有 Amazon S3 儲存貯體都設定了加密，所有上傳到 S3 儲存貯體的新物件都會在靜態時自動加密。伺服器端加密與 Amazon S3 受管金鑰 (SSE-S3) 是 Amazon S3 中每個儲存貯體的預設加密組態。如果您想要為目錄儲存貯體指定不同的加密類型，您可以使用 AWS Key Management Service (AWS KMS) 金鑰的伺服器端加密 (SSE-KMS)。若要使用 SSE-KMS 加密目錄儲存貯體中的新物件，您必須使用 KMS 金鑰 (特別是[客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)) 將 SSE-KMS 指定為目錄儲存貯體的預設加密組態。不支援 [AWS 受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) (`aws/s3`)。您的 SSE-KMS 組態在儲存貯體的生命週期內，每個目錄儲存貯體只能支援 1 個[客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。為 SSE-KMS 指定客戶自管金鑰之後，即無法覆寫儲存貯體 SSE-KMS 組態的客戶自管金鑰。然後，當您使用 SSE-KMS 為新物件指定伺服器端加密設定時，您必須確保加密金鑰與您為目錄儲存貯體的預設加密組態指定的客戶自管金鑰相同。若要為資料使用新的客戶自管金鑰，建議您使用新的客戶自管金鑰，將現有的物件複製到新的目錄儲存貯體。

上傳新物件或複製現有物件時，您都可以套用加密。如果您變更物件的加密，則會建立新物件來取代舊物件。

您可以使用 REST API 操作、 AWS SDKs AWS CLI。 AWS Command Line Interface 

**注意**  
 對於目錄儲存貯體，加密覆寫行為如下所示：  
當您搭配 REST API 使用 [CreateSession](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html) 來驗證和授權 [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 和 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 以外的區域端點 API 請求時，只有在您先前使用 SSE-KMS 指定儲存貯體的預設加密時，才能覆寫 SSE-S3 或 SSE-KMS 的加密設定。
當您搭配 AWS CLI 或 AWS SDKs 使用 [CreateSession](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html) 來驗證和授權 [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 和 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 以外的區域端點 API 請求時，您完全無法覆寫加密設定。
當您提出 [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 請求時，只有在先前使用 SSE-KMS 指定儲存貯體的預設加密時，才能覆寫 SSE-S3 或 SSE-KMS 的加密設定。當您提出 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 請求時，您無法覆寫加密設定。
您可以在 Amazon S3 AWS KMS keys 中使用多區域。但是，Amazon S3 目前將多區域金鑰視為單區域金鑰，並且不使用金鑰的多區域功能。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[使用多區域金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html)。
如果您想要使用其他帳戶擁有的 KMS 金鑰，您必須具有該金鑰的許可。如需詳細了解 KMS 金鑰跨帳戶權限，請參閱《AWS Key Management Service 開發人員指南》**中的[建立其他帳戶可使用的 KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console)。

## 使用 REST API
<a name="s3-express-KMSUsingRESTAPI"></a>

**注意**  
 在儲存貯體的生命週期內，每個目錄儲存貯體只能支援 1 個[客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。不支援 [https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) (`aws/s3`)。使用客戶自管金鑰將 SSE-KMS 指定為儲存貯體的預設加密組態之後，即無法變更儲存貯體 SSE-KMS 組態的客戶自管金鑰。

對於 [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 和 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 以外的[區域端點 (物件層級) API 操作](s3-express-differences.md#s3-express-differences-api-operations)，您會透過 [CreateSession](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html) 驗證和授權請求，以取得低延遲。建議儲存貯體的預設加密使用所需的加密組態，而且您不會覆寫 `CreateSession` 請求或 `PUT` 物件請求中的儲存貯體預設加密。然後，新的物件會以所需的加密設定自動加密。若要使用 SSE-KMS 加密目錄儲存貯體中的新物件，您必須使用 KMS 金鑰 (特別是[客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)) 將 SSE-KMS 指定為目錄儲存貯體的預設加密組態。然後，在為區域端點 API 操作建立工作階段時，系統會在工作階段期間使用 SSE-KMS 和 S3 儲存貯體金鑰自動加密和解密新物件。如需在目錄儲存貯體中覆寫加密行為的詳細資訊，請參閱[使用 指定伺服器端加密 AWS KMS 以進行新物件上傳](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html)。

使用 REST API 進行區域端點 API 呼叫時 ([CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 和 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 除外)，您無法覆寫 `CreateSession` 請求中的加密設定值 (`x-amz-server-side-encryption`、`x-amz-server-side-encryption-aws-kms-key-id`、`x-amz-server-side-encryption-context` 和 `x-amz-server-side-encryption-bucket-key-enabled`)。您不需要在區域端點 API 呼叫中明確指定這些加密設定值，Amazon S3 將使用 `CreateSession` 請求中的加密設定值來保護目錄儲存貯體中的新物件。

**注意**  
當您使用 AWS CLI 或 AWS SDKs 時，對於 `CreateSession`，工作階段字符會自動重新整理，以避免工作階段過期時服務中斷。 AWS CLI 或 AWS SDKs 會對`CreateSession`請求使用儲存貯體的預設加密組態。不支援覆寫 `CreateSession` 請求中的加密設定值。此外，在區域端點 API 呼叫中 ([CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 和 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 除外)，不支援覆寫 `CreateSession` 請求中的加密設定值。

對於 [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)，若要使用 SSE-KMS 加密目錄儲存貯體中的新物件複本，您必須使用 KMS 金鑰 (特別是[客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)) 將 SSE-KMS 指定為目錄儲存貯體的預設加密組態。然後，當您使用 SSE-KMS 為新物件複本指定伺服器端加密設定時，您必須確保加密金鑰與您為目錄儲存貯體的預設加密組態指定的客戶自管金鑰相同。對於 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)，若要使用 SSE-KMS 加密目錄儲存貯體中的新物件組件複本，您必須使用 KMS 金鑰 (特別是[客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)) 將 SSE-KMS 指定為目錄儲存貯體的預設加密組態。您無法在 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 請求標頭中，使用 SSE-KMS 為新的物件組件複本指定伺服器端加密設定。此外，您在 [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html) 請求中提供的加密設定必須符合目的地儲存貯體的預設加密組態。



**Topics**
+ [支援 SSE-KMS 的 Amazon S3 REST API 操作](#s3-express-sse-request-headers-kms)
+ [加密內容 (`x-amz-server-side-encryption-context`)](#s3-express-s3-kms-encryption-context)
+ [AWS KMS 金鑰 ID (`x-amz-server-side-encryption-aws-kms-key-id`)](#s3-express-s3-kms-key-id-api)
+ [S3 儲存貯體金鑰 (`x-amz-server-side-encryption-aws-bucket-key-enabled`)](#s3-express-bucket-key-api)

### 支援 SSE-KMS 的 Amazon S3 REST API 操作
<a name="s3-express-sse-request-headers-kms"></a>

目錄儲存貯體中的下列物件層級 REST API 操作接受 `x-amz-server-side-encryption`、`x-amz-server-side-encryption-aws-kms-key-id` 和 `x-amz-server-side-encryption-context` 請求標頭。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html) – 當您使用區域端點 (物件層級) API 操作 (CopyObject 和 UploadPartCopy 除外) 時，您可以指定這些請求標頭。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) – 使用 `PUT` API 操作上傳資料時，您可以指定這些請求標頭。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) – 複製物件時，您會同時有來源物件與目標物件。當您使用 `CopyObject` 操作傳遞 SSE-KMS 標頭時，這些標頭只會套用至目標物件。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html) – 使用分段上傳 API 操作上傳大型物件時，您可以指定這些標頭。您可以在 `CreateMultipartUpload` 請求中指定這些標頭。

使用伺服器端加密存放物件時，下列 REST API 操作的回應標頭會傳回 `x-amz-server-side-encryption` 標頭。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)

**重要**  
如果您未使用 Transport Layer Security (TLS) 或第 4 版簽署請求提出這些請求，則受 AWS KMS 保護物件的所有 `GET` 和 `PUT` 請求都會失敗。
如果您的物件使用 SSE-KMS，請勿傳送 `GET` 請求與 `HEAD` 請求的加密請求標頭，否則您會收到 HTTP 400 BadRequest 錯誤。

### 加密內容 (`x-amz-server-side-encryption-context`)
<a name="s3-express-s3-kms-encryption-context"></a>

如果您指定 `x-amz-server-side-encryption:aws:kms`，則 Amazon S3 API 支援您選擇使用 `x-amz-server-side-encryption-context` 標頭提供明確的加密內容。對於目錄儲存貯體，加密內容是一組金鑰/值對，其中包含資料的相關內容資訊。值必須符合預設加密內容，也就是儲存貯體的 Amazon Resource Name (ARN)。不支援額外的加密內容值。

如需目錄儲存貯體中加密內容的資訊，請參閱[加密內容](s3-express-UsingKMSEncryption.md#s3-express-encryption-context)。如需有關加密內容的更多資訊，請參閱《AWS Key Management Service 開發人員指南》**中的 [AWS Key Management Service 概念：加密內容](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)。

### AWS KMS 金鑰 ID (`x-amz-server-side-encryption-aws-kms-key-id`)
<a name="s3-express-s3-kms-key-id-api"></a>

您可以使用 `x-amz-server-side-encryption-aws-kms-key-id` 標頭來指定用來保護資料之客戶受管金鑰的 ID。

您的 SSE-KMS 組態在儲存貯體的生命週期內，每個目錄儲存貯體只能支援 1 個[客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。不支援 [https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) (`aws/s3`)。此外，為 SSE-KMS 指定客戶自管金鑰之後，即無法覆寫儲存貯體 SSE-KMS 組態的客戶自管金鑰。

您可以透過下列方式識別為儲存貯體的 SSE-KMS 組態指定的客戶自管金鑰：
+ 您可以提出 `HeadObject` API 操作請求，在回應中尋找 `x-amz-server-side-encryption-aws-kms-key-id` 的值。

若要為資料使用新的客戶自管金鑰，建議您使用新的客戶自管金鑰，將現有的物件複製到新的目錄儲存貯體。

如需目錄儲存貯體中加密內容的資訊，請參閱[AWS KMS keys](s3-express-UsingKMSEncryption.md#s3-express-aws-managed-customer-managed-keys)。

### S3 儲存貯體金鑰 (`x-amz-server-side-encryption-aws-bucket-key-enabled`)
<a name="s3-express-bucket-key-api"></a>

目錄儲存貯體中的 `GET` 和 `PUT` 操作一律會啟用 S3 儲存貯體金鑰，且無法停用。當您透過 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)、[Batch Operations 中的 Copy 操作](directory-buckets-objects-Batch-Ops.md)或 [import 作業](create-import-job.md)，將 SSE-KMS 加密物件從一般用途儲存貯體複製到目錄儲存貯體、從目錄儲存貯體複製到一般用途儲存貯體或在目錄儲存貯體之間複製時，不支援 S3 儲存貯體金鑰。在此情況下，Amazon S3 AWS KMS 會在每次對 KMS 加密物件提出複製請求時呼叫 。如需目錄儲存貯體中 S3 儲存貯體金鑰的資訊，請參閱[加密內容](s3-express-UsingKMSEncryption.md#s3-express-encryption-context)。

## 使用 AWS CLI
<a name="s3-express-KMSUsingCLI"></a>

**注意**  
當您使用 時 AWS CLI，對於 `CreateSession`，工作階段字符會自動重新整理，以避免工作階段過期時服務中斷。不支援覆寫 `CreateSession` 請求的加密設定值。此外，在區域端點 API 呼叫中 ([CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 和 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 除外)，不支援覆寫 `CreateSession` 請求中的加密設定值。  
若要使用 SSE-KMS 加密目錄儲存貯體中的新物件，您必須使用 KMS 金鑰 (特別是客戶自管金鑰) 將 SSE-KMS 指定為目錄儲存貯體的預設加密組態。然後，在為區域端點 API 操作建立工作階段時，系統會在工作階段期間使用 SSE-KMS 和 S3 儲存貯體金鑰自動加密和解密新物件。

若要使用下列範例 AWS CLI 命令，請將 取代`user input placeholders`為您自己的資訊。

當您上傳新物件或複製現有物件時，您可以指定使用伺服器端加密搭配 AWS KMS 金鑰來加密資料。若要執行這項操作，請使用 `put-bucket-encryption` 命令將目錄儲存貯體的預設加密組態設定為 SSE-KMS (`aws:kms`)。特別是將 `--server-side-encryption aws:kms` 標頭新增至請求。使用 `--ssekms-key-id example-key-id` 新增您建立[的客戶受管 AWS KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#customer-cmk)。如果您指定 `--server-side-encryption aws:kms`，則必須提供客戶受管 AWS KMS 金鑰的金鑰 ID。目錄儲存貯體不使用 AWS 受管金鑰。如需命令範例，請參閱[使用 AWS CLI](s3-express-bucket-encryption.md#s3-express-default-bucket-encryption-cli)。

然後，當您使用下列命令上傳新物件時，Amazon S3 預設會使用儲存貯體的預設加密設定來加密物件。

```
aws s3api put-object --bucket bucket-base-name--zone-id--x-s3 --key example-object-key --body filepath
```

您不需要在區域端點 API 操作命令中明確新增 `-\-bucket-key-enabled`。目錄儲存貯體中的 `GET` 和 `PUT` 操作一律會啟用 S3 儲存貯體金鑰，且無法停用。當您透過 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)、[Batch Operations 中的 Copy 操作](directory-buckets-objects-Batch-Ops.md)或 [import 作業](create-import-job.md)，將 SSE-KMS 加密物件從一般用途儲存貯體複製到目錄儲存貯體、從目錄儲存貯體複製到一般用途儲存貯體或在目錄儲存貯體之間複製時，不支援 S3 儲存貯體金鑰。在此情況下，Amazon S3 AWS KMS 每次對 KMS 加密物件提出複製請求時都會呼叫 。

您可以將物件從來源儲存貯體 (例如一般用途儲存貯體) 複製到新的儲存貯體 (例如目錄儲存貯體)，並對目的地物件使用 SSE-KMS 加密。若要執行這項操作，請使用 `put-bucket-encryption` 命令將目的地儲存貯體 (例如目錄儲存貯體) 的預設加密組態設定為 SSE-KMS (`aws:kms`)。如需命令範例，請參閱[使用 AWS CLI](s3-express-bucket-encryption.md#s3-express-default-bucket-encryption-cli)。然後，當您使用下列命令複製物件時，Amazon S3 預設會使用儲存貯體的預設加密設定來加密物件。

```
aws s3api copy-object --copy-source amzn-s3-demo-bucket/example-object-key --bucket bucket-base-name--zone-id--x-s3 --key example-object-key  
```

## 使用 AWS SDKs
<a name="s3-express-kms-using-sdks"></a>

使用 AWS SDKs時，您可以請求 Amazon S3 使用 AWS KMS keys 進行伺服器端加密。下列範例示範如何使用 SSE-KMS 搭配適用於 Java 和 .NET AWS SDKs。如需其他 SDKs的資訊，請參閱 AWS 開發人員中心上的[範例程式碼和程式庫](https://aws.amazon.com/code)。

**注意**  
當您使用 AWS SDKs 時，對於 `CreateSession`，工作階段字符會自動重新整理，以避免工作階段過期時服務中斷。不支援覆寫 `CreateSession` 請求的加密設定值。此外，在區域端點 API 呼叫中 ([CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 和 [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 除外)，不支援覆寫 `CreateSession` 請求中的加密設定值。  
若要使用 SSE-KMS 加密目錄儲存貯體中的新物件，您必須使用 KMS 金鑰 (特別是客戶自管金鑰) 將 SSE-KMS 指定為目錄儲存貯體的預設加密組態。然後，在為區域端點 API 操作建立工作階段時，系統會在工作階段期間使用 SSE-KMS 和 S3 儲存貯體金鑰自動加密和解密新物件。  
如需使用 AWS SDKs將目錄儲存貯體的預設加密組態設定為 SSE-KMS 的詳細資訊，請參閱 [使用 AWS SDKs](s3-express-bucket-encryption.md#s3-express-kms-put-bucket-encryption-using-sdks)。

**重要**  
當您在 Amazon S3 中使用 AWS KMS key 進行伺服器端加密時，您必須選擇對稱加密 KMS 金鑰。Amazon S3 只支援對稱加密 KMS 金鑰。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[對稱加密 KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks)。

如需建立客戶受管金鑰的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[程式設計 AWS KMS API](https://docs.aws.amazon.com/kms/latest/developerguide/programming-top.html)。

## 傳輸中加密
<a name="s3-express-ecnryption-transit"></a>

目錄儲存貯體使用地區與區域 API 端點。需要區域 (Region) 或區域 (Zone) 端點，取決於您使用的 Amazon S3 API 操作。您可以透過閘道虛擬私有雲端 (VPC) 端點存取區域 (Zone) 和區域 (Region) 端點。使用閘道端點不需額外付費。若要進一步了解區域 (Region) 和區域 (Zone) API 端點，請參閱 [目錄儲存貯體的網路](s3-express-networking.md)。

## 資料刪除
<a name="s3-express-data-deletion"></a>

您可以使用 Amazon S3 主控台、 AWS SDKs、 AWS Command Line Interface (AWS CLI) 或 Amazon S3 REST API，直接從目錄儲存貯體刪除一或多個物件。由於目錄儲存貯體中的所有物件都會產生儲存成本，因此建議您刪除不再需要的物件。

刪除存放在目錄儲存貯體中的物件也會週期性地刪除任何父目錄，如果這些父目錄未包含所要刪除物件以外的任何物件。

**注意**  
S3 Express One Zone 不支援多重要素驗證 (MFA) 刪除和 S3 版本控制。

# 驗證和授權請求
<a name="s3-express-authenticating-authorizing"></a>

根據預設，目錄儲存貯體為私有，只有明確獲得存取權的使用者才能存取。目錄儲存貯體的存取控制界限只會在儲存貯體層級設定。相反地，一般用途儲存貯體的存取控制界限可在儲存貯體、字首或物件標籤層級設定。這個差異表示，目錄儲存貯體是唯一可以包含在儲存貯體政策或 IAM 身分政策中，以提供 S3 Express One Zone 存取權的資源。

Amazon S3 Express One Zone 同時支援 AWS Identity and Access Management (AWS IAM) 授權和工作階段型授權：
+ 若要搭配 S3 Express One Zone 使用地區端點 API 操作 (儲存貯體層級或控制平面操作)，您可以使用不涉及工作階段管理的 IAM 授權模型。動作的許可會個別授予。如需詳細資訊，請參閱[使用 IAM 授權地區端點 API 操作](s3-express-security-iam.md)。
+ 若要使用 `CopyObject` 和 `HeadBucket` 以外的區域端點 API 操作 (物件層級或資料平面操作)，您可以使用 `CreateSession` API 操作來建立和管理工作階段，這些工作階段經過最佳化，可提供低延遲的資料請求授權。若要擷取和使用工作階段權杖，您必須在身分型政策或儲存貯體政策中允許目錄儲存貯體的 `s3express:CreateSession` 動作。如需詳細資訊，請參閱[使用 IAM 授權地區端點 API 操作](s3-express-security-iam.md)。如果您在 Amazon S3 主控台、透過 AWS Command Line Interface (AWS CLI) 或使用 AWS SDKs 存取 S3 Express One Zone，S3 Express One Zone 會代表您建立工作階段。 Amazon S3 

使用 `CreateSession` API 操作，您可以透過新的工作階段型機制來驗證和授權請求。您可以使用 `CreateSession` 請求臨時憑證來提供低延遲的儲存貯體存取。這些臨時憑證的範圍會設為特定目錄儲存貯體。

若要使用 `CreateSession`，我們建議您使用最新版本 AWS SDKs 或使用 AWS Command Line Interface (AWS CLI)。支援的 AWS SDKs 和 AWS CLI 處理常式工作階段會代表您建立、重新整理和終止。

工作階段權杖只能搭配區域 (物件層級) 操作 (`CopyObject` 和 `HeadBucket` 除外) 使用，將與授權相關的延遲分散到工作階段中的數個請求。對於區域端點 API 操作 (儲存貯體層級操作)，您可以使用不涉及管理工作階段的 IAM 授權。如需詳細資訊，請參閱[使用 IAM 授權地區端點 API 操作](s3-express-security-iam.md)及[使用 `CreateSession` 授權區域端點 API 操作](s3-express-create-session.md)。

## 如何驗證和授權 API 操作
<a name="s3-express-security-iam-authorization"></a>

下表列出目錄儲存貯體 API 操作的驗證和授權資訊。下表顯示每個 API 操作的 API 操作名稱、IAM 政策動作、端點類型 (地區或區域)，以及授權機制 (IAM 或工作階段型)。此表格也會指出是否支援跨帳戶存取權。儲存貯體層級動作的存取權只能在 IAM 身分型政策 (使用者或角色) 中授予，無法在儲存貯體政策中授予。


| API | 端點類型 | IAM 動作 | 跨帳戶存取權 | 
| --- | --- | --- | --- | 
| CreateBucket | 區域性 | s3express:CreateBucket | 否 | 
| DeleteBucket | 區域性 | s3express:DeleteBucket | 否 | 
| ListDirectoryBuckets | 區域性 | s3express:ListAllMyDirectoryBuckets | 否 | 
| PutBucketPolicy | 區域性 | s3express:PutBucketPolicy | 否 | 
| GetBucketPolicy | 區域性 | s3express:GetBucketPolicy | 否 | 
| DeleteBucketPolicy | 區域性 | s3express:DeleteBucketPolicy | 否 | 
| CreateSession | 區域 | s3express:CreateSession | 是 | 
| CopyObject | 區域 | s3express:CreateSession | 是  | 
| DeleteObject | 區域 | s3express:CreateSession | 是  | 
| DeleteObjects | 區域 | s3express:CreateSession | 是  | 
| HeadObject | 區域 | s3express:CreateSession | 是  | 
| PutObject | 區域 | s3express:CreateSession | 是 | 
| RenameObject | 區域 | s3express:CreateSession | 否 | 
| GetObjectAttributes | 區域 | s3express:CreateSession | 是 | 
| ListObjectsV2 | 區域 | s3express:CreateSession | 是  | 
| HeadBucket | 區域 | s3express:CreateSession | 是  | 
| CreateMultipartUpload | 區域 | s3express:CreateSession | 是 | 
| UploadPart | 區域 | s3express:CreateSession | 是  | 
| UploadPartCopy | 區域 | s3express:CreateSession | 是  | 
| CompleteMultipartUpload | 區域 | s3express:CreateSession | 是  | 
| AbortMultipartUpload | 區域 | s3express:CreateSession | 是  | 
| ListParts | 區域 | s3express:CreateSession | 是  | 
| ListMultipartUploads | 區域 | s3express:CreateSession | 是  | 
| ListAccessPointsForDirectoryBuckets | 區域 | s3express:ListAccessPointsForDirectoryBuckets | 是 | 
| GetAccessPointScope | 區域 | s3express:GetAccessPointScope | 是 | 
| PutAccessPointScope | 區域 | s3express:PutAccessPointScope | 是 | 
| DeleteAccessPointScope | 區域 | s3express:DeleteAccessPointScope | 是 | 

**Topics**
+ [如何驗證和授權 API 操作](#s3-express-security-iam-authorization)
+ [使用 IAM 授權地區端點 API 操作](s3-express-security-iam.md)
+ [使用 `CreateSession` 授權區域端點 API 操作](s3-express-create-session.md)

# 使用 IAM 授權地區端點 API 操作
<a name="s3-express-security-iam"></a>

AWS Identity and Access Management (IAM) 是一種 AWS 服務 ，可協助管理員安全地控制對 AWS 資源的存取。IAM 管理員可控制哪些人員可進行身分驗證 (登入) 並獲得授權 (具有許可權)，以使用目錄儲存貯體和 S3 Express One Zone 操作中的 Amazon S3 資源。您可以免費使用 IAM。

使用者預設沒有目錄儲存貯體的許可。若要授予存取目錄儲存貯體的許可，您可以使用 IAM 建立使用者、群組或角色，並將許可附加至這些身分。如需有關 IAM 的詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 安全最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

若要提供存取權，您可以透過下列方式新增許可至您的使用者、群組或角色：
+ **中的使用者和群組 AWS IAM Identity Center** – 建立許可集。請按照《*AWS IAM Identity Center 使用者指南*》中的[建立權限合集](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-started-create-a-permission-set.html)說明進行操作。
+ **IAM 中透過身分提供者管理的使用者**：建立聯合身分的角色。請按照 *IAM 使用者指南* 的 [為第三方身分提供者 (聯合) 建立角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html) 中的指示進行操作。
+ **IAM 角色和使用者**：建立您的使用者可擔任的角色。請依照《IAM 使用者指南》**中的[建立角色以將許可委派給 IAM 使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)的指示進行。

如需有關適用於 S3 Express One Zone 的 IAM 的詳細資訊，請參閱下方主題。

**Topics**
+ [主體](#s3-express-security-iam-principals)
+ [Resources](#s3-express-security-iam-resources)
+ [目錄儲存貯體的動作](#s3-express-security-iam-actions)
+ [適用於目錄儲存貯體的 IAM 身分型政策](s3-express-security-iam-identity-policies.md)
+ [目錄儲存貯體的範例儲存貯體政策](s3-express-security-iam-example-bucket-policies.md)
+ [AWS Amazon S3 Express One Zone 的 受管政策](s3-express-one-zone-security-iam-awsmanpol.md)

## 主體
<a name="s3-express-security-iam-principals"></a>

當您建立資源型政策以授予儲存貯體的存取權時，您必須使用 `Principal` 元素來指定可對該資源提出動作或操作請求的人員或應用程式。對於目錄儲存貯體政策，您可以使用下列主體：
+  AWS 帳戶
+ IAM 使用者
+ IAM 角色
+ 聯合身分使用者

如需詳細資訊，請參閱《*IAM 使用者指南》*中的 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。

## Resources
<a name="s3-express-security-iam-resources"></a>

目錄儲存貯體的 Amazon Resource Name (ARNs) 包含`s3express`命名空間、 AWS 區域、 AWS 帳戶 ID 和目錄儲存貯體名稱，其中包含 AWS 區域 ID。（可用區域或本機區域 ID)。

若要存取並對目錄儲存貯體執行動作，您必須使用下列 ARN 格式：

```
arn:aws:s3express:region:account-id:bucket/base-bucket-name--zone-id--x-s3
```

若要存取目錄儲存貯體的存取點並在其上執行動作，您必須使用下列 ARN 格式：

```
arn:aws::s3express:region:account-id:accesspoint/accesspoint-basename--zone-id--xa-s3
```

如需有關 ARN 的詳細資訊，請參閱《IAM 使用者指南》**中的 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)。如需有關資源的詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM JSON 政策元素︰Resource](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html)。

## 目錄儲存貯體的動作
<a name="s3-express-security-iam-actions"></a>

在 IAM 身分型政策或資源型政策中，您可以定義可允許或拒絕哪些 S3 動作。動作對應於特定 API 操作。使用目錄儲存貯體時，您可以使用 S3 Express One Zone 命名空間來授予許可權，稱為 `s3express`。

當您允許授予 `s3express:CreateSession` 權限時，`CreateSession` API 操作會針對所有區域端點 API (物件層級) 操作擷取暫時工作階段字符。這些工作階段字符會傳回可用於所有其他區域端點 API 操作的憑證。因此，您不需要使用 IAM 政策授予區域 API 操作的存取權限。反之，`CreateSession` 會啟用所有物件層級操作的存取權。如需區域 API 操作和許可權清單，請參閱[驗證和授權請求](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-authenticating-authorizing.html)。

若要進一步了解 `CreateSession` API 操作，請參閱《Amazon Simple Storage Service API 參考》**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html)。

您可在 IAM 政策陳述式的 `Action` 元素中指定以下動作。使用政策來授予在 AWS中執行操作的許可。在政策中使用動作時，通常會允許或拒絕存取相同名稱的 API 操作。不過，在某些情況下，單一動作可控制對多個 API 操作的存取。儲存貯體層級動作的存取權只能在 IAM 身分型政策 (使用者或角色) 中授予，無法在儲存貯體政策中授予。

如需如何設定存取點政策的詳細資訊，請參閱[設定使用目錄儲存貯體的存取點的 IAM 政策](access-points-directory-buckets-policies.md)。

如需詳細資訊，請參閱[適用於 Amazon S3 Express 的動作、資源和條件索引鍵](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3express.html)。

# 適用於目錄儲存貯體的 IAM 身分型政策
<a name="s3-express-security-iam-identity-policies"></a>

在您建立目錄儲存貯體之前，必須先將必要的許可授予 AWS Identity and Access Management (IAM) 角色或使用者。此範例政策允許存取 `CreateSession` API 操作 (搭配區域端點 [物件層級] API 操作使用) 和所有區域端點 (儲存貯體層級) API 操作。此政策允許 `CreateSession` API 操作搭配所有目錄儲存貯體使用，但僅允許區域端點 API 操作搭配指定的目錄儲存貯體使用。若要使用此範例政策，請以您自己的資訊取代 `user input placeholders`。

# 目錄儲存貯體的範例儲存貯體政策
<a name="s3-express-security-iam-example-bucket-policies"></a>

本節提供範例目錄儲存貯體政策。若要使用這些政策，請將 `user input placeholders` 取代為您自己的資訊。

下列範例儲存貯`111122223333`體政策允許 AWS 帳戶 ID 對指定的目錄儲存貯體使用 `CreateSession` API 操作。未指定工作階段模式時，將會建立具有最大允許權限的工作階段 (`ReadWrite`先嘗試，`ReadOnly`如果不允許的話）。此政策會授予區域端點 (物件層級) API 操作的存取權。

**Example – 允許`CreateSession`呼叫的儲存貯體政策**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ReadWriteAccess",
            "Effect": "Allow",
            "Resource": "arn:aws:s3express:us-west-2:111122223333:bucket/amzn-s3-demo-bucket--usw2-az1--x-s3",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:root"
                ]
            },
            "Action": [
                "s3express:CreateSession"
            ]
        }
    ]
}
```

**Example - 此儲存貯體政策允許使用 `ReadOnly` 工作階段的 `CreateSession` 呼叫**  
下列儲存貯`111122223333`體政策範例允許 AWS 帳戶 ID 使用 `CreateSession` API 操作。此政策會使用 `s3express:SessionMode` 條件索引鍵與 `ReadOnly` 值來設定唯讀工作階段。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ReadOnlyAccess",
            "Effect": "Allow",
            "Principal": {
                "AWS": "111122223333"
            },
            "Action": "s3express:CreateSession",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "s3express:SessionMode": "ReadOnly"
                }
            }
        }
    ]
}
```

**Example - 此儲存貯體政策允許 `CreateSession` 呼叫的跨帳户存取權**  
下列範例儲存貯體政策允許 AWS 帳戶 ID 對 AWS 帳戶 ID 擁有的指定目錄儲存貯體`111122223333`使用 `CreateSession` API 操作*`444455556666`*。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CrossAccount",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "s3express:CreateSession"
            ],
            "Resource": "arn:aws:s3express:us-west-2:444455556666:bucket/amzn-s3-demo-bucket--usw2-az1--x-s3"
        }
    ]
}
```

# AWS Amazon S3 Express One Zone 的 受管政策
<a name="s3-express-one-zone-security-iam-awsmanpol"></a>

 AWS 受管政策是由 AWS AWS 受管政策建立和管理的獨立政策旨在為許多常用案例提供許可，以便您可以開始將許可指派給使用者、群組和角色。

請記住， AWS 受管政策可能不會授予特定使用案例的最低權限許可，因為這些許可可供所有 AWS 客戶使用。我們建議您定義特定於使用案例的[客戶管理政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies)，以便進一步減少許可。

您無法變更 AWS 受管政策中定義的許可。如果 AWS 更新受 AWS 管政策中定義的許可，則更新會影響政策連接的所有委託人身分 （使用者、群組和角色）。當新的 AWS 服務 啟動或新的 API 操作可用於現有服務時， AWS 最有可能更新 AWS 受管政策。

如需詳細資訊，請參閱 *IAM 使用者指南*中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

## AWS 受管政策： AmazonS3ExpressFullAccess
<a name="s3-express-one-zone-security-iam-awsmanpol-amazons3expressfullaccess"></a>

您可將 `AmazonS3ExpressFullAccess` 政策連接到 IAM 身分。此政策授予 Amazon S3 Express One Zone 目錄儲存貯體和操作的完整存取權。它允許所有資源`s3express`的服務字首下的所有動作。

此政策適用於需要不受限制存取目錄儲存貯體的使用者或角色。此政策僅涵蓋 Amazon S3 Express One Zone 操作。對於標準 Amazon S3 操作，您需要其他政策。

若要檢視此政策的許可，請參閱《 AWS 受管政策參考[https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3ExpressFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3ExpressFullAccess.html)》中的 。

## AWS 受管政策： AmazonS3ExpressReadOnlyAccess
<a name="s3-express-one-zone-security-iam-awsmanpol-amazons3expressreadonlyaccess"></a>

您可將 `AmazonS3ExpressReadOnlyAccess` 政策連接到 IAM 身分。此政策授予許可，允許`ReadOnly`存取 Amazon S3 Express One Zone 目錄儲存貯體。

**注意**  
`CreateSession` 動作支援條件`SessionMode`索引鍵，可設定為 `ReadOnly`或 `ReadWrite`。此政策會`SessionMode`針對`ReadOnly`工作階段使用 。

若要檢視此政策的許可，請參閱《 AWS 受管政策參考[https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3ExpressReadOnlyAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3ExpressReadOnlyAccess.html)》中的 。

## AWS 受管政策的 Amazon S3 Express One Zone 更新
<a name="s3-express-one-zone-security-iam-awsmanpol-updates"></a>

檢視自此服務開始追蹤 Amazon S3 Express One Zone AWS 受管政策更新以來的詳細資訊。


| 變更 | 描述 | Date | 
| --- | --- | --- | 
|  新增 Amazon S3 Express One Zone`AmazonS3ExpressFullAccess`。  |  Amazon S3 Express One Zone 新增了名為 的新 AWS 受管政策`AmazonS3ExpressFullAccess`。此政策授予許可，允許完整存取 Amazon S3 Express One Zone 目錄儲存貯體和操作。  |  2026 年 4 月 3 日  | 
|  新增 Amazon S3 Express One Zone`AmazonS3ExpressReadOnlyAccess`。  |  Amazon S3 Express One Zone 新增了名為 的新 AWS 受管政策`AmazonS3ExpressReadOnlyAccess`。此政策授予許可，允許唯讀存取 Amazon S3 Express One Zone 目錄儲存貯體。  |  2026 年 4 月 3 日  | 
|  Amazon S3 Express One Zone 已開始追蹤變更。  |  Amazon S3 Express One Zone 開始追蹤其 AWS 受管政策的變更。  |  2026 年 4 月 3 日  | 

# 使用 `CreateSession` 授權區域端點 API 操作
<a name="s3-express-create-session"></a>

若要使用 `CopyObject` 和 `HeadBucket` 以外的區域端點 API 操作 (物件層級或資料平面操作)，您可以使用 `CreateSession` API 操作來建立和管理工作階段，這些工作階段經過最佳化，可提供低延遲的資料請求授權。若要擷取和使用工作階段權杖，您必須在身分型政策或儲存貯體政策中允許目錄儲存貯體的 `s3express:CreateSession` 動作。如需詳細資訊，請參閱[使用 IAM 授權地區端點 API 操作](s3-express-security-iam.md)。如果您在 Amazon S3 主控台、透過 AWS Command Line Interface (AWS CLI) 或使用 AWS SDKs 存取 S3 Express One Zone，S3 Express One Zone 會代表您建立工作階段。 Amazon S3 不過，使用 AWS CLI AWS SDKs時，您無法修改 `SessionMode` 參數。

如果您使用 Amazon S3 REST API，則可以使用 `CreateSession` API 操作來取得包含存取金鑰 ID、私密存取金鑰、工作階段權杖和到期時間的臨時安全憑證。臨時憑證提供的許可與長期安全憑證相同，例如 IAM 使用者憑證，但臨時安全憑證必須包含工作階段權杖。

**工作階段模式**  
工作階段模式會定義工作階段的範圍。如果未在 CreateSession API 請求中指定工作階段模式，CreateSession 動作將嘗試建立具有最大允許權限的工作階段，`ReadWrite`先嘗試，然後`ReadOnly`僅在 政策`ReadWrite`不允許時返回 。在儲存貯體政策中，您可以指定 `s3express:SessionMode` 條件金鑰，以明確控制誰可以建立 `ReadWrite`或 `ReadOnly`工作階段。如需有關 `ReadWrite` 或 `ReadOnly` 工作階段的詳細資訊，請參閱《Amazon S3 API 參考》**中 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html) 的 `x-amz-create-session-mode` 參數。如需有關要建立的儲存貯體政策的詳細資訊，請參閱 [目錄儲存貯體的範例儲存貯體政策](s3-express-security-iam-example-bucket-policies.md)。

**工作階段權杖**  
當您使用臨時安全憑證進行呼叫時，呼叫必須包含工作階段權杖。工作階段權杖會隨臨時憑證一併傳回。工作階段權杖的範圍設定為目錄儲存貯體，並用來驗證安全憑證有效且未過期。為保護您的工作階段，臨時安全憑證會在 5 分鐘後過期。

**`CopyObject` 和 `HeadBucket`**  
臨時安全憑證的範圍設定為特定目錄儲存貯體，並且會自動針對所指目錄儲存貯體的所有區域 (物件層級) 操作業 API 呼叫啟用。與其他區域端點 API 操作不同的是，`CopyObject` 和 `HeadBucket` 不使用 `CreateSession` 身分驗證。所有 `CopyObject` 和 `HeadBucket` 請求都必須使用 IAM 憑證進行驗證和簽署。但是，`CopyObject` 和 `HeadBucket` 仍像其他區域端點 API 操作一樣，由 `s3express:CreateSession` 進行授權。

如需詳細資訊，請參閱 Amazon Simple Storage Service API 參考**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html)。

# 目錄儲存貯體的安全最佳實務
<a name="s3-express-security-best-practices"></a>

使用目錄儲存貯體時，需要考慮一些安全功能。以下最佳實務為一般準則，並不代表完整的安全解決方案。這些最佳實務可能不適用或無法滿足您的環境需求，因此請將其視為實用建議就好，而不要當作是指示。

## 預設封鎖公開存取和物件擁有權設定
<a name="s3-express-security-best-practices-manage-access"></a>

 目錄儲存貯體支援 S3 封鎖公開存取和 S3 物件擁有權。這些 S3 功能可用來稽核和管理對儲存貯體和物件的存取權。

根據預設，目錄儲存貯體的所有封鎖公開存取設定都會啟用。此外，物件擁有權會設定為儲存貯體擁有者強制執行，這表示存取控制清單 (ACL) 已停用。這些設定無法修改。如需這些功能的詳細資訊，請參閱 [封鎖對 Amazon S3 儲存體的公開存取權](access-control-block-public-access.md) 和 [控制物件的擁有權並停用儲存貯體的 ACL](about-object-ownership.md)。

**注意**  
您無法授予存放在目錄儲存貯體中的物件存取權。您只能授予目錄儲存貯體的存取權。S3 Express One Zone 的授權模式與 Amazon S3 的授權模式不同。如需詳細資訊，請參閱[使用 `CreateSession` 授權區域端點 API 操作](s3-express-create-session.md)。

## 身分驗證和授權
<a name="s3-express-security-best-practices-create-session"></a>

目錄儲存貯體的身分驗證和授權機制會根據您對區域 端點 API 操作還是地區端點 API 操作發出請求而有所不同。區域 (Zone) API 操作是物件層級（資料平面）操作。區域 (Region) API 操作是儲存貯體層級 (控制平面) 操作。

您可以透過新的工作階段型機制來驗證和授權對區域端點 API 操作的請求，``此機制經過最佳化，可提供最低延遲。透過工作階段型身分驗證， AWS SDKs 會使用 `CreateSession` API 操作``來請求臨時憑證，以提供目錄儲存貯體的低延遲存取。這些臨時憑證的範圍會設為特定目錄儲存貯體，並於 5 分鐘後過期。您可以使用這些臨時憑證來簽署區域 (物件層級) API 呼叫。如需詳細資訊，請參閱[使用 `CreateSession` 授權區域端點 API 操作](s3-express-create-session.md)。

**使用目錄儲存貯體管理憑證簽署請求**  
您可以使用 登入資料，以 AWS Signature 第 4 版簽署區域端點 （物件層級） API 請求，並以 `s3express`做為服務名稱。當您簽署請求時，請使用從 `CreateSession` 傳回的秘密金鑰，同時提供具有 `x-amzn-s3session-token header` 的工作階段權杖。如需詳細資訊，請參閱[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html)。

[支援的 AWS SDK](s3-express-SDKs.md#s3-express-getting-started-accessing-sdks) 可管理憑證並代表您進行簽署。我們建議您使用 AWS SDKs來重新整理登入資料並為您簽署請求。

**使用 IAM 憑證簽署請求**  
所有區域 (儲存貯體層級) API 呼叫都必須透過 AWS Identity and Access Management (IAM) 憑證進行驗證和簽署，而非臨時工作階段憑證。IAM 憑證包含 IAM 身分的存取金鑰 ID 和私密存取金鑰。所有 `CopyObject` 和 `HeadBucket` 請求也都必須使用 IAM 憑證進行驗證和簽署。

為了讓區域 (物件層級) 操作呼叫達到最低延遲，建議您使用透過呼叫 `CreateSession` 取得的憑證來簽署請求，但不包括 `CopyObject` 和 `HeadBucket` 請求。

## 使用 AWS CloudTrail
<a name="s3-express-security-best-practices-cloudtrail"></a>

AWS CloudTrail 提供 Amazon S3 中使用者、角色或 AWS 服務 所採取動作的記錄。您可以使用 CloudTrail 收集的資訊來判斷下列項目：
+ 對 Amazon S3 提出的請求
+ 提出請求的 IP 位址
+ 提出要求的人員
+ 提出請求的時間
+ 有關請求的其他詳細資訊

當您設定 時 AWS 帳戶，預設會啟用 CloudTrail 管理事件。下列區域端點 API 操作 (儲存貯體層級，也稱為控制平面 API 操作) 會記錄到 CloudTrail。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListDirectoryBuckets.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListDirectoryBuckets.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html)

**注意**  
`ListMultipartUploads` 是區域端點 API 操作。不過，這會記錄到 CloudTrail 作為管理事件。如需詳細資訊，請參閱 Amazon Simple Storage Service API 參考**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)。

根據預設，CloudTrail 追蹤不會記錄資料事件，但您可以設定追蹤來記錄您指定之目錄儲存貯體的資料事件，或記錄您 AWS 帳戶中所有目錄儲存貯體的資料事件。下列區域端點 API 操作 (物件層級或資料平面 API 操作) 會記錄到 CloudTrail。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)

 如需搭配目錄儲存貯體使用 AWS CloudTrail 的詳細資訊，請參閱[針對目錄儲存貯體使用 AWS CloudTrail 進行記錄](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone-cloudtrail-logging.html)。

### 使用監控工具實作 AWS 監控
<a name="s3-express-security-best-practices-monitoring"></a>

監控是維護 Amazon S3 和您 AWS 解決方案的可靠性、安全性、可用性和效能的重要部分。 AWS 提供多種工具和服務，可協助您監控 Amazon S3 和其他項目 AWS 服務。例如，您可以監控 Amazon S3 的 Amazon CloudWatch 指標，特別是 `BucketSizeBytes` 和 `NumberOfObjects` 儲存指標。

儲存在目錄儲存貯體中的物件不會反映在 Amazon S3 的 `BucketSizeBytes` 和 `NumberOfObjects` 儲存指標中。不過，目錄儲存貯體支援 `BucketSizeBytes` 和 `NumberOfObjects` 儲存指標。若要查看您選擇的指標，您可以指定 `StorageType` 維度來區分 Amazon S3 儲存類別。如需詳細資訊，請參閱[使用 Amazon CloudWatch 監控指標](cloudwatch-monitoring.md)。

如需詳細資訊，請參閱[使用 Amazon CloudWatch 監控指標](cloudwatch-monitoring.md)及[在 Amazon S3 中記錄和監控](monitoring-overview.md)。

# 使用存取點管理目錄儲存貯體中的共用資料集存取權
<a name="access-points-directory-buckets"></a>

Amazon S3 Access Points 針對 Amazon S3 中的共用資料集，簡化管理大規模的資料存取。存取點是您建立的唯一主機名稱，目的在於針對透過存取點發出的所有請求，強制執行不同的許可與網路控制。您可以在每個儲存貯體中建立數百個存取點，且每個存取點都有針對每個應用程式自訂的不同名稱和許可權。每個存取點都會與附加至基礎儲存貯體的儲存貯體政策搭配運作。

在目錄儲存貯體中，存取點名稱包含您提供的基本名稱，後面接著目錄儲存貯體位置的區域 ID (AWS 可用區域或本機區域），然後是 `--xa-s3`。例如 `accesspointname--zoneID--xa-s3`。建立存取點之後，便無法變更名稱或區域 ID。

透過目錄儲存貯體的存取點，您可以使用存取點範圍來限制對特定字首或 API 操作的存取。您可以指定任意數量的字首，但所有字首的總字元長度必須小於 256 個位元組。

您可以將任何存取點設定為僅接受來自虛擬私有雲端 (VPC) 的請求。這會將 Amazon S3 資料存取限制在私有網路。

本節中的主題說明如何將存取點用於目錄儲存貯體。如需目錄儲存貯體的相關資訊，請參閱 [使用目錄儲存貯體](directory-buckets-overview.md)。

**Topics**
+ [目錄儲存貯體的存取點命名規則、限制和約束](access-points-directory-buckets-restrictions-limitations-naming-rules.md)
+ [參考目錄儲存貯體的存取點](access-points-directory-buckets-naming.md)
+ [適用於目錄儲存貯體存取點的物件操作](access-points-directory-buckets-service-api-support.md)
+ [設定使用目錄儲存貯體的存取點的 IAM 政策](access-points-directory-buckets-policies.md)
+ [監控和記錄目錄儲存貯體的存取點](access-points-directory-buckets-monitoring-logging.md)
+ [建立目錄儲存貯體的存取點](creating-access-points-directory-buckets.md)
+ [管理目錄儲存貯體的存取點](access-points-directory-buckets-manage.md)
+ [搭配使用標籤與目錄儲存貯體的 S3 存取點](access-points-db-tagging.md)

# 目錄儲存貯體的存取點命名規則、限制和約束
<a name="access-points-directory-buckets-restrictions-limitations-naming-rules"></a>

存取點針對 Amazon S3 中的共用資料集，簡化管理大規模的資料存取。下列主題提供有關存取點命名規則和限制的資訊。

**Topics**
+ [目錄儲存貯體存取點的命名規則](#access-points-directory-buckets-names)
+ [目錄儲存貯體的存取點命名規則與限制](#access-points-directory-buckets-restrictions-limitations)

## 目錄儲存貯體存取點的命名規則
<a name="access-points-directory-buckets-names"></a>

存取點必須在儲存貯體所在的相同區域中建立。存取點名稱在區域內必須是唯一的。

存取點名稱必須符合 DNS 標準，且必須符合以下條件：
+ 必須以數字或小寫字母開頭
+ 您提供的基本名稱長度必須介於 3 到 50 個字元之間
+ 不能以連字號 (`-`) 開頭和結尾
+ 不能包含底線 (`_`)、大寫字母、空格或句號 (`.`)
+ 必須以尾碼 `zoneid--xa--s3` 結尾。

## 目錄儲存貯體的存取點命名規則與限制
<a name="access-points-directory-buckets-restrictions-limitations"></a>

目錄儲存貯體的存取點具有以下限制和約束：
+ 每個存取點都與一個目錄儲存貯體相關聯。建立存取點之後，即無法將其與不同的儲存貯體相關聯。不過，您可以刪除存取點，然後使用相同名稱建立新存取點，並將其與不同儲存貯體相關聯。
+ 建立存取點之後，您便無法變更其 Virtual Private Cloud (VPC) 組態。
+ 存取點政策的大小限制為 20 KB。
+ 存取點範圍字首的總大小限制為 256 個位元組。
+  AWS 帳戶 每個 最多可以建立 10，000 個存取點 AWS 區域。如果對單一區域中的單一帳戶需要超過 10,000 個存取點，您可以請求增加服務配額。如需服務配額和請求增加的詳細資訊，請參閱《AWS 一般參考》**中的 [AWS Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)。
+ 您只能使用存取點對物件執行操作。您無法使用存取點來執行 Amazon S3 儲存貯體操作，例如修改或刪除儲存貯體。如需支援的操作完整清單，請參閱 [適用於目錄儲存貯體存取點的物件操作](access-points-directory-buckets-service-api-support.md)。
+ 您可以依名稱、存取點別名或虛擬託管樣式 URI 來參考存取點。您無法依 ARN 定址存取點。如需詳細資訊，請參閱[參考目錄儲存貯體的存取點](access-points-directory-buckets-naming.md)。
+ 控制存取點功能的 API 操作 （例如 `PutAccessPointPolicy`和 `GetAccessPointPolicy`) 必須指定擁有存取點 AWS 的帳戶。
+ 使用 REST API 向存取點提出請求時，您必須使用 AWS Signature 第 4 版。如需驗證請求的詳細資訊，請參閱《*Amazon Simple Storage Service API 參考*》中的[驗證請求 (AWS 簽章版本 4)](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html)。
+ 存取點僅支援透過 HTTPS 的請求。對於透過 HTTP 提出的任何請求，Amazon S3 會自動以 HTTP 重新導向回應，將請求升級至 HTTPS。
+ 存取點不支援匿名存取。
+ 如果您為另一個帳戶 (跨帳戶存取點) 擁有的儲存貯體建立存取點，則跨帳戶存取點不會授予您存取資料的許可權，直到儲存貯體擁有者授予您存取儲存貯體的許可權為止。儲存貯體擁有者一律會保留資料的最終存取控制權，並且必須更新儲存貯體政策，才能授權來自跨帳戶存取點的請求。若要檢視儲存貯體政策範例，請參閱 [設定使用目錄儲存貯體的存取點的 IAM 政策](access-points-directory-buckets-policies.md)。

# 參考目錄儲存貯體的存取點
<a name="access-points-directory-buckets-naming"></a>

建立存取點之後，您可以用該存取點做為端點來執行物件操作。對於目錄儲存貯體的存取點，存取點別名與存取點名稱相同。您可以使用存取點名稱，而不是所有資料操作的儲存貯體名稱。如需這些支援的操作清單，請參閱 [適用於目錄儲存貯體存取點的物件操作](access-points-directory-buckets-service-api-support.md)。

## 透過虛擬託管樣式 URI 參考存取點
<a name="accessing-directory-bucket-through-s3-access-point"></a>

存取點僅支援虛擬託管樣式定址。存取點使用與目錄儲存貯體端點相同的格式。如需詳細資訊，請參閱[目錄儲存貯體的地區和區域端點](s3-express-Regions-and-Zones.md)。

S3 存取點不支援透過 HTTP 存取。存取點僅支援透過 HTTPS 的安全存取。

# 適用於目錄儲存貯體存取點的物件操作
<a name="access-points-directory-buckets-service-api-support"></a>

您可以使用下列 S3 資料操作，使用存取點來存取物件。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)

# 設定使用目錄儲存貯體的存取點的 IAM 政策
<a name="access-points-directory-buckets-policies"></a>

存取點支援 AWS Identity and Access Management (IAM) 資源政策，可讓您依資源、使用者或其他條件控制存取點的使用。若要讓應用程式或使用者透過存取點存取物件，存取點和基礎儲存貯體政策都必須允許該請求。

**重要**  
將存取點新增到目錄儲存貯體，並不會變更直接透過儲存貯體名稱存取儲存貯體時的儲存貯體行為。針對儲存貯體的所有現有操作將繼續像以前一樣運作。您納入存取點政策或存取點範圍中的限制，只會套用至透過該存取點發出的請求。

使用 IAM 資源政策時，請務必先解決 的安全警告、錯誤、一般警告和建議， AWS Identity and Access Management Access Analyzer 再儲存政策。IAM Access Analyzer 會比對 IAM [政策文法](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html)和[最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)來執行政策檢查，以驗證您的政策。這些檢查會產生問題清單並提供建議，協助您撰寫具有功能性且符合安全最佳實務的政策。

若要進一步了解如何使用 IAM Access Analyzer 驗證政策，請參閱《IAM 使用者指南》**中的 [IAM Access Analyzer 政策驗證](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。若要檢視 IAM Access Analyzer 傳回的警告、錯誤和建議清單，請參閱 [IAM Access Analyzer 政策檢查參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html)。

## 目錄儲存貯體政策的存取點範例
<a name="access-points-directory-buckets-policy-examples"></a>

下列存取點政策示範如何控制對目錄儲存貯體的請求。存取點政策須有儲存貯體 ARN 或存取點 ARN。政策不支援存取點別名。以下是存取點 ARN 的範例：

```
  arn:aws:s3express:region:account-id:accesspoint/myaccesspoint--zoneID--xa-s3
```

您可以在存取點的詳細資訊中檢視存取點 ARN。如需詳細資訊，請參閱[檢視目錄儲存貯體的存取點詳細資訊](access-points-directory-buckets-details.md)。

**注意**  
存取點政策中授予的權限只有在基礎儲存貯體也允許相同的存取時才有效。您可以透過兩種方式完成此操作：  
**(建議)** 如[將存取控制委派給存取點](#access-points-directory-buckets-delegating-control)中所述，將儲存貯體的存取控制委派給存取點。
將存取點政策中包含的相同權限新增至基礎儲存貯體的政策。

**Example 1 – 將存取點限制為 VPC 網路原來源的服務控制政策**  
下列服務控制政策需要使用虛擬私有雲端 (VPC) 網路來源建立所有新的存取點。有了此政策，組織中的使用者就無法建立可從網際網路存取的任何存取點。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
        "Effect": "Deny",
        "Action": "s3express:CreateAccessPoint",
        "Resource": "*",
        "Condition": {
            "StringNotEquals": {
                "s3express:AccessPointNetworkOrigin": "VPC"
            }
        }
    }
  ]
}
```

**Example 2 – 存取點政策，限制儲存貯體存取具有 VPC 網路來源的存取點**  
下列存取點政策將儲存貯體 *amzn-s3-demo-bucket--zoneID--x-s3* 的所有存取權限制在具有 VPC 網路來源的存取點。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyCreateSessionFromNonVPC",
            "Principal": "*",
            "Action": "s3express:CreateSession",
            "Effect": "Deny",
            "Resource": "arn:aws:s3express:us-east-1:111122223333:bucket/amzn-s3-demo-bucket--usw2-az1--x-s3"
        }
    ]
}
```

## 條件索引鍵
<a name="access-points-directory-buckets-condition-keys"></a>

目錄儲存貯體的存取點具有您可以在 IAM 政策中使用的條件索引鍵，可用來控制對資源的存取。下列條件金鑰僅代表 IAM 政策的一部分。如需完整政策範例，請參閱 [目錄儲存貯體政策的存取點範例](#access-points-directory-buckets-policy-examples)、[將存取控制委派給存取點](#access-points-directory-buckets-delegating-control) 和 [授予跨帳戶存取點的許可](#access-points-directory-buckets-cross-account)。

**`s3express:DataAccessPointArn`**  
此範例示範如何依照存取點的 Amazon Resource Name (ARN) 篩選存取權，並符合區域 *region* 中 AWS 帳戶 *111122223333* 的所有存取點：  

```
"Condition" : {
    "StringLike": {
        "s3express:DataAccessPointArn": "arn:aws:s3express:region:111122223333:accesspoint/*"
    }
}
```

**`s3express:DataAccessPointAccount`**  
此範例顯示一個字串運算子，您可以使用它來比對存取點擁有者的帳戶 ID。下列範例會比對 AWS 帳戶 *`111122223333`* 擁有的所有存取點。  

```
"Condition" : {
    "StringEquals": {
        "s3express:DataAccessPointAccount": "111122223333"
    }
}
```

**`s3express:AccessPointNetworkOrigin`**  
此範例顯示一個字串運算子，您可以使用它來比對網路來源，`Internet` 或 `VPC`。下列範例僅會比對存取點與 VPC 來源。  

```
"Condition" : {
    "StringEquals": {
        "s3express:AccessPointNetworkOrigin": "VPC"
    }
}
```

**`s3express:Permissions`**  
您可以使用 `s3express:Permissions` 限制在存取點範圍內存取的特定 API 操作。以下是支援的 API 操作：  
+ `PutObject`
+ `GetObject`
+ `DeleteObject`
+ `ListBucket` (`ListObjectsV2` 所需)
+ `GetObjectAttributes`
+ `AbortMultipartUpload`
+ `ListBucketMultipartUploads`
+ `ListMultipartUploadParts`
使用多值條件索引鍵時，建議您搭配 `Allow` 陳述式使用 `ForAllValues`，並搭配 `Deny` 陳述式使用 `ForAnyValue`。如需詳細資訊，請參閱《IAM 使用者指南》中的[多值內容鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-single-vs-multi-valued-context-keys.html#reference_policies_condition-multi-valued-context-keys)。

如需搭配 Amazon S3 使用條件索引鍵的詳細資訊，請參閱服務授權參考**中的 [Amazon S3 的動作、資源和條件索引鍵](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)。

如需有關依照 S3 資源類型執行 S3 API 操作的必要權限的詳細資訊，請參閱 [Amazon S3 API 操作所需的許可](using-with-s3-policy-actions.md)。

## 將存取控制委派給存取點
<a name="access-points-directory-buckets-delegating-control"></a>

您可以將儲存貯體政策的存取控制，委派給存取點政策。下列範例儲存貯體政策允許完整存取儲存貯體擁有者帳戶所擁有的所有存取點。套用政策後，所有對此儲存貯體的存取都由存取點政策控制。我們建議您針對不需要直接存取儲存貯體的所有使用案例，以此方式設定儲存貯體。

**Example 將存取控制委派給存取點的儲存貯體政策**  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement" : [
    {
        "Effect": "Allow",
        "Principal" : { "AWS": "*" },
        "Action" : "*",
        "Resource" : [ "Bucket ARN",
        "Condition": {
            "StringEquals" : { "s3express:DataAccessPointAccount" : "Bucket owner's account ID" }
        }
    }]
}
```

## 授予跨帳戶存取點的許可
<a name="access-points-directory-buckets-cross-account"></a>

若要建立另一個帳戶所擁有之儲存貯體的存取點，您必須先指定儲存貯體名稱和帳戶擁有者 ID 來建立存取點。然後，儲存貯體擁有者必須更新儲存貯體政策，以授權來自存取點的請求。建立存取點類似於建立 DNS CNAME，其中存取點不會提供儲存貯體內容的存取權。所有儲存貯體存取權都由儲存貯體政策控制。下列範例儲存貯體政策允許儲存貯體上來自受信任 AWS 帳戶所擁有之存取點的 `GET` 和 `LIST` 請求。

將 *Bucket ARN* 取代為儲存貯體的 ARN。

**Example 將許可委派給另一個 的儲存貯體政策 AWS 帳戶**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement" : [
    {
        "Sid": "AllowCreateSessionForDirectoryBucket",
        "Effect": "Allow",
        "Principal" : { "AWS": "*" },
        "Action" : "s3express:CreateSession",
        "Resource" : [ "arn:aws:s3express:us-west-2:111122223333:bucket/amzn-s3-demo-bucket--usw2-az1--x-s3" ],
        "Condition": {
            "ForAllValues:StringEquals": {
                "s3express:Permissions": [
                    "GetObject",
                    "ListBucket"
                ]
            }
        }
    }]
}
```

# 監控和記錄目錄儲存貯體的存取點
<a name="access-points-directory-buckets-monitoring-logging"></a>

透過使用 AWS CloudTrail，您可以記錄透過存取點的請求，和對管理存取點之 API 的請求，例如 `CreateAccessPoint` 和 `GetAccessPointPolicy,`。透過存取點提出請求的 CloudTrail 日誌項目，會在日誌的 `resources` 部分中包含存取點 ARN (其中包括存取點名稱)。

舉例而言，假設您的組態如下：
+ 區域 `region` 中名為 `amzn-s3-demo-bucket--zone-id--x-s3` 的儲存貯體，其中包含名為 `my-image.jpg` 的物件。
+ 名為 `my-bucket-ap--zoneID--xa-s3` 的存取點與 `amzn-s3-demo-bucket--zone-id--x-s3` 相關聯
+ 的 AWS 帳戶 ID `123456789012`

下列範例顯示了先前組態的 CloudTrail 日誌項目的 `resources` 區段：

```
"resources": [
        {"type": "AWS::S3Express::Object",
        
            "ARN": "arn:aws:s3express-region:123456789012:bucket/amzn-s3-demo-bucket--zone-id--x-s3/my-image.jpg"
        },
        {"accountId": "c",
            "type": "AWS::S3Express::DirectoryBucket",
            "ARN": "arn:aws::s3express:region:123456789012:bucket/amzn-s3-demo-bucket--zone-id--x-s3"
        },
        {"accountId": "123456789012",
            "type": "AWS::S3::AccessPoint",
            "ARN": "arn:aws:s3express:region:123456789012:accesspoint/my-bucket-ap--zoneID--xa-s3"
        }
    ]
```

如需 的詳細資訊 AWS CloudTrail，請參閱[什麼是 AWS CloudTrail？](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) *AWS CloudTrail 《 使用者指南*》中的 。

# 建立目錄儲存貯體的存取點
<a name="creating-access-points-directory-buckets"></a>

和目錄儲存貯體一樣，存取點可以在可用區域或專用 Local Zones 中建立。存取點必須在與其相關聯的目錄儲存貯體相同的區域中建立。

存取點只會與一個 Amazon S3 目錄儲存貯體相關聯。如果您想要在 中使用目錄儲存貯體 AWS 帳戶，您必須先建立目錄儲存貯體。如需有關建立目錄儲存貯體的詳細資訊，請參閱 [在可用區域中建立目錄儲存貯體](directory-bucket-create.md) 或 [在本機區域中建立目錄儲存貯體](create-directory-bucket-LZ.md)。

只要知道儲存貯體名稱和儲存貯體擁有者的帳戶 ID，您就可以建立與另一個 AWS 帳戶中儲存貯體相關聯的跨帳戶存取點。不過，建立跨帳戶存取點並不會授予您存取儲存貯體中資料的權限，直到您獲授予儲存貯體擁有者的許可。儲存貯體擁有者必須透過儲存貯體政策授予存取點擁有者帳戶 (您的帳戶) 存取儲存貯體的權限。如需詳細資訊，請參閱[授予跨帳戶存取點的許可](access-points-policies.md#access-points-cross-account)。

您可以使用 AWS 管理主控台、、REST API 或 AWS SDKs AWS CLI為任何目錄儲存貯體建立存取點。每個存取點都與單一目錄儲存貯體相關聯，您可以在每個儲存貯體中建立數百個存取點。建立存取點時，您會選擇存取點的名稱，以及要與其相關聯的目錄儲存貯體。存取點名稱包含您提供的基底名稱，以及包括儲存貯體位置的區域 ID 的字尾，後面接著 `--xa-s3`。例如，`myaccesspoint-zoneID--xa-s3`。您也可以透過虛擬私有雲端 (VPC) 限制存取點的存取權。然後，您可以使用存取點的名稱立即開始讀取和寫入資料，就像使用目錄儲存貯體名稱一樣。

您可以使用存取點範圍，將透過存取點對目錄儲存貯體的存取，限制為特定字首或 API 操作。如果您未將範圍新增至存取點，則透過存取點存取時，目錄儲存貯體中的所有字首和所有 API 操作都可以針對儲存貯體中的物件來執行。建立存取點後，您可以使用、 AWS CLI AWS SDKs 或 REST API 新增、修改或刪除範圍。如需詳細資訊，請參閱[管理目錄儲存貯體的存取點範圍](access-points-directory-buckets-manage-scope.md)。

建立存取點之後，您可以設定存取點 IAM 資源政策。如需詳細資訊，請參閱[檢視、編輯或刪除存取點政策](access-points-directory-buckets-policy.md)。

## 使用 S3 主控台
<a name="access-points-directory-buckets-create-ap"></a>

**注意**  
您也可以從目錄儲存貯體畫面建立目錄儲存貯體的存取點。當您執行此操作時，系統會提供目錄儲存貯體名稱，而且您不需要在建立存取點時選擇儲存貯體。如需詳細資訊，請參閱[列出目錄儲存貯體](directory-buckets-objects-ListExamples.md)。

**建立目錄儲存貯體的存取點**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在頁面頂端的導覽列中，選擇目前顯示的名稱 AWS 區域。​接下來，選擇您要在其中建立存取點的區域。存取點必須在與相關聯儲存貯體相同的區域中建立。

1. 在左側導覽窗格中，選擇**目錄儲存貯體的存取點**。

1. 在 **Access Points** (存取點) 頁面上，選擇 **Create access point** (建立存取點)。

1. 您可以為您的帳戶或另一個帳戶中的目錄儲存貯體建立存取點。為另一個帳戶中的目錄儲存貯體建立存取點：
**注意**  
如果您在不同的 中使用儲存貯體 AWS 帳戶，儲存貯體擁有者必須更新儲存貯體政策，以授權來自存取點的請求。如需儲存貯體政策範例，請參閱「[授予跨帳戶存取點的許可](access-points-directory-buckets-policies.md#access-points-directory-buckets-cross-account)」。

   1. 在**目錄儲存貯**體欄位中，選擇**指定另一個帳戶中的儲存貯體**。

   1. 在**儲存貯體擁有者帳戶 ID** 欄位中，輸入擁有儲存貯體的 AWS 帳戶 ID。

   1. 在**儲存貯體名稱**欄位中，輸入儲存貯體的名稱，包含基本名稱和區域 ID。例如 ***bucket-base-name*--*zone-id*--x-s3**。

1. 為您帳戶中的目錄儲存貯體建立存取點：

   1. 在**目錄儲存貯**體欄位中，選取**選擇此帳戶中的儲存貯體**。

   1. 在**儲存貯體名稱**欄位中，輸入儲存貯體的名稱，包含基本名稱和區域 ID。例如 ***bucket-base-name*--*zone-id*--x-s3**。若要從清單中選擇儲存貯體，請選擇**瀏覽 S3**，然後選擇目錄儲存貯體。

1. 在**存取點名稱**中的**基本名稱**欄位，輸入存取點的基本名稱。區域 ID 和完整的存取點名稱隨即出現。如需存取點命名的詳細資訊，請參閱「[目錄儲存貯體存取點的命名規則](access-points-directory-buckets-restrictions-limitations-naming-rules.md#access-points-directory-buckets-names)」。

1. 在**網路來源**中，選擇**虛擬私有雲端 (VPC)** 或**網際網路**。如果選擇**虛擬私有雲端 (VPC)**，請在 **VPC ID** 欄位輸入要與存取點搭配使用的 VPC ID。

1. (選用) 在**存取點範圍**中，若要將範圍套用至此存取點，請選擇**使用字首或許可權限制此存取點的範圍**。

   1. 若要限制對目錄儲存貯體中字首的存取，請在**字首**中輸入一或多個字首。若要新增另一個字首，請選擇**新增字首**。若要移除字首，請選擇**移除**。
**注意**  
存取點範圍對所有字首的總字元數限制為 512 個字元。您可以查看**新增字首**底下剩餘的字元數。

   1. 在**許可**中，選擇存取點允許的一或多個 API 操作。若要移除資料操作，請選擇資料操作名稱旁的 **X**。

1. 若要不將範圍套用至存取點，並允許透過存取點存取目錄儲存貯體中的所有字首和所有 API 操作，請在**存取點範圍**內選擇**將存取權套用至整個儲存貯體**。

1. 選擇**建立目錄儲存貯體的存取點**。存取點名稱和與其相關的其他資訊，都會出現在**目錄儲存貯體的存取點**清單中。

## 使用 AWS CLI
<a name="creating-access-point-cli-directory-bucket"></a>

下列範例命令會為帳戶 *111122223333* 中的儲存貯體 **amzn-s3-demo-bucket*--*zone-id*--x-s3* 建立名為 *example-ap* 的存取點。

```
aws s3control create-access-point --name example-ap--zoneID--xa-s3 --account-id 111122223333 --bucket amzn-s3-demo-bucket--zone-id--x-s3
```

若要透過 VPC 限制使用存取點，請包含 `--vpc` 參數和 VPC ID。

```
aws s3control create-access-point --name example-ap--zoneID--xa-s3 --account-id 111122223333 --bucket amzn-s3-demo-bucket--zone-id--x-s3 --vpc vpc-id
```

當您為跨帳戶儲存貯體建立存取點時，請包含 `--bucket-account-id` 參數。下列範例命令會在 AWS 帳戶 *111122223333* 中為 擁有的儲存貯體 **amzn-s3-demo-bucket*--*zone-id*--x-s3* 建立存取點 AWS 帳戶 *444455556666*。

```
aws s3control create-access-point --name example-ap--zoneID--xa-s3 --account-id 111122223333 --bucket amzn-s3-demo-bucket--zone-id--x-s3 --bucket-account-id 444455556666
```

如需詳細資訊和範例，請參閱《 AWS CLI 命令參考》中的 [create-access-point](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/create-access-point.html)。

## 使用 REST API
<a name="creating-access-point-directory-bucket-rest-api"></a>

下列範例命令會為帳戶 *111122223333* 中的儲存貯體 **amzn-s3-demo-bucket*--*zone-id*--x-s3*，建立名為 *example-ap* 的存取點，並透過 VPC *vpc-id* (選用) 限制存取。

```
PUT /v20180820/accesspoint/example-ap--zoneID--xa-s3 HTTP/1.1
Host: s3express-control.region.amazonaws.com
x-amz-account-id: 111122223333
<?xml version="1.0" encoding="UTF-8"?>
<CreateAccessPointRequest>
   <Bucket>amzn-s3-demo-bucket--zone-id--x-s3s</Bucket>
   <BucketAccountId>111122223333</BucketAccountId>
   <VpcConfiguration>
       <VpcId>vpc-id</VpcId>
   </VpcConfiguration>
</CreateAccessPointRequest>
```

回應：

```
HTTP/1.1 200
<?xml version="1.0" encoding="UTF-8"?>
<CreateAccessPointResult>
   <AccessPointArn>
       "arn:aws:s3express:region:111122223333:accesspoint/example-ap--zoneID--xa-s3"
   </AccessPointArn>
   <Alias>example-ap--zoneID--xa-s3</Alias>
</CreateAccessPointResult>
```

## 使用 AWS SDKs
<a name="creating-access-point-directory-bucket-sdk"></a>

您可以使用 AWS SDKs來建立存取點。如需詳細資訊，請參閱《Amazon Simple Storage Service API 參考》中的[支援的 SDK 清單](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPoint.html#API_control_CreateAccessPoint_SeeAlso)。

# 管理目錄儲存貯體的存取點
<a name="access-points-directory-buckets-manage"></a>

本節說明如何使用 AWS Command Line Interface、Amazon S3 REST API 或 AWS SDK 管理目錄儲存貯體的存取點。

**Topics**
+ [列出目錄儲存貯體的存取點](access-points-directory-buckets-list.md)
+ [檢視目錄儲存貯體的存取點詳細資訊](access-points-directory-buckets-details.md)
+ [檢視、編輯或刪除存取點政策](access-points-directory-buckets-policy.md)
+ [管理目錄儲存貯體的存取點範圍](access-points-directory-buckets-manage-scope.md)
+ [刪除目錄儲存貯體的存取點](access-points-directory-buckets-delete.md)

# 列出目錄儲存貯體的存取點
<a name="access-points-directory-buckets-list"></a>

本節說明如何使用 AWS 管理主控台、 AWS Command Line Interface (AWS CLI)、REST API 或 AWS SDKs 列出目錄儲存貯體的存取點。

## 使用 S3 主控台
<a name="access-points-directory-buckets-list-console"></a>

**在 中列出存取點 AWS 帳戶**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在頁面頂端的導覽列中，選擇目前顯示的名稱 AWS 區域。接下來，選擇您要列出存取點的區域。

1. 在主控台左側導覽窗格中，選擇**目錄儲存貯體的存取點**。

1. (選用) 依名稱搜尋存取點。只有所選存取點 AWS 區域 才會顯示在這裡。

1. 選擇您要管理的存取點的名稱。

## 使用 AWS CLI
<a name="access-points-directory-buckets-list-cli"></a>

下列`list-access-points-for-directory-buckets`範例命令顯示如何使用 AWS CLI 列出 AWS 帳戶擁有並與目錄儲存貯體相關聯的存取點。

下列命令會列出連接到儲存貯體 **amzn-s3-demo-bucket*--*zone-id*--x-s3* 的 AWS 帳戶 *111122223333* 存取點。

```
aws s3control list-access-points-for-directory-buckets --account-id 111122223333 --directory-bucket amzn-s3-demo-bucket--zone-id--x-s3
```

如需詳細資訊和範例，請參閱《 AWS CLI 命令參考》中的 [list-access-points-for-directory-buckets](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/list-access-points-for-directory-buckets.html)。

## 使用 REST API
<a name="access-points-directory-buckets-list-rest"></a>

下列範例示範如何使用 REST API 列出存取點。

```
GET /v20180820/directoryaccesspoint?directoryBucket=amzn-s3-demo-bucket--zone-id--x-s3
&maxResults=maxResults HTTP/1.1
Host: s3express-control.region.amazonaws.com 
x-amz-account-id: 111122223333
```

**Example `ListAccessPointsForDirectoryBuckets` 回應的範例**  

```
HTTP/1.1 200
<?xml version="1.0" encoding="UTF-8"?>
<ListDirectoryAccessPointsResult>
    <AccessPointList>
        <AccessPoint>
            <AccessPointArn>arn:aws:s3express:region:111122223333:accesspoint/example-access-point--zoneID--xa-s3</AccessPointArn>
            <Alias>example-access-point--zoneID--xa-s3</Alias>
            <Bucket>amzn-s3-demo-bucket--zone-id--x-s3</Bucket>
            <BucketAccountId>111122223333</BucketAccountId>
            <Name>example-access-point--zoneID--xa-s3</Name>
            <NetworkOrigin>VPC</NetworkOrigin>
            <VpcConfiguration>
                <VpcId>VPC-1</VpcId>
            </VpcConfiguration>
        </AccessPoint>    
    </AccessPointList>  
</ListDirectoryAccessPointsResult>
```

## 使用 AWS SDKs
<a name="access-points-directory-buckets-list-sdk"></a>

您可以使用 AWS SDKs列出存取點。如需詳細資訊，請參閱《Amazon Simple Storage Service API 參考》中的[支援的 SDK 清單](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessPointsForDirectoryBuckets.html#API_control_ListAccessPointsForDirectoryBuckets_SeeAlso)。

# 檢視目錄儲存貯體的存取點詳細資訊
<a name="access-points-directory-buckets-details"></a>

本節說明如何使用 AWS 管理主控台、、 AWS CLI AWS SDKs或 REST API 檢視目錄儲存貯體存取點的詳細資訊。

## 使用 S3 主控台
<a name="access-points-details-console"></a>

檢視目錄儲存貯體存取點的詳細資訊，以查看下列有關存取點和相關聯目錄儲存貯體的資訊：
+ 屬性：
  + 目錄儲存貯體名稱
  + 目錄儲存貯體擁有者帳戶 ID
  + AWS 區域
  + 目錄儲存貯體位置類型
  + 目錄儲存貯體位置名稱
  + 存取點的建立日期
  + 網路來源
  + VPC ID
  + S3 URI
  + 存取點 ARN
  + 存取點別名
+ 許可：
  + IAM 外部存取分析器調查結果
  + 存取點範圍
  + 存取點政策

**在 中檢視存取點的詳細資訊 AWS 帳戶**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在頁面頂端的導覽列中，選擇目前顯示的名稱 AWS 區域。接下來，選擇您要列出存取點的區域。

1. 在主控台左側導覽窗格中，選擇**目錄儲存貯體的存取點**。

1. (選用) 依名稱搜尋存取點。只有所選存取點 AWS 區域 才會顯示在這裡。

1. 選擇您要管理的存取點的名稱。

1. 選擇**屬性**標籤或**許可**標籤。

## 使用 AWS CLI
<a name="access-points-directory-buckets-details-cli"></a>

下列`get-access-point`範例命令顯示如何使用 AWS CLI 來檢視存取點的詳細資訊。

下列命令會列出存取點 **my-access-point*--*zoneID*--xa-s3* for AWS 帳戶 *111122223333* 的詳細資訊。

```
aws s3control get-access-point --name my-access-point--zoneID--xa-s3 --account-id 111122223333
```

**Example `get-access-point` 命令的輸出**  

```
{
    "Name": "example-access-point--zoneID--xa-s3",
    "Bucket": "amzn-s3-demo-bucket--zone-id--x-s3",
    "NetworkOrigin": "Internet",
    "PublicAccessBlockConfiguration": {
        "BlockPublicAcls": true,
        "IgnorePublicAcls": true,
        "BlockPublicPolicy": true,
        "RestrictPublicBuckets": true
    },
    "CreationDate": "2025-04-23T18:26:22.146000+00:00",
    "Alias": "example-access-point--zoneID--xa-s3",
    "AccessPointArn": "arn:aws:s3express:region:111122223333:accesspoint/example-access-point--zoneID--xa-s3",
    "BucketAccountId": "296805379465"
}
```

如需詳細資訊和範例，請參閱AWS CLI 命令參考**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/get-access-point.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/get-access-point.html)。

## 使用 REST API
<a name="access-points-directory-buckets-details-rest"></a>

您可以使用 REST API 來檢視存取點的詳細資訊。如需詳細資訊，請參閱《Amazon Simple Storage Service API 參考》**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPoint.html)。

## 使用 AWS SDKs
<a name="access-points-directory-buckets-details-sdk"></a>

您可以使用 AWS SDKs來檢視存取點的詳細資訊。如需詳細資訊，請參閱《Amazon Simple Storage Service API 參考》中的[支援的 SDK 清單](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPoint.html#API_control_GetAccessPoint_SeeAlso)。

# 檢視、編輯或刪除存取點政策
<a name="access-points-directory-buckets-policy"></a>

您可以使用 AWS Identity and Access Management (IAM) 存取點政策來控制可存取存取點的主體和資源。存取點範圍會管理存取點的字首和 API 許可。您可以使用 REST API 或 AWS SDKs 建立 AWS Command Line Interface、編輯和刪除存取點政策。如需存取點範圍的詳細資訊，請參閱 [管理目錄儲存貯體的存取點範圍](access-points-directory-buckets-manage-scope.md)。

**注意**  
由於目錄儲存貯體使用工作階段型授權，因此您的政策必須一律包含 `s3express:CreateSession` 動作。

## 使用 S3 主控台
<a name="access-point-directory-bucket-edit-policy-console"></a>

**檢視、編輯或刪除存取點政策**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 開啟 Amazon S3 主控台。

1. 在頁面頂端的導覽列中，選擇目前顯示的名稱 AWS 區域。接下來，選擇您要列出存取點的區域。

1. 在主控台左側導覽窗格中，選擇**目錄儲存貯體的存取點**。

1. (選用) 依名稱搜尋存取點。只有所選存取點 AWS 區域 才會顯示在這裡。

1. 選擇您要管理的存取點的名稱。

1. 選擇**許可**索引標籤。

1. 若要建立或編輯存取點政策，請在**存取點政策**中選擇**編輯**。編輯政策。選擇**儲存**。

1. 若要刪除存取點政策，請在**存取點政策**中選擇**刪除**。在**刪除存取點政策**視窗中，輸入 **confirm**，並選擇**刪除**。

## 使用 AWS CLI
<a name="access-points-directory-buckets-edit-policy-cli"></a>

您可以使用 `get-acccess-point-policy`、`put-access-point-policy` 和 `delete-access-point-policy` 命令來檢視、編輯或刪除存取點政策。如需詳細資訊，請參閱《 AWS CLI 命令參考[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/delete-access-point-policy.html#delete-access-point-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/delete-access-point-policy.html#delete-access-point-policy)》中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/get-access-point-policy.html#get-access-point-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/get-access-point-policy.html#get-access-point-policy)[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/put-access-point-policy.html#put-access-point-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/put-access-point-policy.html#put-access-point-policy)、 或 。

## 使用 REST API
<a name="access-points-directory-buckets-edit-policy-rest"></a>

您可以使用 REST API `GetAccessPointPolicy`、`DeleteAccessPointPolicy` 和 `PutAccessPointPolicy` 操作來檢視、刪除或編輯存取點政策。如需詳細資訊，請參閱《Amazon Simple Storage Service API 參考》中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutAccessPointPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutAccessPointPolicy.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPointPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPointPolicy.html) 或 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPointPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPointPolicy.html)。

## 使用 AWS SDKs
<a name="access-points-directory-buckets-edit-policy-sdk"></a>

您可以使用 AWS SDKs來檢視、刪除或編輯存取點政策。如需詳細資訊，請參閱《Amazon Simple Storage Service API 參考》中的 [GetAccessControlPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPointPolicy.html#API_control_PutAccessPointPolicy_SeeAlso)、[DeleteAccessControlPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPointPolicy.html#API_control_PutAccessPointPolicy_SeeAlso) 和 [PutAccessControlPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutAccessPointPolicy.html#API_control_PutAccessPointPolicy_SeeAlso) 的支援 SDK 清單。

# 管理目錄儲存貯體的存取點範圍
<a name="access-points-directory-buckets-manage-scope"></a>

本節說明如何使用 AWS Command Line Interface、REST API 或 AWS SDKs 來檢視和修改目錄儲存貯體的存取點範圍。您可以使用存取點範圍來限制對特定字首或 API 操作的存取。

**Topics**
+ [檢視目錄儲存貯體的存取點範圍](#access-points-directory-buckets-view-scope)
+ [修改目錄儲存貯體的存取點範圍](#access-points-directory-buckets-modify-scope)
+ [刪除目錄儲存貯體的存取點範圍](#access-points-directory-buckets-delete-scope)

## 檢視目錄儲存貯體的存取點範圍
<a name="access-points-directory-buckets-view-scope"></a>

您可以使用 AWS 管理主控台 AWS Command Line Interface、、REST API 或 AWS SDKs 來檢視目錄儲存貯體的存取點範圍。

### 使用 S3 主控台
<a name="access-points-directory-buckets-view-scope-console"></a>

**檢視目錄儲存貯體的存取點範圍**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在頁面頂端的導覽列中，選擇目前顯示的名稱 AWS 區域。接下來，選擇您要列出存取點的區域。

1. 在主控台左側導覽窗格中，選擇**目錄儲存貯體的存取點**。

1. (選用) 依名稱搜尋存取點。只有所選存取點 AWS 區域 才會顯示在這裡。

1. 選擇您要管理的存取點的名稱。

1. 選擇**許可**索引標籤。

1. 在**存取點範圍**中，您可以看到套用至存取點的字首和許可權。

### 使用 AWS CLI
<a name="access-points-directory-buckets-view-scope-cli"></a>

下列`get-access-point-scope`範例命令顯示如何使用 AWS CLI 來檢視存取點的範圍。

下列命令顯示存取點 **my-access-point**--*zoneID*--xa-s3 for AWS 帳戶 *111122223333* 的範圍。

```
aws s3control get-access-point-scope --name my-access-point--zoneID--xa-s3 --account-id 111122223333      
```

如需詳細資訊和範例，請參閱《 AWS CLI 命令參考》中的 [get-access-point-scope](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/get-access-point-scope.html)。

**Example `get-access-point-scope` 的結果**  

```
{
    "Scope": {
        "Permissions": [
            "ListBucket",
            "PutObject"
        ]
  "Prefixes": [
            "Prefix": "MyPrefix1*",
            "Prefix": "MyObjectName.csv"
        ]
    }
}
```

### 使用 REST API
<a name="access-points-directory-buckets-view-scope-rest-api"></a>

下列 `GetAccessPointScope` 範例請求示範如何使用 REST API 來檢視存取點的範圍。

以下請求顯示存取點 **my-access-point**--*region*-*zoneID*--xa-s3 for AWS 帳戶 *111122223333* 的範圍。

```
GET /v20180820/accesspoint/my-access-point--zoneID--xa-s3/scope HTTP/1.1 
Host: s3express-control.region.amazonaws.com 
x-amz-account-id: 111122223333
```

**Example `GetAccessPointScope` 的結果**  

```
      HTTP/1.1 200
      <?xml version="1.0" encoding="UTF-8"?>
      <GetAccessPointScopeResult>    
          <Scope>            
              <Prefixes>                
                  <Prefix>MyPrefix1*</Prefix>
                  <Prefix>MyObjectName.csv</Prefix>
              </Prefixes>            
              <Permissions>                 
                  <Permission>ListBucket</Permission>                 
                  <Permission>PutObject</Permission>
              </Permissions>     
              <Scope>
      </GetAccessPointScopeResult>
```

### 使用 AWS SDKs
<a name="access-points-directory-buckets-view-scope-sdk"></a>

您可以使用 AWS SDKs來檢視存取點的範圍。如需詳細資訊，請參閱《Amazon Simple Storage Service API 參考》中的[支援的 SDK 清單](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPointScope.html#API_control_GetAccessPointScope_SeeAlso)。

## 修改目錄儲存貯體的存取點範圍
<a name="access-points-directory-buckets-modify-scope"></a>

您可以使用 AWS 管理主控台 AWS Command Line Interface、、REST API 或 AWS SDKs來修改目錄儲存貯體的存取點範圍。存取點範圍可用來限制對特定字首、API 操作，或上述兩者組合的存取權。

您可以包含下列一或多項 API 操作做為許可權：
+ `PutObject`
+ `GetObject`
+ `DeleteObject`
+ `ListBucket` (`ListObjectsV2` 所需)
+ `GetObjectAttributes`
+ `AbortMultipartUploads`
+ `ListBucketMultipartUploads`
+ `ListMultipartUploadParts`

**注意**  
您可以指定任意數量的字首，但所有字首的總字元長度必須小於 256 個位元組。

### 使用 S3 主控台
<a name="access-points-directory-buckets-modify-scope-console"></a>

**修改存取點範圍**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在頁面頂端的導覽列中，選擇目前顯示的名稱 AWS 區域。接下來，選擇您要列出存取點的區域。

1. 在主控台左側導覽窗格中，選擇**目錄儲存貯體的存取點**。

1. (選用) 依名稱搜尋存取點。只有所選存取點 AWS 區域 才會顯示在這裡。

1. 選擇您要管理的存取點的名稱。

1. 選擇**許可**索引標籤。

1. 在**存取點政策**區段選擇**編輯**。

1. 新增或移除字首：

   1. 若要新增字首，請選擇**新增字首**。在**字首**欄位中，輸入目錄儲存貯體的字首。重複以新增更多字首。

   1. 若要移除字首，請選擇**移除**。

1. 新增或移除許可權：

   1. 若要新增許可權，請在**選擇資料操作**欄位中選擇許可權。

   1. 若要移除許可權，請選擇許可權旁的 **X**。

1. 選擇**儲存變更**。

### 使用 AWS CLI
<a name="access-points-directory-buckets-modify-scope-cli"></a>

下列`put-access-point-scope`範例命令顯示如何使用 AWS CLI 來修改存取點的範圍。

下列命令修改 **my-access-point**--*zoneID*--xa-s3 for AWS 帳戶 *111122223333* 的存取點範圍。

**注意**  
您可以透過使用星號 (\$1) 字元，在字首中使用萬用字元。如果您想要將星號字元當成文字來使用，請在其前面加上反斜線字元 (\$1) 進行轉義。  
所有字首都隱含一個 '\$1' 結尾，這表示字首內的所有路徑都包含在內。  
當您使用 修改存取點的範圍時 AWS CLI，您可以取代現有的範圍。

```
aws s3control put-access-point-scope --name my-access-point--zoneID--xa-s3 --account-id 111122223333 --scope Prefixes=string,Permissions=string
```

如需詳細資訊和範例，請參閱《 AWS CLI 命令參考》中的 [put-access-point-scope](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/put-access-point-scope.html)。

### 使用 REST API
<a name="access-points-directory-buckets-modify-scope-rest-api"></a>

下列 `PutAccessPointScope` 範例請求示範如何使用 REST API 來修改存取點的範圍。

下列請求修改 **my-access-point**--*zoneID*--xa-s3 for AWS 帳戶 *111122223333* 的存取點範圍。

**注意**  
您可以透過使用星號 (\$1) 字元，在字首中使用萬用字元。如果您想要將星號字元當成文字來使用，請在其前面加上反斜線字元 (\$1) 進行轉義。  
所有字首都隱含一個 '\$1' 結尾，這表示字首內的所有路徑都包含在內。  
當您使用 API 修改存取點的範圍時，您可以取代現有的範圍。

```
PUT /v20180820/accesspoint/my-access-point--zoneID--xa-s3/scope HTTP/1.1 
Host: s3express-control.region.amazonaws.com 
x-amz-account-id: 111122223333
<?xml version="1.0" encoding="UTF-8"?>
<PutAccessPointScopeRequest>   
        <Scope>        
            <Prefixes>        
                <Prefix>Jane/*</Prefix>              
            </Prefixes>       
            <Permissions>        
                <Permission>PutObject</Permission>
                <Permission>GetObject</Permission>
            </Permissions>   
            <Scope>
    </PutAccessPointScopeRequest>
```

### 使用 AWS SDKs
<a name="access-points-directory-buckets-modify-scope-sdk"></a>

您可以使用 AWS CLI、 AWS SDKs或 REST API 來修改存取點的範圍。如需詳細資訊，請參閱《Amazon Simple Storage Service API 參考》中的[支援的 SDK 清單](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutAccessPointScope.html#API_control_PutAccessPointScope_SeeAlso)。

## 刪除目錄儲存貯體的存取點範圍
<a name="access-points-directory-buckets-delete-scope"></a>

您可以使用 AWS 管理主控台 AWS Command Line Interface、、REST API 或 AWS SDKs 來刪除目錄儲存貯體的存取點範圍。

**注意**  
當您刪除存取點的範圍時，所有字首和許可權都會一併刪除。

### 使用 S3 主控台
<a name="access-points-directory-buckets-delete-scope-console"></a>

**刪除存取點範圍**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 在頁面頂端的導覽列中，選擇目前顯示的名稱 AWS 區域。接下來，選擇您要列出存取點的區域。

1. 在主控台左側導覽窗格中，選擇**目錄儲存貯體的存取點**。

1. (選用) 依名稱搜尋存取點。只有所選存取點 AWS 區域 才會顯示在這裡。

1. 選擇您要管理的存取點的名稱。

1. 選擇**許可**索引標籤。

1. 在**存取點範圍**中，選擇**刪除**。

1. 在**若要確認此刪除，請鍵入「確認」**欄位中，輸入 **confirm**。

1. 選擇 **刪除**。

### 使用 AWS CLI
<a name="access-points-directory-buckets-delete-scope-cli"></a>

下列`delete-access-point-scope`範例命令顯示如何使用 AWS CLI 刪除存取點的範圍。

下列命令會刪除存取點 **my-access-point**--*zoneID*--xa-s3 for AWS 帳戶 *111122223333* 的範圍。

```
aws s3control delete-access-point-scope --name my-access-point--region-zoneID--xa-s3 --account-id 111122223333
```

如需詳細資訊和範例，請參閱《 AWS CLI 命令參考》中的 [delete-access-point-scope](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/delete-access-point-scope.html)。

### 使用 REST API
<a name="access-points-directory-buckets-delete-scope-rest-api"></a>

下列請求會刪除存取點 **my-access-point**--*zoneID*--xa-s3 for AWS 帳戶 *111122223333* 的範圍。

```
DELETE /v20180820/accesspoint/my-access-point--zoneID--xa-s3/scope HTTP/1.1 
Host: s3express-control.region.amazonaws.com 
x-amz-account-id: 111122223333
```

### 使用 AWS SDKs
<a name="access-points-directory-buckets-delete-scope-sdk"></a>

您可以使用 AWS SDKs來刪除存取點的範圍。如需詳細資訊，請參閱《Amazon Simple Storage Service API 參考》中的[支援的 SDK 清單](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPointScope.html#API_control_DeleteAccessPointScope_SeeAlso)。

# 刪除目錄儲存貯體的存取點
<a name="access-points-directory-buckets-delete"></a>

本節說明如何使用 AWS 管理主控台、 AWS Command Line Interface、REST API 或 AWS SDKs刪除存取點。

**注意**  
您必須先刪除存取點，才能刪除連接至存取點的目錄儲存貯體。

## 使用 S3 主控台
<a name="access-points-directory-buckets-delete-console"></a>

**刪除 中目錄儲存貯體的存取點 AWS 帳戶**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 開啟 Amazon S3 主控台。

1. 在頁面頂端的導覽列中，選擇目前顯示的名稱 AWS 區域。接下來，選擇您要列出存取點的區域。

1. 在主控台左側導覽窗格中，選擇**目錄儲存貯體的存取點**。

1. (選用) 依名稱搜尋存取點。只有所選存取點 AWS 區域 才會顯示在這裡。

1. 選擇您要刪除的存取點的名稱。

1. 選擇 **刪除**。

1. 要確認刪除，請輸入 **confirm**，並選擇**刪除**。

## 使用 AWS CLI
<a name="access-points-directory-buckets-delete-cli"></a>

下列`delete-access-point`範例命令顯示如何使用 AWS CLI 刪除存取點。

下列命令會刪除存取點 **my-access-point**--*zoneID*--xa-s3 for AWS 帳戶 *111122223333*。

```
aws s3control delete-access-point --name my-access-point--zoneID--xa-s3 --account-id 111122223333      
```

如需詳細資訊和範例，請參閱AWS CLI 命令參考**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/delete-access-point.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/delete-access-point.html)。

## 使用 REST API
<a name="access-points-directory-buckets-delete-rest"></a>

您可以使用 REST API 刪除存取點。如需詳細資訊，請參閱《Amazon Simple Storage Service API 參考》**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPoint.html)。

## 使用 AWS SDKs
<a name="access-points-directory-buckets-delete-sdk"></a>

您可以使用 AWS SDKs來刪除存取點。如需詳細資訊，請參閱《Amazon Simple Storage Service API 參考》中的[支援的 SDK 清單](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPoint.html#API_control_DeleteAccessPoint_SeeAlso)。

# 搭配使用標籤與目錄儲存貯體的 S3 存取點
<a name="access-points-db-tagging"></a>

 AWS 標籤是金鑰值對，可保留資源的中繼資料，在此情況下為目錄儲存貯體的 Amazon S3 存取點。您可以在建立存取點或管理現有存取點上的標籤時，標記存取點。如需有關標籤的一般資訊，請參閱 [成本分配或屬性型存取控制 (ABAC) 的標記](tagging.md)。

**注意**  
對於目錄儲存貯體的存取點使用標籤，除了標準的 S3 API 請求費率之外，不會收取額外費用。如需詳細資訊，請參閱 [Simple Storage Service (Amazon S3) 定價](https://aws.amazon.com/s3/pricing/)。

## 使用標籤與目錄儲存貯體存取點的常見方法
<a name="common-ways-to-use-tags-access-points-db"></a>

屬性型存取控制 (ABAC) 可讓您擴展存取權限，並根據目錄儲存貯體的標籤授予存取點的存取權。如需有關在 Amazon S3 中使用 ABAC 的詳細資訊，請參閱[使用 ABAC 的標籤](https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac)。

### S3 存取點的 ABAC
<a name="abac-for-access-points-db"></a>

Amazon S3 Access Points 支援使用標籤的屬性型存取控制 (ABAC)。在您的 AWS 組織、IAM 和存取點政策中使用標籤型條件金鑰。對於企業，Amazon S3 中的 ABAC 支援跨多個 AWS 帳戶進行授權。

在您的 IAM 政策中，您可以透過使用下列[全域條件索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys)，根據儲存貯體的標籤來控制對目錄儲存貯體存取點的存取：
+ `aws:ResourceTag/key-name`
  + 使用此鍵來將您在政策中所指定的標籤鍵值對與連接到資源的鍵值對進行比較。例如，您可以要求只在資源擁有連接標籤鍵 `Dept` 和值 `Marketing` 時才允許資源的存取。如需詳細資訊，請參閱[控制對 AWS 資源的存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources)。
+ `aws:RequestTag/key-name`
  + 使用此鍵來將請求中傳遞的標籤鍵/值對與您在政策中所指定的標籤對進行比較。例如，您可以檢查請求是否包含標籤鍵 `Dept` 並且其具有值 `Accounting`。如需詳細資訊，請參閱在[AWS 請求期間控制存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-requests)。您可以使用此條件索引鍵，限制在 `TagResource` 和 `CreateAccessPoint` API 操作期間可以傳遞哪些標籤鍵值對。
+ `aws:TagKeys`
  + 使用此鍵來將請求中的標籤鍵與您在政策中所指定的鍵進行比較。當使用政策來控制使用標籤的存取時，建議您使用 `aws:TagKeys` 條件鍵來定義允許的標籤鍵。如需範例政策和詳細資訊，請參閱[根據標籤金鑰控制存取權限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-tag-keys)。您可以為具有標籤的目錄儲存貯體建立存取點。若要在 `CreateAccessPoint` API 操作期間允許標記，您必須建立同時包含 `s3express:TagResource` 和 `s3express:CreateAccessPoint` 動作的政策。然後，您可以使用 `aws:TagKeys` 條件索引鍵，以強制在 `CreateAccessPoint` 請求中使用特定的標籤。
+ `s3express:AccessPointTag/tag-key`
  + 使用此條件索引鍵，透過使用標籤的存取點來授予特定資料的許可權。在 IAM 政策中使用 `aws:ResourceTag/tag-key` 時，存取點和存取點指向的儲存貯體，都需要具有相同標籤，因為在與授權期間兩者都會考量到。如果您只想透過存取點標籤來控制對資料的存取，則可以使用 `s3express:AccessPointTag/tag-key` 條件索引鍵。

### 目錄儲存貯體存取點的 ABAC 政策範例
<a name="example-access-points-db-abac-policies"></a>

請參閱下列適用於目錄儲存貯體存取點的 ABAC 政策的範例。

#### 1.1 - IAM 政策，可建立或修改具有特定標籤的存取點
<a name="example-access-points-db-user-policy-request-tag"></a>

在此 IAM 政策中，具有此政策的使用者或角色只有在存取點於存取點建立請求中，以標籤索引鍵 `project` 和標籤值 `Trinity` 來標記存取點時，才能建立存取點。只要 `TagResource` 請求包含標籤鍵值對 `project:Trinity`，他們也可以在目錄儲存貯體的現有存取點上新增或修改標籤。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CreateAccessPointWithTags",
      "Effect": "Allow",
      "Action": [
        "s3express:CreateAccessPoint",
        "s3express:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/project": [
            "Trinity"
          ]
        }
      }
    }
  ]
}
```

#### 1.2 - 存取點政策，可使用標籤限制儲存貯體上的操作
<a name="example-access-points-db-user-policy-resource-tag"></a>

在此存取點政策中，只要在存取點 `project` 標籤的值符合主體的 `project` 標籤值時，IAM 主體 (使用者和角色) 就能在存取點上使用 `CreateSession` 動作來執行操作。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowObjectOperations",
      "Effect": "Allow",
      "Principal": {
        "AWS": "111122223333"
      },
      "Action": "s3express:CreateSession",
      "Resource": "arn:aws::s3express:region:111122223333:access-point/my-access-point",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        }
      }
    }
  ]
}
```

#### 1.3 - IAM 政策，可修改維護標記治理之現有資源上的標籤
<a name="example-access-points-db-user-policy-tag-keys"></a>

在此 IAM 政策中，只有在存取點的 `project` 標籤值符合主體的 `project` 標籤值時，IAM 主體 (使用者或角色) 才能修改存取點上的標籤。這些存取點只允許 `aws:TagKeys` 條件索引鍵中指定的四個標籤 `project`、`environment`、`owner` 和 `cost-center`。這有助於強制執行標籤治理、防止未經授權的標籤修改，並且使所有存取點的標記結構描述保持一致。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnforceTaggingRulesOnModification",
      "Effect": "Allow",
      "Action": [
        "s3express:TagResource"
      ],
      "Resource": "arn:aws::s3express:region:111122223333:accesspoint/my-access-point",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "project",
            "environment",
            "owner",
            "cost-center"
          ]
        }
      }
    }
  ]
}
```

#### 1.4 - 使用 s3express:AccessPointTag 條件索引鍵
<a name="example-access-points-db-policy-bucket-tag"></a>

在此 IAM 政策中，只有在用於存取儲存貯體的存取點具有標籤索引鍵 `Environment` 和標籤值 `Production` 時，條件陳述式才會允許存取儲存貯體的資料。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessToSpecificAccessPoint",
      "Effect": "Allow",
      "Action": "*",
      "Resource": "arn:aws::s3express:region:111122223333:accesspoint/my-access-point",
      "Condition": {
        "StringEquals": {
          "s3express:AccessPointTag/Environment": "Production"
        }
      }
    }
  ]
}
```

## 使用目錄儲存貯體存取點的標籤
<a name="working-with-tags-access-points-db"></a>

您可以使用 Amazon S3 主控台、 AWS 命令列界面 (CLI)、 AWS SDKs 或使用 S3 APIs：[TagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_TagResource.html)、[UntagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UntagResource.html) 和 [ListTagsForResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListTagsForResource.html)，為目錄儲存貯體新增或管理存取點的標籤。如需詳細資訊，請參閱：

**Topics**
+ [使用標籤與目錄儲存貯體存取點的常見方法](#common-ways-to-use-tags-access-points-db)
+ [使用目錄儲存貯體存取點的標籤](#working-with-tags-access-points-db)
+ [建立具有標籤的目錄儲存貯體的存取點](access-points-db-create-tag.md)
+ [將標籤新增至目錄儲存貯體的存取點](access-points-db-tag-add.md)
+ [檢視目錄儲存貯體存取點的標籤](access-points-db-tag-view.md)
+ [從目錄儲存貯體的存取點刪除標籤](access-points-db-tag-delete.md)

# 建立具有標籤的目錄儲存貯體的存取點
<a name="access-points-db-create-tag"></a>

建立目錄儲存貯體時，您可以在為其標記 Amazon S3 Access Points。如需其他資訊，請參閱 [搭配使用標籤與目錄儲存貯體的 S3 存取點](access-points-db-tagging.md)。

## 許可
<a name="access-points-db-create-tag-permissions"></a>

若要建立具有標籤的目錄儲存貯體的存取點，您必須具有下列許可權：
+ `s3express:CreateAccessPoint`
+ `s3express:TagResource`

## 故障診斷錯誤
<a name="access-points-db-create-tag-troubleshooting"></a>

如果您在嘗試建立具有標籤的目錄儲存貯體的存取點時發生錯誤，您可以執行下列動作：
+ 確認您擁有為目錄儲存貯體建立存取點，並為其新增標籤時所需的 [許可](#access-points-db-create-tag-permissions)。
+ 檢查您的 IAM 使用者政策是否具備任何屬性型存取控制 (ABAC) 條件。您可能需要使用特定的標籤索引鍵和值，才能標記目錄儲存貯體的存取點。如需詳細資訊，請參閱[使用屬性型存取控制 (ABAC) 的標籤](tagging.md#using-tags-for-abac)。

## 步驟
<a name="access-points-db-create-tag-steps"></a>

您可以使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI)、Amazon S3 REST API 和 AWS SDKs，為套用標籤的目錄儲存貯體建立存取點。

## 使用 S3 主控台
<a name="access-points-db-create-tag-console"></a>

若要使用 Amazon S3 主控台建立具有標籤的目錄儲存貯體的存取點：

1. 從 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 登入 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**存取點 (目錄儲存貯體)**。

1. 選擇**建立存取點**以建立新存取點。

1. 輸入存取點的名稱。如需詳細資訊，請參閱[目錄儲存貯體的存取點命名規則、限制和約束](access-points-directory-buckets-restrictions-limitations-naming-rules.md)。

1. 在**建立存取點**頁面上，**標籤**是建立新存取點時的選項。

1. 選擇**新增標籤**以開啟標籤編輯器，然後輸入標籤鍵值對。標籤鍵為必要項，但標籤是選用的。

1. 若要新增另一個標籤，請再次選擇**新增標籤**。您最多能輸入 50 個鍵值對。

1. 完成指定新存取點的選項後，請選擇**建立存取點**。

## 使用 AWS SDKs
<a name="access-points-db-create-tag-sdks"></a>

------
#### [ SDK for Java 2.x ]

此範例示範如何藉由使用 AWS SDK for Java 2.x建立具有標籤的存取點。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
CreateAccessPointRequest createAccessPointRequest = CreateAccessPointRequest.builder()
                .accountId(111122223333)
                .name(my-access-point)
                .bucket(amzn-s3-demo-bucket--zone-id--x-s3)
                .tags(Collections.singletonList(Tag.builder().key("key1").value("value1").build()))
                .build();
 awss3Control.createAccessPoint(createAccessPointRequest);
```

------

## 使用 REST API
<a name="access-points-db-create-tag-api"></a>

如需有關 Amazon S3 REST API 對於建立具有標籤的存取授權的目錄儲存貯體的支援資訊，請參閱《Amazon Simple Storage Service API 參考》**中的以下區段：
+ [CreateBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)

## 使用 AWS CLI
<a name="access-points-db-create-tag-cli"></a>

若要安裝 AWS CLI，請參閱《 [AWS 使用者指南》中的安裝 CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。 *AWS Command Line Interface *

下列 CLI 範例示範如何使用 AWS CLI建立具有標籤的目錄儲存貯體的存取點。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

建立目錄儲存貯體的存取點時，您必須提供組態詳細資訊，並使用下列命名慣例：`my-access-point`

**要求:**

```
aws s3control create-access-point \
--account-id 111122223333 \ 
--name my-access-point \
--bucket amzn-s3-demo-bucket--zone-id--x-s3 \
--profile personal \
--tags Key=key1,Value=value1 Key=MyKey2,Value=value2 \
--region region
```

# 將標籤新增至目錄儲存貯體的存取點
<a name="access-points-db-tag-add"></a>



您可以將標籤新增至目錄儲存貯體的 Amazon S3 Access Points，並修改這些標籤。如需其他資訊，請參閱 [搭配使用標籤與目錄儲存貯體的 S3 存取點](access-points-db-tagging.md)。

## 許可
<a name="access-points-db-tag-add-permissions"></a>

若要將標籤新增至目錄儲存貯體的存取點，您必須具有下列許可權：
+ `s3express:TagResource`

## 故障診斷錯誤
<a name="access-points-db-tag-add-troubleshooting"></a>

如果您在嘗試將標籤新增至目錄儲存貯體的存取點時發生錯誤，您可以執行下列動作：
+ 確認您具備將標籤新增至目錄儲存貯體的存取點時所需的 [許可](#access-points-db-tag-add-permissions)。
+ 如果您嘗試新增以 AWS 預留字首 開頭的標籤金鑰`aws:`，請變更標籤金鑰，然後再試一次。

## 步驟
<a name="access-points-db-tag-add-steps"></a>

您可以使用 Amazon S3 主控台、 AWS 命令列界面 (AWS CLI)、Amazon S3 REST API 和 AWS SDKs存取點。

## 使用 S3 主控台
<a name="access-points-db-tag-add-console"></a>

使用 Amazon S3 主控台將標籤新增至目錄儲存貯體的存取點：

1. 從 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 登入 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**存取點 (目錄儲存貯體)**。

1. 選擇存取點名稱。

1. 選擇**屬性**索引標籤。

1. 捲動至**標籤**區段，選擇**新增標籤**。

1. **新增標籤**頁面隨即開啟。您最多可以輸入 50 個鍵值對。

1. 若您使用與現有標籤相同的標籤鍵名稱來新增標籤，新標籤值會覆寫現有標籤值。

1. 在此頁面上，您也可以編輯現有標籤的值。

1. 新增標籤後，選擇**儲存變更**。

## 使用 AWS SDKs
<a name="access-points-db-tag-add-sdks"></a>

------
#### [ SDK for Java 2.x ]

此範例示範如何使用 AWS SDK for Java 2.x將標籤新增至目錄儲存貯體的存取點。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3control.S3ControlClient;
import software.amazon.awssdk.services.s3control.model.Tag;
import software.amazon.awssdk.services.s3control.model.TagResourceRequest;
import software.amazon.awssdk.services.s3control.model.TagResourceResponse;

public class TagResourceExample {
    public static void tagResourceExample() {
        S3ControlClient s3Control = S3ControlClient.builder().region(Region.US_WEST_2).build();

        TagResourceRequest tagResourceRequest = TagResourceRequest.builder()
                .resourceArn("arn:aws::s3:region:111122223333:accesspoint/my-access-point/*")
                .accountId("111122223333")
                .tags(Tag.builder().key("key1").value("value1").build())
                .build();

        TagResourceResponse response = s3Control.tagResource(tagResourceRequest);
        System.out.println("Status code (should be 204):");
        System.out.println(response.sdkHttpResponse().statusCode());
    }
}
```

------

## 使用 REST API
<a name="access-points-db-tag-add-api"></a>

如需有關 Amazon S3 REST API 對於將標籤新增至目錄儲存貯體的存取點的支援資訊，請參閱《Amazon Simple Storage Service API 參考》**中的以下區段：
+ [TagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_TagResource.html)

## 使用 AWS CLI
<a name="access-points-db-tag-add-cli"></a>

若要安裝 AWS CLI，請參閱《 [AWS 使用者指南》中的安裝 CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。 *AWS Command Line Interface *

下列 CLI 範例示範如何使用 AWS CLI將標籤新增至目錄儲存貯體。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

**要求:**

```
aws s3control tag-resource \
--account-id 111122223333 \
--resource-arn arn:aws::s3express:region:444455556666:bucket/prefix--use1-az4--x-s3 \
--tags "Key=key1,Value=value1"
```

**回應：**

```
{
  "ResponseMetadata": {
      "RequestId": "EXAMPLE123456789",
      "HTTPStatusCode": 200,
      "HTTPHeaders": {
          "date": "Wed, 19 Jun 2025 10:30:00 GMT",
          "content-length": "0"
      },
      "RetryAttempts": 0
  }
}
```

# 檢視目錄儲存貯體存取點的標籤
<a name="access-points-db-tag-view"></a>

您可以檢視或列示套用至目錄儲存貯體之 Amazon S3 Access Points 的標籤。如需其他資訊，請參閱 [搭配使用標籤和 S3 目錄儲存貯體](directory-buckets-tagging.md)。

## 許可
<a name="access-points-db-tag-view-permissions"></a>

若要檢視套用至存取點的標籤，您必須具有下列許可權：
+ `s3express:ListTagsForResource`

## 故障診斷錯誤
<a name="access-points-db-tag-view-troubleshooting"></a>

如果您在嘗試列出或檢視目錄儲存貯體存取點的標籤時發生錯誤，您可以執行下列動作：
+ 確認您具有檢視或列出目錄儲存貯體的存取點標籤時所需的 [許可](#access-points-db-tag-view-permissions)。

## 步驟
<a name="access-points-db-tag-view-steps"></a>

您可以使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI)、Amazon S3 REST API 和 AWS SDKs 來檢視套用至目錄儲存貯體存取點的標籤。

## 使用 S3 主控台
<a name="access-points-db-tag-view-console"></a>

使用 Amazon S3 主控台檢視套用至目錄儲存貯體存取點的標籤：

1. 從 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 登入 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**存取點 (目錄儲存貯體)**。

1. 選擇存取點名稱。

1. 選擇**屬性**索引標籤。

1. 捲動至**標籤**區段，檢視所有套用至目錄儲存貯體存取點的標籤。

1. **標籤**區段預設顯示**使用者定義的標籤**。您可以選取 **AWS產生的標籤**標籤，以檢視依 AWS 服務套用至存取點的標籤。

## 使用 AWS SDKs
<a name="access-points-db-tag-view-sdks"></a>

本節提供範例，說明如何使用 AWS SDKs 檢視套用至目錄儲存貯體存取點的標籤。

------
#### [ SDK for Java 2.x ]

此範例示範如何使用 AWS SDK for Java 2.x檢視套用至目錄儲存貯體存取點的標籤。

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3control.S3ControlClient;
import software.amazon.awssdk.services.s3control.model.ListTagsForResourceRequest;
import software.amazon.awssdk.services.s3control.model.ListTagsForResourceResponse;

public class ListTagsForResourceExample {
    public static void listTagsForResourceExample() {
        S3ControlClient s3Control = S3ControlClient.builder().region(Region.US_WEST_2).build();

        ListTagsForResourceRequest listTagsForResourceRequest = ListTagsForResourceRequest.builder()
                .resourceArn("arn:aws::s3:us-west-2:111122223333:accesspoint/my-access-point/*")
                .accountId("111122223333")
                .build();
        ListTagsForResourceResponse response = s3Control.listTagsForResource(listTagsForResourceRequest);
        System.out.println("Tags on my resource:");
        System.out.println(response.toString());
    }
}
```

------

## 使用 REST API
<a name="access-points-db-tag-view-api"></a>

如需有關 Amazon S3 REST API 對於檢視套用至目錄儲存貯體的標籤的支援資訊，請參閱《Amazon Simple Storage Service API 參考》**中的以下區段：
+ [ListTagsForResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListTagsForResource.html)

## 使用 AWS CLI
<a name="access-points-db-tag-view-cli"></a>

若要安裝 AWS CLI，請參閱《 [AWS 使用者指南》中的安裝 CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。 *AWS Command Line Interface *

下列 CLI 範例示範如何檢視套用至目錄儲存貯體存取點的標籤。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

**要求:**

```
aws s3control list-tags-for-resource \
--account-id 111122223333 \
--resource-arn arn:aws::s3express:region:444455556666:bucket/prefix--use1-az4--x-s3 \
```

**回應 - 具有標籤：**

```
{
  "Tags": [
      {
          "Key": "MyKey1",
          "Value": "MyValue1"
      },
      {
          "Key": "MyKey2",
          "Value": "MyValue2"
      },
      {
          "Key": "MyKey3",
          "Value": "MyValue3"
      }
  ]
}
```

**回應 - 沒有標籤：**

```
{
  "Tags": []
}
```

# 從目錄儲存貯體的存取點刪除標籤
<a name="access-points-db-tag-delete"></a>

您可以從目錄儲存貯體的存取點移除標籤。如需其他資訊，請參閱 [搭配使用標籤與目錄儲存貯體的 S3 存取點](access-points-db-tagging.md)。

**注意**  
如果刪除標籤後才發現標籤用於追蹤成本或存取控制，此時您可以將該標籤加回目錄儲存貯體的存取點。

## 許可
<a name="access-points-db-tag-delete-permissions"></a>

若要從目錄儲存貯體的存取點刪除標籤，您必須具有下列權限：
+ `s3express:UntagResource`

## 故障診斷錯誤
<a name="access-points-db-tag-delete-troubleshooting"></a>

如果您在嘗試從目錄儲存貯體的存取點刪除標籤時發生錯誤，您可以執行下列動作：
+ 確認您具備從目錄儲存貯體存取點刪除標籤時所需的 [許可](#access-points-db-tag-delete-permissions)。

## 步驟
<a name="access-points-db-tag-delete-steps"></a>

您可以使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI)、Amazon S3 REST API 和 AWS SDKs，從目錄儲存貯體的存取點刪除標籤。

## 使用 S3 主控台
<a name="access-points-db-tag-delete-console"></a>

使用 Amazon S3 主控台從目錄儲存貯體的存取點刪除標籤：

1. 從 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 登入 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**存取點 (目錄儲存貯體)**。

1. 選擇存取點名稱。

1. 選擇**屬性**索引標籤。

1. 捲動至**標籤**區段，然後選取您要刪除的標籤旁的核取方塊。

1. 選擇 **刪除**。

1. **刪除使用者定義的標籤**快顯視窗隨即出現，並且要求您確認是否刪除您選取的標籤。

1. 選擇**刪除**以確認刪除。

## 使用 AWS SDKs
<a name="access-points-db-tag-delete-sdks"></a>

------
#### [ SDK for Java 2.x ]

此範例示範如何使用 AWS SDK for Java 2.x從目錄儲存貯體刪除標籤。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3control.S3ControlClient;
import software.amazon.awssdk.services.s3control.model.ListTagsForResourceRequest;
import software.amazon.awssdk.services.s3control.model.ListTagsForResourceResponse;

public class ListTagsForResourceExample {
    public static void listTagsForResourceExample() {
        S3ControlClient s3Control = S3ControlClient.builder().region(Region.US_WEST_2).build();

        UntagResourceRequest untagResourceRequest = UntagResourceRequest.builder()
                .resourceArn("arn:aws::s3:region:111122223333:accesspoint/my-access-point/*")
                .accountId("111122223333")
                .tagKeys("key1")
                .build();

        UntagResourceResponse response = s3Control.untagResource(untagResourceRequest);
        System.out.println("Status code (should be 204):");
        System.out.println(response.sdkHttpResponse().statusCode());
    }
}
```

------

## 使用 REST API
<a name="access-points-db-tag-delete-api"></a>

如需有關 Amazon S3 REST API 對於從存取點刪除標籤的支援資訊，請參閱《Amazon Simple Storage Service API 參考》**中的以下區段：
+ [UnTagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UntagResource.html)

## 使用 AWS CLI
<a name="access-points-db-tag-delete-cli"></a>

若要安裝 AWS CLI，請參閱《 [AWS 使用者指南》中的安裝 CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。 *AWS Command Line Interface *

下列 CLI 範例示範如何使用 AWS CLI從存取點刪除標籤。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

**要求:**

```
aws s3control untag-resource \
--account-id 111122223333 \
--resource-arn arn:aws::s3:region:111122223333:accesspoint/my-access-point/* \
--tag-keys "key1" "key2"
```

**回應：**

```
{
  "ResponseMetadata": {
    "RequestId": "EXAMPLE123456789",
    "HTTPStatusCode": 204,
    "HTTPHeaders": {
        "date": "Wed, 19 Jun 2025 10:30:00 GMT",
        "content-length": "0"
    },
    "RetryAttempts": 0
  }
}
```

# 使用目錄儲存貯體的 AWS CloudTrail 記錄
<a name="s3-express-one-zone-logging"></a>

 Amazon S3 已與 AWS CloudTrail 整合，CloudTrail 是一種服務，可提供使用者、角色或服務所採取動作的記錄 AWS 。CloudTrail 會將 Amazon S3 的所有 API 呼叫當做事件來擷取。您可以利用 CloudTrail 所收集的資訊來判斷向 Amazon S3 發出的請求，以及發出請求的 IP 位址、時間和其他詳細資訊。Amazon S3 中發生支援的事件活動時，該活動會記錄在 CloudTrail 事件中。您可以使用 AWS CloudTrail 追蹤記錄目錄儲存貯體的管理事件和資料事件。如需詳細資訊，請參閱 [Amazon S3 CloudTrail 事件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/cloudtrail-logging-s3-info.html)和[什麼是 AWS CloudTrail？ ](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 《*AWS CloudTrail 使用者指南*》中的 。

## 目錄儲存貯體的 CloudTrail 管理事件
<a name="s3-express-management"></a>

 CloudTrail 預設會將目錄儲存貯體的儲存貯體層級動作記錄為管理事件。目錄儲存貯體的 CloudTrail 管理事件 `eventsource` 為 `s3express.amazonaws.com`。當您設定 AWS 帳戶時，預設會啟用 CloudTrail 管理事件。下列區域端點 API 操作 (儲存貯體層級，也稱為控制平面 API 操作) 會記錄到 CloudTrail。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListDirectoryBuckets.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListDirectoryBuckets.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html)

**注意**  
 `ListMultipartUploads` 是區域端點 API 操作。不過，此 API 操作會記錄到 CloudTrail 作為管理事件。如需詳細資訊，請參閱 Amazon Simple Storage Service API 參考**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)。

如需 CloudTrail 管理事件的詳細資訊，請參閱《AWS CloudTrail 使用者指南》**中的[記錄管理事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html)。

## 目錄儲存貯體的 CloudTrail 資料事件
<a name="s3-express-data-events"></a>

資料事件提供在資源上或在資源中執行的資源操作的相關資訊 (例如，讀取或寫入 Amazon S3 物件)。這些也稱為資料平面操作。資料事件通常是大量資料的活動。根據預設，CloudTrail 追蹤不會記錄資料事件，但您可以設定追蹤來記錄儲存在一般用途儲存貯體和目錄儲存貯體中物件的資料事件。如需詳細資訊，請參閱[使用主控台啟用儲存貯體中物件的記錄](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-cloudtrail-logging-for-s3.html#enable-cloudtrail-events)。

當您在 CloudTrail 中記錄追蹤的資料事件時，您可以選擇使用進階事件選取器或基本事件選取器。若要記錄儲存在目錄儲存貯體中物件的資料事件，您必須使用進階事件選取器。設定進階資源選取器時，您將選擇或指定資源類型 (即 `AWS::S3Express::Object`)。

下列區域端點 API 操作 (物件層級或資料平面 API 操作) 會記錄到 CloudTrail。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_RenameObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_RenameObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)

如需 CloudTrail 資料事件的詳細資訊，請參閱《AWS CloudTrail 使用者指南》**中的[記錄資料事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html)。

如需目錄儲存貯體之 CloudTrail 事件的其他資訊，請參閱下列主題：

**Topics**
+ [目錄儲存貯體的 CloudTrail 管理事件](#s3-express-management)
+ [目錄儲存貯體的 CloudTrail 資料事件](#s3-express-data-events)
+ [目錄儲存貯體的 CloudTrail 日誌檔案範例](s3-express-log-files.md)

# 目錄儲存貯體的 CloudTrail 日誌檔案範例
<a name="s3-express-log-files"></a>

CloudTrail 日誌檔案包含請求的 API 操作、操作的日期和時間、請求參數等相關資訊。本主題提供目錄儲存貯體的 CloudTrail 資料事件和管理事件範例。

**Topics**
+ [目錄儲存貯體的 CloudTrail 資料事件日誌檔案範例](#example-ct-log-s3express)

## 目錄儲存貯體的 CloudTrail 資料事件日誌檔案範例
<a name="example-ct-log-s3express"></a>

下列範例顯示 CloudTrail 日誌檔案，其中示範了 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html)。

```
    {
        "eventVersion": "1.09",
        "userIdentity": {
          "type": "AssumedRole",
          "principalId": "AROAIDPPEZS35WEXAMPLE:AssumedRoleSessionName",
          "arn": "arn:aws:sts::111122223333assumed-role/RoleToBeAssumed/MySessionName",
          "accountId": "111122223333",
          "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
          "sessionContext": {
            "sessionIssuer": {
              "type": "Role",
              "principalId": "AROAIDPPEZS35WEXAMPLE",
              "arn": "arn:aws:iam::111122223333:role/RoleToBeAssumed",
              "accountId": "111122223333",
              "userName":"RoleToBeAssumed
            },
            
            "attributes": {
              "creationDate": "2024-07-02T00:21:16Z",
            "mfaAuthenticated": "false"
            }
          }
        },
        "eventTime": "2024-07-02T00:22:11Z",
        "eventSource": "s3express.amazonaws.com",
        "eventName": "CreateSession",
        "awsRegion": "us-west-2",
        "sourceIPAddress": "72.21.198.68",
        "userAgent": "aws-sdk-java/2.20.160-SNAPSHOT Linux/5.10.216-225.855.amzn2.x86_64 OpenJDK_64-Bit_Server_VM/11.0.23+9-LTS Java/11.0.23 vendor/Amazon.com_Inc. md/internal exec-env/AWS_Lambda_java11 io/sync http/Apache cfg/retry-mode/standard",
        "requestParameters": {
          "bucketName": "bucket-base-name--usw2-az1--x-s3".
            "host": "bucket-base-name--usw2-az1--x-s3.s3express-usw2-az1.us-west-2.amazonaws.com",
            "x-amz-create-session-mode": "ReadWrite"
        },
        "responseElements": {
            "credentials": {
                "accessKeyId": "AKIAI44QH8DHBEXAMPLE"
                "expiration": ""Mar 20, 2024, 11:16:09 PM",
                "sessionToken": "<session token string>"
           },
        },
        "additionalEventData": {
            "SignatureVersion": "SigV4",
            "cipherSuite": "TLS_AES_128_GCM_SHA256",
            "bytesTransferredIn": 0,
            "AuthenticationMethod": "AuthHeader",
            "xAmzId2": "q6xhNJYmhg",
            "bytesTransferredOut": 1815,
            "availabilityZone": "usw2-az1"
          },
          "requestID": "28d2faaf-3319-4649-998d-EXAMPLE72818",
          "eventID": "694d604a-d190-4470-8dd1-EXAMPLEe20c1",
          "readOnly": true,
          "resources": [
            {
              "type": "AWS::S3Express::Object",
              "ARNPrefix": "arn:aws:s3express:us-west-2:111122223333:bucket-base-name--usw2-az1--x-s3"
            },
            {
              "accountId": "111122223333"  
              "type": "AWS::S3Express::DirectoryBucket",
              "ARN": "arn:aws:s3express:us-west-2:111122223333:bucket-base-name--usw2-az1--x-s3"
             }
           ],               
           "eventType": "AwsApiCall",
           "managementEvent": false,
           "recipientAccountId": "111122223333",
           "eventCategory": "Data",
           "tlsDetails": {
             "tlsVersion": "TLSv1.3",
             "cipherSuite": "TLS_AES_128_GCM_SHA256",
             "clientProvidedHostHeader": "bucket-base-name--usw2-az1--x-s3.s3express-usw2-az1.us-west-2.amazonaws.com"
            }
          }
```

若要使用區域端點 API 操作 (物件層級或資料平面操作)，您可以使用 `CreateSession` API 操作來建立和管理工作階段，這些工作階段經過最佳化，可提供低延遲的資料請求授權。您也可以使用 `CreateSession` 來減少記錄量。若要確定在工作階段期間執行了哪些區域 API 操作，您可以將 `CreateSession` 日誌檔案中 `responseElements` 下的 `accessKeyId` 與其他區域 API 操作日誌檔案中的 `accessKeyId` 進行比對。如需詳細資訊，請參閱[`CreateSession` 授權](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-create-session.html)。

下列範例顯示 CloudTrail 日誌檔案範例，其中示範了 `CreateSession` 已驗證的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) API 操作。

```
    {
        "eventVersion": "1.09",
        "userIdentity": {
          "type": "AssumedRole",
          "principalId": "AROAIDPPEZS35WEXAMPLE:AssumedRoleSessionName",
          "arn": "arn:aws:sts::111122223333assumed-role/RoleToBeAssumed/MySessionName",
          "accountId": "111122223333",
          "accessKeyId": "AKIAI44QH8DHBEXAMPLE",
          "sessionContext": {
            "attributes": {
              "creationDate": "2024-07-02T00:21:49Z"
            }
          }
        },    
        "eventTime": "2024-07-02T00:22:01Z",
        "eventSource": "s3express.amazonaws.com",
        "eventName": "GetObject",
        "awsRegion": "us-west-2",
        "sourceIPAddress": "72.21.198.68",
        "userAgent": "aws-sdk-java/2.25.66 Linux/5.10.216-225.855.amzn2.x86_64 OpenJDK_64-Bit_Server_VM/17.0.11+9-LTS Java/17.0.11 vendor/Amazon.com_Inc. md/internal exec-env/AWS_Lambda_java17 io/sync http/Apache cfg/retry-mode/legacy",  
        "requestParameters": {
          "bucketName": "bucket-base-name--usw2-az1--x-s3",
          "x-amz-checksum-mode": "ENABLED",
          "Host": "bucket-base-name--usw2-az1--x-s3.s3express-usw2-az1.us-west-2.amazonaws.com",
          "key": "test-get-obj-with-checksum"
        },
        "responseElements": null,
        "additionalEventData": {
          "SignatureVersion": "Sigv4",
          "CipherSuite": "TLS_AES_128_GCM_SHA256",
          "bytesTransferredIn": 0,
          "AuthenticationMethod": "AuthHeader",
          "x-amz-id-2": "oOy6w8K7LFsyFN",
          "bytesTransferredOut": 9,
          "availabilityZone": "usw2-az1",
          "sessionModeApplied": "ReadWrite"
         },
          "requestID": "28d2faaf-3319-4649-998d-EXAMPLE72818",
          "eventID": "694d604a-d190-4470-8dd1-EXAMPLEe20c1",
          "readOnly": true,
          "resources": [
            {
              "type": "AWS::S3Express::Object",
              "ARNPrefix": "arn:aws:s3express:us-west-2:111122223333:bucket-base-name--usw2-az1--x-s3"
            },
            {
              "accountId": "111122223333",  
              "type": "AWS::S3Express::DirectoryBucket",
              "ARN": "arn:aws:s3express:us-west-2:111122223333:bucket-base-name--usw2-az1--x-s3"
             }
           ],               
           "eventType": "AwsApiCall",
           "managementEvent": false,
           "recipientAccountId": "111122223333",
           "eventCategory": "Data",
           "tlsDetails": {
             "tlsVersion": "TLSv1.3",
             "cipherSuite": "TLS_AES_128_GCM_SHA256",
             "clientProvidedHostHeader": "bucket-base-name--usw2-az1--x-s3.s3express-usw2-az1.us-west-2.amazonaws.com"
            }
          }
```

 在上述 `GetObject` 日誌檔案範例中，`accessKeyId` (AKIAI44QH8DHBEXAMPLE) 符合 CreateSession 日誌檔案範例中 `responseElements` 下的 `accessKeyId`。相符的 `accessKeyId` 會指出執行 `GetObject` 操作所在的工作階段。

下列範例顯示 CloudTrail 日誌項目，其中示範了 S3 生命週期在目錄儲存貯體上調用的 `DeleteObjects` 動作。如需詳細資訊，請參閱[https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-lifecycle.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-lifecycle.html)。

```
eventVersion:"1.09",
  userIdentity:{

    type:"AWSService",
    invokedBy:"lifecycle.s3.amazonaws.com"
  },
  eventTime:"2024-09-11T00:55:54Z",
  eventSource:"s3express.amazonaws.com",
  eventName:"DeleteObjects",
  awsRegion:"us-east-2",
  sourceIPAddress:"lifecycle.s3.amazonaws.com",
  userAgent:"gamma.lifecycle.s3.amazonaws.com",
  requestParameters:{

    bucketName:"amzn-s3-demo-bucket--use2-az2--x-s3",
    'x-amz-expected-bucket-owner':"637423581905",
    Host:"amzn-s3-demo-bucket--use2-az2--x-s3.gamma.use2-az2.express.s3.aws.dev",
    delete:"",
    'x-amz-sdk-checksum-algorithm':"CRC32C"
  },
  responseElements:null,
  additionalEventData:{

    SignatureVersion:"Sigv4",
    CipherSuite:"TLS_AES_128_GCM_SHA256",
    bytesTransferredIn:41903,
    AuthenticationMethod:"AuthHeader",
    'x-amz-id-2':"9H5YWZY0",
    bytesTransferredOut:35316,
    availabilityZone:"use2-az2",
    sessionModeApplied:"ReadWrite"
  },
  requestID:"011eeadd04000191",
  eventID:"d3d8b116-219d-4ee6-a072-5f9950733c74",
  readOnly:false,
  resources:[

    {

      type:"AWS::S3Express::Object",
      ARNPrefix:"arn:aws:s3express:us-east-2:637423581905:bucket/amzn-s3-demo-bucket--use2-az2--x-s3/"
    },
    {

      accountId:"637423581905",
      type:"AWS::S3Express::DirectoryBucket",
      ARN:"arn:aws:s3express:us-east-2:637423581905:bucket/amzn-s3-demo-bucket--use2-az2--x-s3"
    }
  ],
  eventType:"AwsApiCall",
  managementEvent:false,
  recipientAccountId:"637423581905",
  sharedEventID:"59f877ac-1dd9-415d-b315-9bb8133289ce",
  eventCategory:"Data"
}
```

下列範例顯示 CloudTrail 日誌項目，其中示範了對 S3 生命週期所調用 `CreateSession` 動作的 `Access Denied` 請求。如需詳細資訊，請參閱[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html)。

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "gamma.lifecycle.s3.amazonaws.com"
    },
    "eventTime": "2024-09-11T18:13:08Z",
    "eventSource": "s3express.amazonaws.com",
    "eventName": "CreateSession",
    "awsRegion": "us-east-2",
    "sourceIPAddress": "gamma.lifecycle.s3.amazonaws.com",
    "userAgent": "gamma.lifecycle.s3.amazonaws.com",
    "errorCode": "AccessDenied",
    "errorMessage": "Access Denied",
    "requestParameters": {
        "bucketName": "amzn-s3-demo-bucket--use2-az2--x-s3",
        "Host": "amzn-s3-demo-bucket--use2-az2--x-s3.gamma.use2-az2.express.s3.aws.dev",
        "x-amz-create-session-mode": "ReadWrite",
        "x-amz-server-side-encryption": "AES256"
    },
    "responseElements": null,
    "additionalEventData": {
        "SignatureVersion": "Sigv4",
        "CipherSuite": "TLS_AES_128_GCM_SHA256",
        "bytesTransferredIn": 0,
        "AuthenticationMethod": "AuthHeader",
        "x-amz-id-2": "zuDDC1VNbC4LoNwUIc5",
        "bytesTransferredOut": 210,
        "availabilityZone": "use2-az2"
    },
    "requestID": "010932f174000191e24a0",
    "eventID": "dce7cc46-4cd3-46c0-9a47-d1b8b70e301c",
    "readOnly": true,
    "resources": [{
            "type": "AWS::S3Express::Object",
            "ARNPrefix": "arn:aws:s3express:us-east-2:637423581905:bucket/amzn-s3-demo-bucket--use2-az2--x-s3/"
        },
        {
            "accountId": "637423581905",
            "type": "AWS::S3Express::DirectoryBucket",
            "ARN": "arn:aws:s3express:us-east-2:637423581905:bucket/amzn-s3-demo-bucket--use2-az2--x-s3"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": false,
    "recipientAccountId": "637423581905",
    "sharedEventID": "da96b5bd-6066-4a8d-ad8d-f7f427ca7d58",
    "eventCategory": "Data"
}
```

# 使用 Amazon CloudWatch 監控目錄儲存貯體的指標
<a name="cloudwatch-monitoring-directory-buckets"></a>

目錄儲存貯體的 Amazon CloudWatch 指標可協助您了解和改善使用目錄儲存貯體之應用程式的效能。有幾組 CloudWatch 指標可與本機區域中 S3 Express One Zone 儲存類別和 S3 One Zone-Infrequent Access (S3 One Zone-IA； Z-IA) 儲存類別的目錄儲存貯體搭配使用。

**每日儲存指標**  
監控儲存在目錄儲存貯體中的資料量，包括以位元組為單位的總大小和物件數量。S3 Express One Zone 的這些儲存指標每天報告一次，並免費提供給所有客戶。

**請求指標**   
監控目錄儲存貯體請求，以快速識別並處理操作問題。這些指標會在一些處理延遲之後以 1 分鐘的間隔提供。這些 CloudWatch 指標的計費費率與 Amazon CloudWatch 自訂指標相同。如需 CloudWatch 定價的資訊，請參閱 [Amazon CloudWatch 定價](https://aws.amazon.com/cloudwatch/pricing/)。若要了解如何選擇取得這些指標，請參閱 [設定目錄儲存貯體的請求指標](metrics-configurations-directory-buckets.md)。  
啟用時，會回報所有物件操作的要求指標。根據預設，這些 1 分鐘指標可在目錄儲存貯體層級使用。您也可以使用共用目錄或存取點來定義指標的篩選條件：  
+ **存取點** – 存取點是連接至目錄儲存貯體的具名網路端點，可簡化 S3 中共用資料集的大規模資料存取管理。藉助存取點篩選條件，您可以深入了解存取點使用情況。如需有關目錄儲存貯體存取點的詳細資訊，請參閱 [使用存取點管理目錄儲存貯體中的共用資料集存取權](access-points-directory-buckets.md)。
+ **目錄** – 目錄儲存貯體使用實際目錄以階層方式組織物件。目錄可讓您在目錄儲存貯體中將類似的物件分組在一起。如果您依目錄篩選，儲存在相同目錄中的物件會包含在指標組態中。
若要將這些指標與特定商業應用程式、工作流程或內部組織保持一致，您可以在共用目錄或存取點上進行篩選。

所有 CloudWatch 統計資料會保留 15 個月，以便您存取歷史資訊，並更清楚 Web 應用程式或服務的執行效能。如需 CloudWatch 的詳細資訊，請參閱 *Amazon CloudWatch 使用者指南*中的[什麼是 Amazon CloudWatch？](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)。根據您的使用案例而定，您可能需要對 CloudWatch 警示進行一些其他組態設定。例如，您可以使用指標數學運算式來建立警示。如需詳細資訊，請參閱《*Amazon CloudWatch 使用者指南*》中的[使用 CloudWatch 指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html)、[使用指標數學](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html)、[使用 Amazon CloudWatch 警示](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)，以及[根據指標數學運算式建立 CloudWatch 警示](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)。

**CloudWatch 指標盡力交付**  
 CloudWatch 指標是盡力交付。以請求指標對 Amazon S3 物件提出的大部分請求，都會導致資料點傳送至 CloudWatch。

不保證指標的完成程度與時間先後順序。特定要求的資料點回傳，回傳時附有的時間戳記可能會晚於實際處理要求時間。一分鐘的資料點在透過 CloudWatch 送達前可能延遲，或根本不會傳遞。CloudWatch 請求指標可讓您近乎即時了解儲存貯體的流量性質。並不表示完整考量所有要求。

由於遵循此功能的盡力本質，在[帳單與成本管理儀表板](https://console.aws.amazon.com/billing/home?#/)提供的報告中，可能包含一或多個未出現在儲存貯體指標中的存取請求。

如需詳細資訊，請參閱下列主題。

**Topics**
+ [目錄儲存貯體的指標和維度](metrics-dimensions-directory-buckets.md)
+ [設定目錄儲存貯體的請求指標](metrics-configurations-directory-buckets.md)

# 目錄儲存貯體的指標和維度
<a name="metrics-dimensions-directory-buckets"></a>

S3 Express One Zone 傳送至 Amazon CloudWatch 的指標和維度列於下表中。

**CloudWatch 指標盡力交付**  
 CloudWatch 指標是盡力交付。以請求指標對 Amazon S3 物件提出的大部分請求，都會導致資料點傳送至 CloudWatch。

不保證指標的完成程度與時間先後順序。特定要求的資料點回傳，回傳時附有的時間戳記可能會晚於實際處理要求時間。一分鐘的資料點在透過 CloudWatch 送達前可能延遲，或根本不會傳遞。CloudWatch 請求指標可讓您近乎即時了解儲存貯體的流量性質。並不表示完整考量所有要求。

由於遵循此功能的盡力本質，在[帳單與成本管理儀表板](https://console.aws.amazon.com/billing/home?#/)提供的報告中，可能包含一或多個未出現在儲存貯體指標中的存取請求。

**Topics**
+ [CloudWatch 中目錄儲存貯體的 Amazon S3 每日儲存指標](#s3-cloudwatch-metrics-directory-buckets)
+ [CloudWatch 中目錄儲存貯體的 Amazon S3 請求指標](#s3-cloudwatch-request-metrics-directory-buckets)
+ [目錄儲存貯體的 Amazon S3 維度](#s3-cloudwatch-dimensions-directory-buckets)

## CloudWatch 中目錄儲存貯體的 Amazon S3 每日儲存指標
<a name="s3-cloudwatch-metrics-directory-buckets"></a>

`AWS/S3` 命名空間包含下列目錄儲存貯體的每日儲存指標。


| 指標 | Description | 
| --- | --- | 
| BucketSizeBytes |  儲存在目錄儲存貯體中的位元組資料量。此值的計算方式是加總儲存貯體中所有物件和中繼資料 （例如儲存貯體名稱） 的大小，包括所有未完成分段上傳至儲存貯體的所有部分大小。 單位：位元組 有效的統計資訊：平均  | 
| NumberOfObjects |  儲存在目錄儲存貯體中的物件總數。此值的計算方式是計算儲存貯體中的所有物件，且不包含未完成的分段上傳至儲存貯體。 單位：計數 有效的統計資訊：平均  | 

## CloudWatch 中目錄儲存貯體的 Amazon S3 請求指標
<a name="s3-cloudwatch-request-metrics-directory-buckets"></a>

`AWS/S3` 命名空間包含下列目錄儲存貯體的請求指標。


| 指標 | Description | 
| --- | --- | 
| AllRequests |  無論類型為何，對目錄儲存貯體提出的 HTTP 請求總數。如果您要搭配使用指標組態與篩選條件，則此指標只會傳回符合篩選條件需求的 HTTP 請求。 單位：計數 有效的統計資訊：總和  | 
| GetRequests |  針對目錄儲存貯體中的物件提出的 HTTP `GET`請求數目。這不包含列出操作。此指標會根據每個 `CopyObject` 請求的來源增加。 單位：計數 有效的統計資訊：總和  此指標不包含分頁清單導向的請求，例如 [https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadListMPUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadListMPUpload.html)、 [https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadListParts.html](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadListParts.html)和其他。   | 
| PutRequests |  針對目錄儲存貯體中的物件提出的 HTTP `PUT`請求數目。此指標會根據每個 `CopyObject` 請求的目的地增加。 單位：計數 有效的統計資訊：總和  | 
| DeleteRequests |  針對目錄儲存貯體中的物件提出的 HTTP `DELETE`請求數目。此指標也包含 [https://docs.aws.amazon.com/AmazonS3/latest/API/multiobjectdeleteapi.html](https://docs.aws.amazon.com/AmazonS3/latest/API/multiobjectdeleteapi.html) 請求。此指標顯示所提出的請求數目，而非已刪除的物件數目。 單位：計數 有效的統計資訊：總和  | 
| HeadRequests |  對目錄儲存貯體提出的 HTTP `HEAD`請求數目。 單位：計數 有效的統計資訊：總和  | 
| PostRequests |  對目錄儲存貯體提出的 HTTP `POST`請求數量。 單位：計數 有效的統計資訊：總和  [https://docs.aws.amazon.com/AmazonS3/latest/API/multiobjectdeleteapi.html](https://docs.aws.amazon.com/AmazonS3/latest/API/multiobjectdeleteapi.html) 請求不包含在此指標中。   | 
| ListRequests |  列出目錄儲存貯體內容的 HTTP 請求數目。 單位：計數 有效的統計資訊：總和  | 
| BytesDownloaded |  針對對目錄儲存貯體提出的請求下載的位元組數，其中回應包含內文。 單位：位元組 有效的統計資訊：平均 (每個要求的位元組數)、總和 (每個期間的位元組數)、範例計數、最小值、最大值 (相同於 p100)，任何介於 p0.0 與 p99.9 的百分位數  | 
| BytesUploaded |  針對對目錄儲存貯體提出的請求上傳的位元組數，其中請求包含內文。 單位：位元組 有效的統計資訊：平均 (每個要求的位元組數)、總和 (每個期間的位元組數)、範例計數、最小值、最大值 (相同於 p100)，任何介於 p0.0 與 p99.9 的百分位數  | 
| 4xxErrors |  對目錄儲存貯體提出的 HTTP 4*xx* 用戶端錯誤狀態碼請求數目，其值為 0 或 1。平均統計資訊會顯示錯誤率，而總和統計資訊會顯示該類型錯誤在每個期間的數目。 單位：Count 有效的統計資訊：平均 (每個要求的報告)、總和 (每個期間的報告)、下限、上限、範例計數  | 
| 5xxErrors |  對目錄儲存貯體提出的 HTTP 5*xx* 伺服器錯誤狀態碼請求數目，其值為 0 或 1。平均統計資訊會顯示錯誤率，而總和統計資訊會顯示該類型錯誤在每個期間的數目。 單位：Count 有效的統計資訊：平均 (每個要求的報告)、總和 (每個期間的報告)、下限、上限、範例計數  | 
| FirstByteLatency |  從目錄儲存貯體收到的完整請求到回應開始傳回的每次請求時間。 單位：毫秒 有效的統計資訊：平均、總和、下限、上限 (與 p100 相同)、範例計數、任何介於 p0.0 與 p100 的百分位數  | 
| TotalRequestLatency |  從收到的第一個位元組到傳送至目錄儲存貯體的最後一個位元組的每次請求所經過的時間。此指標包含接收要求內文與傳送回應內文 (未包含在 `FirstByteLatency` 中) 所需的時間。 單位：毫秒 有效的統計資訊：平均、總和、下限、上限 (與 p100 相同)、範例計數、任何介於 p0.0 與 p100 的百分位數  | 

## 目錄儲存貯體的 Amazon S3 維度
<a name="s3-cloudwatch-dimensions-directory-buckets"></a>

下列維度用於篩選目錄儲存貯體的 Amazon S3 指標。


| 維度 | Description | 
| --- | --- | 
| BucketName | 此維度只會篩選您為已識別目錄儲存貯體請求的資料。 | 
| FilterId | 此維度會篩選您在目錄儲存貯體上為請求指標指定的指標組態。您可以在設定請求指標時設定指標組態篩選條件。如需詳細資訊，請參閱[設定目錄儲存貯體的請求指標](metrics-configurations-directory-buckets.md)。 | 

# 設定目錄儲存貯體的請求指標
<a name="metrics-configurations-directory-buckets"></a>

您可以設定目錄儲存貯體的請求指標，以監控 S3 Express One Zone 儲存體的操作效能。請求指標每隔 1 分鐘提供一次，可協助您快速識別並處理操作問題。

您可以使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI) 或 Amazon S3 REST API 來設定目錄儲存貯體的請求指標。

## 使用 S3 主控台
<a name="metrics-configuration-console-directory-buckets"></a>

您可以使用 Amazon S3 主控台來設定目錄儲存貯體的請求指標。

**設定目錄儲存貯體的請求指標**

1. 登入 ，並在 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**目錄儲存貯體**。

1. 在儲存貯體清單中，選擇包含您要請求指標之物件的目錄儲存貯體名稱。

1. 選擇 **Metrics** (指標) 標籤。

1. 在 **Bucket metrics** (儲存貯體指標) 下，選擇 **View additional charts** (檢視其他圖表)。

1. 選擇 **Request metrics** (請求指標) 標籤。

1. 選擇 **Create filter** (建立篩選條件)。

1. 在 **Filter name** (篩選條件名稱) 方塊中，輸入篩選條件的名稱。

   名稱僅可包含字母、數字、句點、破折號和底線。建議您使用 `EntireBucket` 來為適用於所有物件的篩選條件命名。

1. 在**篩選範圍**下，選擇下列其中一項：
   + **此篩選條件適用於儲存貯體中的所有物件** – 您未指定篩選條件。
   + **使用目錄或存取點限制此篩選條件的範圍** – 您可以指定篩選條件。若要限制範圍，您可以依目錄或存取點進行篩選。

   您也可以定義篩選條件，以便僅在目錄儲存貯體中的物件子集上收集和報告指標。

1. 如果您選擇限制篩選條件的範圍，請指定篩選條件詳細資訊：
   + 若要依**目錄**篩選，請輸入目錄名稱。
   + 若要依**存取點**篩選，請輸入存取點 ARN。

1. 選擇**儲存變更**。

1. 在 **Request metrics** (請求指標) 標籤的 **Filters** (篩選條件) 底下，選擇您剛才建立的篩選條件。

   大約 15 分鐘後，CloudWatch 就會開始追蹤這些請求指標。**Request metrics (請求指標)** 標籤中會顯示這些指標，您也可以在 Amazon S3 或 CloudWatch 主控台中查看指標圖表。請求指標會以標準 CloudWatch 費率計費。如需詳細資訊，請參閱 [Amazon CloudWatch 定價](https://aws.amazon.com/cloudwatch/pricing/)。

## 使用 AWS CLI
<a name="metrics-configuration-cli-directory-buckets"></a>

您可以使用 AWS CLI 來設定目錄儲存貯體的請求指標。

1. 安裝和設定 AWS CLI。如需說明，請參閱*《AWS Command Line Interface 使用者指南》*中的[安裝、更新和解除安裝 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)。

1. 開啟終端機。

1. 執行下列命令來新增指標組態：

   ```
   aws s3api put-bucket-metrics-configuration --endpoint https://s3express-control.region-code.amazonaws.com --bucket directory-bucket-name --id metrics-config-id --metrics-configuration '{"Id":"metrics-config-id"}'
   ```

## 使用 REST API
<a name="metrics-configuration-rest-directory-buckets"></a>

您可以使用 Amazon S3 REST API 來設定目錄儲存貯體的請求指標。搭配目錄儲存貯體使用 REST API 時，您必須搭配區域控制端點使用 S3 Express One Zone 端點，格式為：`https://s3express-control.region-code.amazonaws.com`。

如需 REST API 操作的詳細資訊，請參閱《*Amazon S3 API 參考*》中的下列主題：
+ [PUT 儲存貯體指標](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTMetricConfiguration.html)
+ [GET 儲存貯體指標](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETMetricConfiguration.html)
+ [DELETE 儲存貯體指標](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketDELETEMetricConfiguration.html)
+ [LIST 儲存貯體指標](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketListMetricConfigurations.html)

# 最佳化目錄儲存貯體效能
<a name="s3-express-optimizing-performance"></a>

若要在使用目錄儲存貯體時獲得最佳效能，建議您遵循下列準則。

如需 S3 Express One Zone 最佳實務的詳細資訊，請參閱 [最佳化 S3 Express One Zone 效能的最佳實務](s3-express-optimizing-performance-design-patterns.md)。

## 使用工作階段型身分驗證
<a name="s3-express-optimizing-performance-session-authentication"></a>

目錄儲存貯體支援新的工作階段型授權機制，可驗證和授權對目錄儲存貯體的請求。透過工作階段型身分驗證， AWS SDKs 會自動使用 `CreateSession` API 操作來建立臨時工作階段字符，可用於低延遲授權目錄儲存貯體的資料請求。

 AWS SDKs 使用 `CreateSession` API 操作來請求臨時登入資料，然後每 5 分鐘代表您自動建立和重新整理權杖。若要利用目錄儲存貯體的效能優勢，建議您使用 AWS SDKs來啟動和管理 `CreateSession` API 請求。如需此工作階段型模型的詳細資訊，請參閱 [使用 `CreateSession` 授權區域端點 API 操作](s3-express-create-session.md)。

## S3 其他檢查總和最佳實務
<a name="s3-express-optimizing-performance-checksums"></a>

目錄儲存貯體可讓您選擇在上傳或下載期間用於驗證資料的檢查總和演算法。您可以選擇以下 Secure Hash 演算法 (SHA) 或循環宂餘檢查 (CRC) 資料完整性演算法之一：CRC32、CRC32C、SHA-1 和 SHA-256。S3 Express One Zone 儲存類別不支援 MD5 型檢查總和。

CRC32 是在目錄儲存貯體之間傳輸資料時， AWS SDKs 使用的預設檢查總和。建議您使用 CRC32 和 CRC32C，以獲得最佳目錄儲存貯體效能。

## 使用最新版本的 AWS SDKs和常見的執行時間程式庫
<a name="s3-express-optimizing-performance-aws-sdks"></a>

數個 AWS SDKs也提供 AWS 通用執行期 (CRT) 程式庫，以進一步加速 S3 用戶端的效能。這些 SDK 包括 AWS SDK for Java 2.x、 適用於 C\$1\$1 的 AWS SDK和 適用於 Python (Boto3) 的 AWS SDK。CRT 型 S3 用戶端會自動使用分段上傳 API 操作和位元組範圍擷取功能來自動執行水平擴展連線，藉此提升對目錄儲存貯體來回傳輸物件時的效能和可靠性。

若要使用目錄儲存貯體達到最高效能，建議您使用包含 CRT 程式庫的最新版本 AWS SDKs，或使用 AWS Command Line Interface (AWS CLI)。

# 使用目錄儲存貯體進行開發
<a name="s3-express-developing"></a>

建立目錄儲存貯體之後，您就可以立即開始進行非常低延遲的讀取和寫入。您可以透過虛擬私有雲端 (VPC) 使用端點連線與目錄儲存貯體進行通訊，或是使用區域 (Zone) 和區域 (Region) API 操作來管理物件和目錄儲存貯體。您可以使用 AWS SDKs、Amazon S3 主控台、 AWS 命令列界面 (AWS CLI) 和 Amazon S3 REST APIs。

**Topics**
+ [目錄儲存貯體的地區和區域端點](s3-express-Regions-and-Zones.md)
+ [使用 S3 主控台 AWS CLI和 AWS SDKs](s3-express-SDKs.md)
+ [目錄儲存貯體 API 操作](s3-express-APIs.md)

# 目錄儲存貯體的地區和區域端點
<a name="s3-express-Regions-and-Zones"></a>

 若要從虛擬私有雲端 (VPC) 存取目錄儲存貯體的地區和區域端點，您可以使用閘道 VPC 端點。建立閘道端點之後，您可以將其新增為路由表中的目標，以處理從 VPC 到您儲存貯體的指定流量。使用閘道端點不需額外付費。如需如何設定閘道 VPC 端點的詳細資訊，請參閱 [目錄儲存貯體的網路](s3-express-networking.md)。

 您可以透過地區端點執行儲存貯體層級 (控制平面) API 操作，這些操作也稱為地區端點 API 操作。區域端點 API 操作的範例包括 `CreateBucket` 和 `DeleteBucket`。

您可以使用區域 (物件層級或資料平面端點) API 操作來上傳和管理物件。區域端點 API 操作可透過區域端點提供使用。區域 API 操作的範例包括 `PutObject` 和 `CopyObject`。

如需可用區域中目錄儲存貯體的地區和區域端點詳細資訊，請參閱[可用區域中目錄儲存貯體的地區與區域端點](endpoint-directory-buckets-AZ.md)。

如需本機區域中目錄儲存貯體的地區和區域端點詳細資訊，請參閱[Local Zones 中目錄儲存貯體的概念](s3-lzs-for-directory-buckets.md)。


| 區域名稱 | 區域 | 可用區域 ID | 區域 (Region) 端點 | 區域 (Zone) 端點 | 
| --- | --- | --- | --- | --- | 
|  美國東部 (維吉尼亞北部)  |  `us-east-1`  |  `use1-az4` `use1-az5` `use1-az6`  |  `s3express-control.us-east-1.amazonaws.com` `s3express-control-dualstack.us-east-1.amazonaws.com `  |  `s3express-use1-az4.us-east-1.amazonaws.com` `s3express-use1-az4.dualstack.us-east-1.amazonaws.com` `s3express-use1-az5.us-east-1.amazonaws.com` `s3express-use1-az5.dualstack.us-east-1.amazonaws.com` `s3express-use1-az6.us-east-1.amazonaws.com` `s3express-use1-az6.dualstack.us-east-1.amazonaws.com`  | 
|  美國東部 (俄亥俄)  |  `us-east-2`  |  `use2-az1` `use2-az2`  |  `s3express-control.us-east-2.amazonaws.com` `s3express-control-dualstack.us-east-2.amazonaws.com`  |  `s3express-use2-az1.us-east-2.amazonaws.com` `s3express-use2-az1.dualstack.us-east-2.amazonaws.com` `s3express-use2-az2.us-east-2.amazonaws.com` `s3express-use2-az2.dualstack.us-east-2.amazonaws.com`  | 
|  美國西部 (奧勒岡)  |  `us-west-2`  |  `usw2-az1` `usw2-az3` `usw2-az4`  |  `s3express-control.us-west-2.amazonaws.com` `s3express-control-dualstack.us-west-2.amazonaws.com`  |  `s3express-usw2-az1.us-west-2.amazonaws.com` `s3express-usw2-az1.dualstack.us-west-2.amazonaws.com` `s3express-usw2-az3.us-west-2.amazonaws.com` `s3express-usw2-az3.dualstack.us-west-2.amazonaws.com` `s3express-usw2-az4.us-west-2.amazonaws.com` `s3express-usw2-az4.dualstack.us-west-2.amazonaws.com`  | 
|  亞太地區 (孟買)  |  `ap-south-1`  |  `aps1-az1` `aps1-az3`  |  `s3express-control.ap-south-1.amazonaws.com` `s3express-control-dualstack.ap-south-1.amazonaws.com`  |  `s3express-aps1-az1.ap-south-1.amazonaws.com` `s3express-aps1-az1.dualstack.ap-south-1.amazonaws.com` `s3express-aps1-az3.ap-south-1.amazonaws.com` `s3express-aps1-az3.dualstack.ap-south-1.amazonaws.com`  | 
|  亞太地區 (東京)  |  `ap-northeast-1`  |  `apne1-az1` `apne1-az4`  |  `s3express-control.ap-northeast-1.amazonaws.com` `s3express-control-dualstack.ap-northeast-1.amazonaws.com`  |  `s3express-apne1-az1.ap-northeast-1.amazonaws.com` `s3express-apne1-az1.dualstack.ap-northeast-1.amazonaws.com` `s3express-apne1-az4.ap-northeast-1.amazonaws.com` `s3express-apne1-az4.dualstack.ap-northeast-1.amazonaws.com`  | 
|  歐洲 (愛爾蘭)  |  `eu-west-1`  |  `euw1-az1` `euw1-az3`  |  `s3express-control.eu-west-1.amazonaws.com` `s3express-control-dualstack.eu-west-1.amazonaws.com`  |  `s3express-euw1-az1.eu-west-1.amazonaws.com` `s3express-euw1-az1.dualstack.eu-west-1.amazonaws.com` `s3express-euw1-az3.eu-west-1.amazonaws.com` `s3express-euw1-az3.dualstack.eu-west-1.amazonaws.com`  | 
|  歐洲 (斯德哥爾摩)  |  `eu-north-1`  |  `eun1-az1` `eun1-az2` `eun1-az3`  |  `s3express-control.eu-north-1.amazonaws.com` `s3express-control-dualstack.eu-north-1.amazonaws.com`  |  `s3express-eun1-az1.eu-north-1.amazonaws.com` `s3express-eun1-az1.dualstack.eu-north-1.amazonaws.com` `s3express-eun1-az2.eu-north-1.amazonaws.com` `s3express-eun1-az2.dualstack.eu-north-1.amazonaws.com` `s3express-eun1-az3.eu-north-1.amazonaws.com` `s3express-eun1-az3.dualstack.eu-north-1.amazonaws.com`  | 

# 使用 S3 主控台 AWS CLI和 AWS SDKs
<a name="s3-express-SDKs"></a>

您可以使用 AWS SDKs、Amazon S3 主控台、 AWS Command Line Interface (AWS CLI) 和 Amazon S3 REST API 來使用 Amazon S3 Express One Zone 儲存類別和目錄儲存貯體。 Amazon S3 

## S3 主控台
<a name="s3-express-getting-started-console"></a>



請依照下列步驟開始使用 S3 主控台：
+ [在可用區域中建立目錄儲存貯體](directory-bucket-create.md)
+ [清空目錄儲存貯體](directory-bucket-empty.md)
+ [刪除目錄儲存貯體](directory-bucket-delete.md)

如需完整教學課程，請參閱[教學課程：開始使用 S3 Express One Zone](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-getting-started.html)。

## AWS SDKs
<a name="s3-express-getting-started-accessing-sdks"></a>

S3 Express One Zone 支援下列 AWS SDKs：
+ 適用於 C\$1\$1 的 AWS SDK
+ 適用於 Go 的 AWS SDK v2
+ AWS SDK for Java 2.x
+ 適用於 JavaScript 的 AWS SDK v3
+ 適用於 .NET 的 AWS SDK
+ 適用於 PHP 的 AWS SDK
+ 適用於 Python (Boto3) 的 AWS SDK
+ 適用於 Ruby 的 AWS SDK
+ 適用於 Kotlin 的 AWS SDK
+ 適用於 Rust 的 AWS SDK

使用 S3 Express One Zone 時，建議您使用最新版的 AWS SDK。S3 Express One Zone 支援的 AWS SDKs 會代表您處理工作階段的建立、重新整理和終止。這表示您可以在下載和安裝 AWS SDKs並設定必要的 IAM 許可之後，立即開始使用 API 操作。如需詳細資訊，請參閱[使用 IAM 授權地區端點 API 操作](s3-express-security-iam.md)。

如需有關 AWS SDKs 的資訊，包括如何下載和安裝它們，請參閱[在 上建置的工具 AWS](https://aws.amazon.com/developer/tools/)。

如需 AWS SDK 範例，請參閱下列內容：
+ [在可用區域中建立目錄儲存貯體](directory-bucket-create.md)
+ [清空目錄儲存貯體](directory-bucket-empty.md)
+ [刪除目錄儲存貯體](directory-bucket-delete.md)

## AWS Command Line Interface (AWS CLI)
<a name="s3-express-getting-started-cli"></a>

您可以使用 AWS Command Line Interface (AWS CLI) 建立目錄儲存貯體，並使用 S3 Express One Zone 支援的地區和區域端點 API 操作。

若要開始使用 AWS CLI，請參閱《 *AWS CLI 命令參考*》中的[開始使用 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) 。

**注意**  
若要搭配[高階`aws s3`命令](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3-commands.html)使用目錄儲存貯體，請將 更新 AWS CLI 為最新版本。如需如何安裝和設定 的詳細資訊 AWS CLI，請參閱《 *AWS CLI 命令參考*》中的[安裝或更新最新版本的 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

如需 AWS CLI 範例，請參閱下列內容：
+ [在可用區域中建立目錄儲存貯體](directory-bucket-create.md)
+ [清空目錄儲存貯體](directory-bucket-empty.md)
+ [刪除目錄儲存貯體](directory-bucket-delete.md)

# 目錄儲存貯體 API 操作
<a name="s3-express-APIs"></a>

若要管理目錄儲存貯體，您可以使用地區 (儲存貯體層級或控制平面) 端點 API 操作。若要管理目錄儲存貯體中的物件，您可以使用區域 (物件層級或資料平面) 端點 API 操作。如需詳細資訊，請參閱[目錄儲存貯體的網路](s3-express-networking.md)及[端點和閘道 VPC 端點](directory-bucket-high-performance.md#s3-express-overview-endpoints)。

**區域 (Region) 端點 API 操作**  
下列區域端點 API 操作支援目錄儲存貯體：
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPoint.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPoint.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPointPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPointPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPointScope.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPointScope.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPoint.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPointPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPointPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPointScope.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPointScope.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessPointsForDirectoryBuckets.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessPointsForDirectoryBuckets.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListDirectoryBuckets.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListDirectoryBuckets.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListTagsForResource.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListTagsForResource.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutAccessPointPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutAccessPointPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutAccessPointScope.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutAccessPointScope.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_TagResource.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_TagResource.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UntagResource.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UntagResource.html)

**區域端點 API 操作**  
下列區域端點 API 操作支援目錄儲存貯體：
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_RenameObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_RenameObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)

# 搭配使用標籤和 S3 目錄儲存貯體
<a name="directory-buckets-tagging"></a>

 AWS 標籤是金鑰值對，可保留資源的中繼資料，在此情況下為 Amazon S3 目錄儲存貯體。您可以在建立 S3 目錄儲存貯體，或管理現有目錄儲存貯體上的標籤時，標記 S3 目錄儲存貯體。如需有關標籤的一般資訊，請參閱 [成本分配或屬性型存取控制 (ABAC) 的標記](tagging.md)。

**注意**  
對於目錄儲存貯體使用標籤，除了標準的 S3 API 請求費率之外，不會收取額外費用。如需詳細資訊，請參閱 [Simple Storage Service (Amazon S3) 定價](https://aws.amazon.com/s3/pricing/)。

## 搭配使用標籤和目錄儲存貯體的常見方式
<a name="common-ways-to-use-tags-directory-bucket"></a>

在 S3 目錄儲存貯體上使用標籤於：

1. **成本分配** – 依照 AWS 帳單與成本管理中的儲存貯體標籤追蹤儲存成本。如需詳細資訊，請參閱[使用標籤分配成本](https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-cost-allocation)。

1. **屬性型存取控制 (ABAC)** – 根據標籤擴展存取權限，並授予對 S3 目錄儲存貯體的存取權限。如需詳細資訊，請參閱[使用標籤執行 ABAC](https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac)。

**注意**  
您可以將相同的標籤同時用於成本分配和存取控制。

### 適用於 S3 目錄儲存貯體的 ABAC
<a name="abac-for-directory-buckets"></a>

Amazon S3 目錄儲存貯體支援使用標籤的屬性型存取控制 (ABAC)。在 AWS 組織、IAM 和 S3 目錄儲存貯體政策中使用標籤型條件索引鍵。對於企業，Amazon S3 中的 ABAC 支援跨多個 AWS 帳戶進行授權。

在 IAM 政策中，您可以使用下列[全域條件索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys)，根據儲存貯體的標籤來控制對 S3 目錄儲存貯體的存取：
+ `aws:ResourceTag/key-name`
  + 使用此鍵來將您在政策中所指定的標籤鍵值對與連接到資源的鍵值對進行比較。例如，您可以要求只在資源擁有連接標籤鍵 `Dept` 和值 `Marketing` 時才允許資源的存取。如需詳細資訊，請參閱[控制對 AWS 資源的存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources)。
+ `aws:RequestTag/key-name`
  + 使用此鍵來將請求中傳遞的標籤鍵/值對與您在政策中所指定的標籤對進行比較。例如，您可以檢查請求是否包含標籤鍵 `Dept` 並且其具有值 `Accounting`。如需詳細資訊，請參閱在[AWS 請求期間控制存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-requests)。您可以使用此條件索引鍵，限制在 `TagResource` 和 `CreateBucket` API 操作期間可以傳遞哪些標籤鍵值對。
+ `aws:TagKeys`
  + 使用此鍵來將請求中的標籤鍵與您在政策中所指定的鍵進行比較。當使用政策來控制使用標籤的存取時，建議您使用 `aws:TagKeys` 條件鍵來定義允許的標籤鍵。如需範例政策和詳細資訊，請參閱[根據標籤金鑰控制存取權限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-tag-keys)。您可以建立具有標籤的 S3 目錄儲存貯體。若要在 `CreateBucket` API 操作期間允許標記，您必須建立同時包含 `s3express:TagResource` 和 `s3express:CreateBucket` 動作的政策。然後，您可以使用 `aws:TagKeys` 條件索引鍵，以強制在 `CreateBucket` 請求中使用特定的標籤。
+ `s3express:BucketTag/tag-key`
  + 使用此條件索引鍵，運用標籤將許可權授予目錄儲存貯體中的特定資料。透過使用存取點存取目錄儲存貯體時，此條件索引鍵在對存取點和目錄儲存貯體授權時，都會參考目錄儲存貯體上的標籤，而 `aws:ResourceTag/tag-key` 只會參考其獲授權的資源標籤。

### 目錄儲存貯體的範例 ABAC 政策
<a name="example-directory-buckets-abac-policies"></a>

請參閱下列適用於 Amazon S3 目錄儲存貯體的範例 ABAC 政策。

#### 1.1 - IAM 政策，可建立或修改具有特定標籤的儲存貯體
<a name="example-user-policy-request-tag"></a>

在此 IAM 政策中，具有此政策的使用者或角色只有在儲存貯體於儲存貯體建立請求中，以標籤索引鍵 `project` 和標籤值 `Trinity` 來標記儲存貯體時，才能建立 S3 目錄儲存貯體。只要 `TagResource` 請求包含標籤鍵值對 `project:Trinity`，他們也可以在現有 S3 目錄儲存貯體上，新增或修改標籤。此政策不會授予對儲存貯體或其物件的讀取、寫入或刪除權限。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CreateBucketWithTags",
      "Effect": "Allow",
      "Action": [
        "s3express:CreateBucket",
        "s3express:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/project": [
            "Trinity"
          ]
        }
      }
    }
  ]
}
```

#### 1.2 - 儲存貯體政策，可使用標籤限制儲存貯體上的操作
<a name="example-user-policy-resource-tag"></a>

在此儲存貯體政策中，只要在儲存貯體 `project` 標籤的值符合主體的 `project` 標籤值時，IAM 主體 (使用者和角色) 就能在儲存貯體上使用 `CreateSession` 動作來執行操作。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowObjectOperations",
      "Effect": "Allow",
      "Principal": {
        "AWS": "111122223333"
      },
      "Action": "s3express:CreateSession",
      "Resource": "arn:aws::s3express:us-west-2:111122223333:bucket/amzn-s3-demo-bucket--usw2-az1--x-s3",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        }
      }
    }
  ]
}
```

#### 1.3 - IAM 政策，可修改維護標記治理之現有資源上的標籤
<a name="example-user-policy-tag-keys"></a>

在此 IAM 政策中，只有在儲存貯體的 `project` 標籤值符合主體的 `project` 標籤值時，IAM 主體 (使用者或角色) 才能修改儲存貯體上的標籤。這些目錄儲存貯體僅允許 `aws:TagKeys` 條件索引鍵中指定的四個標籤 `project`、`environment`、`owner` 和 `cost-center`。這有助於強制執行標籤治理、防止未經授權的標籤修改，並且使所有儲存貯體的標記結構描述保持一致。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnforceTaggingRulesOnModification",
      "Effect": "Allow",
      "Action": [
        "s3express:TagResource"
      ],
      "Resource": "arn:aws::s3express:us-west-2:111122223333:bucket/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "project",
            "environment",
            "owner",
            "cost-center"
          ]
        }
      }
    }
  ]
}
```

#### 1.4 - 使用 s3express:BucketTag 條件索引鍵
<a name="example-policy-bucket-tag"></a>

在此 IAM 政策中，只有當儲存貯體具有標籤索引鍵 `Environment` 和標籤值 `Production` 時，條件陳述式才會允許存取儲存貯體的資料。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessToSpecificAccessPoint",
      "Effect": "Allow",
      "Action": "*",
      "Resource": "arn:aws::s3express:us-west-2:111122223333:accesspoint/*",
      "Condition": {
        "StringEquals": {
          "s3express:BucketTag/Environment": "Production"
        }
      }
    }
  ]
}
```

## 管理目錄儲存貯體的標籤
<a name="working-with-tags"></a>

您可以使用 Amazon S3 主控台、 AWS 命令列界面 (CLI)、 AWS SDKs 或使用 S3 APIs 來新增或管理 S3 目錄儲存貯體的標籤：[TagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_TagResource.html)、[UntagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UntagResource.html) 和 [ListTagsForResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListTagsForResource.html)。如需詳細資訊，請參閱：

**Topics**
+ [搭配使用標籤和目錄儲存貯體的常見方式](#common-ways-to-use-tags-directory-bucket)
+ [管理目錄儲存貯體的標籤](#working-with-tags)
+ [建立具有標籤的目錄儲存貯體](directory-bucket-create-tag.md)
+ [將標籤新增至目錄儲存貯體](directory-bucket-tag-add.md)
+ [檢視目錄儲存貯體標籤](directory-bucket-tag-view.md)
+ [從目錄儲存貯體刪除標籤](directory-bucket-tag-delete.md)

# 建立具有標籤的目錄儲存貯體
<a name="directory-bucket-create-tag"></a>

您可以在建立 Amazon S3 目錄儲存貯體時為其加上標籤。對於目錄儲存貯體使用標籤，除了標準的 S3 API 請求費率之外，不會收取額外費用。如需詳細資訊，請參閱 [Simple Storage Service (Amazon S3) 定價](https://docs.aws.amazon.com/s3/pricing/)。如需有關標記目錄儲存貯體的詳細資訊，請參閱 [搭配使用標籤和 S3 目錄儲存貯體](directory-buckets-tagging.md)。

## 許可
<a name="create-tag-permissions"></a>

若要建立具有標籤的目錄儲存貯體，您必須具有下列許可權：
+ `s3express:CreateBucket`
+ `s3express:TagResource`

## 故障診斷錯誤
<a name="create-tag-troubleshooting"></a>

如果您在嘗試建立具有標籤的目錄儲存貯體時遇到錯誤，您可以執行下列動作：
+ 確認您擁有建立目錄儲存貯體，並為其新增標籤時所需的 [許可](#create-tag-permissions)。
+ 檢查您的 IAM 使用者政策是否具備任何屬性型存取控制 (ABAC) 條件。您可能需要使用特定的標籤索引鍵和值，才能標記目錄儲存貯體。如需詳細資訊，請參閱[使用屬性型存取控制 (ABAC) 的標籤](tagging.md#using-tags-for-abac)。

## 步驟
<a name="create-tag-steps"></a>

您可以使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI)、Amazon S3 REST API 和 AWS SDKs建立已套用標籤的目錄儲存貯體。

## 使用 S3 主控台
<a name="directory-bucket-create-tag-console"></a>

使用 Amazon S3 主控台建立具有標籤的目錄儲存貯體：

1. 從 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 登入 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**目錄儲存貯體**。

1. 選擇**建立儲存貯體**以建立新的儲存貯體。

1. 您可以建立兩種類型的目錄儲存貯體：

   在可用區域中，為高效能工作負載建立目錄儲存貯體。如需詳細資訊，請參閱[高效能工作負載](directory-bucket-high-performance.md)。

   在 Local Zone 中，為資料落地工作負載建立目錄儲存貯體。如需詳細資訊，請參閱[資料落地工作負載](directory-bucket-data-residency.md)。

1. 對於這兩種類型的目錄儲存貯體，在**建立儲存貯體**頁面上，在建立新目錄儲存貯體時可採用**標籤**選項。

1. 輸入儲存貯體的名稱。如需詳細資訊，請參閱[目錄儲存貯體命名規則](directory-bucket-naming-rules.md)。

1. 選擇**新增標籤**以開啟標籤編輯器，然後輸入標籤鍵值對。標籤鍵為必要項，但標籤是選用的。

1. 若要新增另一個標籤，請再次選擇**新增標籤**。您最多能輸入 50 個鍵值對。

1. 完成指定新目錄儲存貯體的選項後，選擇**建立儲存貯體**。

## 使用 AWS SDKs
<a name="directory-bucket-create-tag-sdks"></a>

------
#### [ SDK for Java 2.x ]

此範例示範如何使用 AWS SDK for Java 2.x建立目錄儲存貯體。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.BucketInfo;
import software.amazon.awssdk.services.s3.model.BucketType;
import software.amazon.awssdk.services.s3.model.CreateBucketConfiguration;
import software.amazon.awssdk.services.s3.model.CreateBucketRequest;
import software.amazon.awssdk.services.s3.model.CreateBucketResponse;
import software.amazon.awssdk.services.s3.model.DataRedundancy;
import software.amazon.awssdk.services.s3.model.LocationInfo;
import software.amazon.awssdk.services.s3.model.LocationType;
import software.amazon.awssdk.services.s3.model.Tag;

public class CreateBucketWithTagsExample {
    public static void createBucketWithTagsExample() {
        S3Client s3 = S3Client.builder().region(Region.US_WEST_2).build();

        CreateBucketConfiguration bucketConfiguration = CreateBucketConfiguration.builder()
                .location(LocationInfo.builder()
                        .type(LocationType.AVAILABILITY_ZONE)
                        .name("usw2-az1").build())
                .bucket(BucketInfo.builder()
                        .type(BucketType.DIRECTORY)
                        .dataRedundancy(DataRedundancy.SINGLE_AVAILABILITY_ZONE)
                        .build())
                .tags(Tag.builder().key("MyTagKey").value("MyTagValue").build())
                .build();

        CreateBucketRequest createBucketRequest = CreateBucketRequest.builder()
                .bucket("amzn-s3-demo-bucket--usw2-az1--x-s3--usw2-az1--x-s3")
                .createBucketConfiguration(bucketConfiguration)
                .build();

        CreateBucketResponse response = s3.createBucket(createBucketRequest);
        System.out.println("Status code (should be 200):");
        System.out.println(response.sdkHttpResponse().statusCode());
    }
}
```

------

## 使用 REST API
<a name="directory-bucket-tag-delete-api"></a>

如需有關 Amazon S3 REST API 對於建立具有標籤的存取授權的目錄儲存貯體的支援資訊，請參閱《Amazon Simple Storage Service API 參考》**中的以下區段：
+ [CreateBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)

## 使用 AWS CLI
<a name="directory-bucket-create-tag-cli"></a>

若要安裝 AWS CLI，請參閱《 [AWS 使用者指南》中的安裝 CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。 *AWS Command Line Interface *

下列 CLI 範例示範如何使用 AWS CLI建立具有標籤的目錄儲存貯體。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

建立目錄儲存貯體時，您必須提供組態詳細資訊，並使用下列命名慣例：`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=zone-id},Bucket={DataRedundancy=SingleAvailabilityZone,Type=Directory},Tags=[{Key=mykey1,Value=myvalue1}, {Key=mykey2,Value=myvalue2}]"
```

**回應：**

```
{
  "Location": "http://bucket--use1-az4--x-s3.s3express-use1-az4.us-east-1.amazonaws.com/"
}
```

# 將標籤新增至目錄儲存貯體
<a name="directory-bucket-tag-add"></a>



您可以將標籤新增至 Amazon S3 目錄儲存貯體，並修改這些標籤。對於目錄儲存貯體使用標籤，除了標準的 S3 API 請求費率之外，不會收取額外費用。如需詳細資訊，請參閱 [Simple Storage Service (Amazon S3) 定價](https://docs.aws.amazon.com/s3/pricing/)。如需有關標記目錄儲存貯體的詳細資訊，請參閱 [搭配使用標籤和 S3 目錄儲存貯體](directory-buckets-tagging.md)。

## 許可
<a name="tag-add-permissions"></a>

若要將標籤新增至目錄儲存貯體，您必須具有下列權限：
+ `s3express:TagResource`

## 故障診斷錯誤
<a name="tag-add-troubleshooting"></a>

如果您在嘗試將標籤新增至目錄儲存貯體時遇到錯誤，您可以執行下列動作：
+ 確認您具備將標籤新增至目錄儲存貯體時所需的 [許可](#tag-add-permissions)。
+ 如果您嘗試新增以 AWS 預留字首 開頭的標籤金鑰`aws:`，請變更標籤金鑰，然後再試一次。

## 步驟
<a name="tag-add-steps"></a>

您可以使用 Amazon S3 主控台、 AWS 命令列界面 (AWS CLI)、Amazon S3 REST API 和 AWS SDKs。

## 使用 S3 主控台
<a name="directory-bucket-tag-add-console"></a>

使用 Amazon S3 主控台將標籤新增至目錄儲存貯體：

1. 從 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 登入 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**目錄儲存貯體**。

1. 選擇儲存貯體名稱。

1. 選擇**屬性**索引標籤。

1. 捲動至**標籤**區段，選擇**新增標籤**。

1. **新增標籤**頁面隨即開啟。您最多可以輸入 50 個鍵值對。

1. 若您使用與現有標籤相同的標籤鍵名稱來新增標籤，新標籤值會覆寫現有標籤值。

1. 在此頁面上，您也可以編輯現有標籤的值。

1. 新增標籤後，選擇**儲存變更**。

## 使用 AWS SDKs
<a name="directory-bucket-tag-add-sdks"></a>

------
#### [ SDK for Java 2.x ]

此範例示範如何使用 AWS SDK for Java 2.x將標籤新增至目錄儲存貯體。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3control.S3ControlClient;
import software.amazon.awssdk.services.s3control.model.Tag;
import software.amazon.awssdk.services.s3control.model.TagResourceRequest;
import software.amazon.awssdk.services.s3control.model.TagResourceResponse;

public class TagResourceExample {
    public static void tagResourceExample() {
        S3ControlClient s3Control = S3ControlClient.builder().region(Region.US_WEST_2).build();

        TagResourceRequest tagResourceRequest = TagResourceRequest.builder()
                .resourceArn("arn:aws::s3express:us-west-2:111122223333:bucket/my-directory-bucket--usw2-az1--x-s3")
                .accountId("111122223333")
                .tags(Tag.builder().key("MyTagKey").value("MyTagValue").build())
                .build();

        TagResourceResponse response = s3Control.tagResource(tagResourceRequest);
        System.out.println("Status code (should be 204):");
        System.out.println(response.sdkHttpResponse().statusCode());
    }
}
```

------

## 使用 REST API
<a name="directory-bucket-tag-add-api"></a>

如需有關 Amazon S3 REST API 對於將標籤新增至目錄儲存貯體的支援資訊，請參閱《Amazon Simple Storage Service API 參考》**中的以下區段：
+ [TagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_TagResource.html)

## 使用 AWS CLI
<a name="directory-bucket-tag-add-cli"></a>

若要安裝 AWS CLI，請參閱《 [AWS 使用者指南》中的安裝 CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。 *AWS Command Line Interface *

下列 CLI 範例示範如何使用 AWS CLI將標籤新增至目錄儲存貯體。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

**要求:**

```
aws s3control tag-resource \
--account-id 111122223333 \
--resource-arn arn:aws::s3express:us-east-1:444455556666:bucket/prefix--use1-az4--x-s3 \
--tags "Key=mykey,Value=myvalue"
```

**回應：**

```
{
  "ResponseMetadata": {
      "RequestId": "EXAMPLE123456789",
      "HTTPStatusCode": 200,
      "HTTPHeaders": {
          "date": "Wed, 19 Jun 2025 10:30:00 GMT",
          "content-length": "0"
      },
      "RetryAttempts": 0
  }
}
```

# 檢視目錄儲存貯體標籤
<a name="directory-bucket-tag-view"></a>

您可以檢視或列示套用至 S3 目錄儲存貯體的標籤。如需標籤的詳細資訊，請參閱[搭配使用標籤和 S3 目錄儲存貯體](directory-buckets-tagging.md)。

## 許可
<a name="tag-view-permissions"></a>

若要檢視套用至目錄儲存貯體的標籤，您必須具有下列權限：
+ `s3express:ListTagsForResource`

## 故障診斷錯誤
<a name="tag-view-troubleshooting"></a>

如果您在嘗試列出或檢視目錄儲存貯體的標籤時遇到錯誤，您可以執行下列動作：
+ 確認您具有檢視或列出目錄儲存貯體的標籤時所需的 [許可](#tag-view-permissions)。

## 步驟
<a name="tag-view-steps"></a>

您可以使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI)、Amazon S3 REST API 和 AWS SDKs標籤。

## 使用 S3 主控台
<a name="directory-bucket-tag-view-console"></a>

使用 Amazon S3 主控台檢視套用至目錄儲存貯體的標籤：

1. 從 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 登入 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**目錄儲存貯體**。

1. 選擇儲存貯體名稱。

1. 選擇**屬性**索引標籤。

1. 捲動至**標籤**區段，檢視所有套用至目錄儲存貯體的標籤。

1. **標籤**區段預設顯示**使用者定義的標籤**。您可以選取 **AWS產生的標籤**標籤，以檢視依 AWS 服務套用至目錄儲存貯體的標籤。

## 使用 AWS SDKs
<a name="directory-bucket-tag-view-sdks"></a>

本節提供範例，說明如何使用 AWS SDKs 檢視套用至目錄儲存貯體的標籤。

------
#### [ SDK for Java 2.x ]

此範例示範如何使用 AWS SDK for Java 2.x檢視套用至目錄儲存貯體的標籤。

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3control.S3ControlClient;
import software.amazon.awssdk.services.s3control.model.ListTagsForResourceRequest;
import software.amazon.awssdk.services.s3control.model.ListTagsForResourceResponse;

public class ListTagsForResourceExample {
    public static void listTagsForResourceExample() {
        S3ControlClient s3Control = S3ControlClient.builder().region(Region.US_WEST_2).build();

        ListTagsForResourceRequest listTagsForResourceRequest = ListTagsForResourceRequest.builder()
                .resourceArn("arn:aws::s3express:us-west-2:111122223333:bucket/my-directory-bucket--usw2-az1--x-s3")
                .accountId("111122223333")
                .build();

        ListTagsForResourceResponse response = s3Control.listTagsForResource(listTagsForResourceRequest);
        System.out.println("Tags on my resource:");
        System.out.println(response.toString());
    }
}
```

------

## 使用 REST API
<a name="directory-bucket-tag-view-api"></a>

如需有關 Amazon S3 REST API 對於檢視套用至目錄儲存貯體的標籤的支援資訊，請參閱《Amazon Simple Storage Service API 參考》**中的以下區段：
+ [ListTagsForResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListTagsForResource.html)

## 使用 AWS CLI
<a name="directory-bucket-tag-view-cli"></a>

若要安裝 AWS CLI，請參閱《 [AWS 使用者指南》中的安裝 CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。 *AWS Command Line Interface *

下列 CLI 範例示範如何檢視套用至目錄儲存貯體的標籤。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

**要求:**

```
aws s3control list-tags-for-resource \
--account-id 111122223333 \
--resource-arn arn:aws::s3express:us-east-1:444455556666:bucket/prefix--use1-az4--x-s3 \
```

**回應 - 具有標籤：**

```
{
  "Tags": [
      {
          "Key": "MyKey1",
          "Value": "MyValue1"
      },
      {
          "Key": "MyKey2",
          "Value": "MyValue2"
      },
      {
          "Key": "MyKey3",
          "Value": "MyValue3"
      }
  ]
}
```

**回應 - 沒有標籤：**

```
{
  "Tags": []
}
```

# 從目錄儲存貯體刪除標籤
<a name="directory-bucket-tag-delete"></a>

您可以從 S3 目錄儲存貯體移除標籤。 AWS 標籤是金鑰值對，可保留資源的中繼資料，在此情況下為 Amazon S3 目錄儲存貯體。如需標籤的詳細資訊，請參閱[搭配使用標籤和 S3 目錄儲存貯體](directory-buckets-tagging.md)。

**注意**  
如果刪除標籤後才發現標籤用於追蹤成本或存取控制，此時您可以將該標籤加回目錄儲存貯體。

## 許可
<a name="tag-delete-permissions"></a>

若要從目錄儲存貯體刪除標籤，您必須具有下列權限：
+ `s3express:UntagResource`

## 故障診斷錯誤
<a name="tag-delete-troubleshooting"></a>

如果您在嘗試從目錄儲存貯體刪除標籤時遇到錯誤，您可以執行下列動作：
+ 確認您具備從目錄儲存貯體刪除標籤時所需的 [許可](#tag-delete-permissions)。

## 步驟
<a name="tag-delete-steps"></a>

您可以使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI)、Amazon S3 REST API 和 AWS SDKs，從目錄儲存貯體刪除標籤。

## 使用 S3 主控台
<a name="directory-bucket-tag-delete-console"></a>

使用 Amazon S3 主控台，從目錄儲存貯體刪除標籤：

1. 從 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 登入 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**目錄儲存貯體**。

1. 選擇儲存貯體名稱。

1. 選擇**屬性**索引標籤。

1. 捲動至**標籤**區段，然後選取您要刪除的標籤旁的核取方塊。

1. 選擇 **刪除**。

1. **刪除使用者定義的標籤**快顯視窗隨即出現，並且要求您確認是否刪除您選取的標籤。

1. 選擇**刪除**以確認刪除。

## 使用 AWS SDKs
<a name="directory-bucket-tag-delete-sdks"></a>

------
#### [ SDK for Java 2.x ]

此範例示範如何使用 AWS SDK for Java 2.x從目錄儲存貯體刪除標籤。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3control.S3ControlClient;
import software.amazon.awssdk.services.s3control.model.UntagResourceRequest;
import software.amazon.awssdk.services.s3control.model.UntagResourceResponse;

public class UntagResourceExample {
    public static void untagResourceExample() {
        S3ControlClient s3Control = S3ControlClient.builder().region(Region.US_WEST_2).build();

        UntagResourceRequest untagResourceRequest = UntagResourceRequest.builder()
                .resourceArn("arn:aws::s3express:us-west-2:111122223333:bucket/my-directory-bucket--usw2-az1--x-s3")
                .accountId("111122223333")
                .tagKeys("myTagKey")
                .build();

        UntagResourceResponse response = s3Control.untagResource(untagResourceRequest);
        System.out.println("Status code (should be 204):");
        System.out.println(response.sdkHttpResponse().statusCode());
    }
}
```

------

## 使用 REST API
<a name="directory-bucket-tag-delete-api"></a>

如需有關 Amazon S3 REST API 對於從目錄儲存貯體刪除標籤的支援資訊，請參閱《Amazon Simple Storage Service API 參考》**中的以下區段：
+ [UnTagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UntagResource.html)

## 使用 AWS CLI
<a name="directory-bucket-tag-delete-cli"></a>

若要安裝 AWS CLI，請參閱《 [AWS 使用者指南》中的安裝 CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。 *AWS Command Line Interface *

下列 CLI 範例示範如何使用 AWS CLI，從目錄儲存貯體刪除標籤。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

**要求:**

```
aws s3control untag-resource \
--account-id 111122223333 \
--resource-arn arn:aws::s3express:us-east-1:444455556666:bucket/prefix--use1-az4--x-s3 \
--tag-keys "tagkey1" "tagkey2"
```

**回應：**

```
{
  "ResponseMetadata": {
    "RequestId": "EXAMPLE123456789",
    "HTTPStatusCode": 204,
    "HTTPHeaders": {
        "date": "Wed, 19 Jun 2025 10:30:00 GMT",
        "content-length": "0"
    },
    "RetryAttempts": 0
  }
}
```

# 在 S3 Express One Zone 中進行恢復能力測試
<a name="s3-express-fis"></a>

Amazon S3 Express One Zone 儲存類別支援使用 AWS Fault Injection Service (AWS FIS) 進行彈性測試，這項全受管服務可在您的 AWS 工作負載上執行故障注入實驗。使用 AWS FIS，您可以模擬目錄儲存貯體的連線中斷，導致區域 （物件層級或資料平面） 端點 API 操作逾時，如同在可用區域中斷期間一樣。

這些實驗可協助您：
+ 確認您的監控系統可以偵測 S3 Express One Zone 存取問題
+ 測試和強化復原程序
+ 驗證應用程式容錯移轉機制是否如預期般運作
+ 確保您的應用程式復原時間符合貴組織的服務水準目標 (SLO) 和服務水準協議 (SLA)

透過測試應用程式對模擬中斷的回應，您可以為影響 S3 Express One Zone 資料存取的實際可用區域中斷事件做更好的準備。

## 運作方式
<a name="s3-express-fis-how-it-works"></a>

測試使用 `aws:network:disrupt-connectivity` 動作，範圍設為 `S3 Express`。此動作會使 S3 Express One Zone 端點的網路連線中斷，導致目錄儲存貯體的請求逾時。

您可以鎖定應用程式正在執行的子網路，或用於存取 S3 Express One Zone 的閘道 VPC 端點。如需詳細資訊，請參閱《AWS Fault Injection Service 使用者指南》**中的可用 [AZ 可用性：電源中斷](https://docs.aws.amazon.com/fis/latest/userguide/az-availability-power-interruption.html)。

若要測試在 S3 Express One Zone 中儲存資料之應用程式的恢復能力，請參閱《AWS Fault Injection Service 使用者指南》**中的[模擬連線事件](https://docs.aws.amazon.com/fis/latest/userguide/fis-tutorial-disrupt-connectivity.html)。

## 考量和限制
<a name="s3-express-fis-considerations"></a>

請記住下列在 Amazon S3 Express One Zone 儲存類別中，對於中斷連線的考量和限制：

### 考量事項
<a name="s3-express-fis-considerations-general"></a>
+ **IAM 許可：**若要 AWS FIS 搭配 S3 Express One Zone 使用 ，您必須設定具有適當許可的 IAM 角色。如需 AWS FIS 角色的詳細資訊，請參閱[《 使用者指南》中的為 建立 IAM 角色 AWS FIS](https://docs.aws.amazon.com/fis/latest/userguide/getting-started-iam-service-role.html)。 *AWS Fault Injection Service *我們建議僅將這些許可範圍限定為必要的資源。
+ **目標解析：**目標會在實驗開始時解析。如果在實驗期間刪除目標子網路或閘道 VPC 端點，實驗將會失敗。
+ **共用資源影響：**如果多個應用程式共用相同的子網路或閘道 VPC 端點，則所有從這些應用程式輸送至 S3 Express One Zone 的流量，都會在實驗期間受到影響。
+ **回復行為：** AWS FIS 動作結束時，連線會自動還原，請求將恢復預期的操作，而無需手動介入。
+ **停止條件：**將適當的 CloudWatch 警示設定為停止條件，以便在發生非預期影響時自動終止實驗。

### 限制
<a name="s3-express-fis-limitations"></a>
+ **目標選擇：**您無法將特定 S3 目錄儲存貯體設定為目標。該動作會影響透過目標聯網元件存取的所有目錄儲存貯體。
+ **最大目標：**每個 AWS FIS 動作可以鎖定的最大子網路數量。如需詳細資訊，請參閱《AWS FIS 使用者指南》**中的 [AWS Fault Injection Service的 Service Quotas](https://docs.aws.amazon.com/fis/latest/userguide/fis-quotas.html)。
+ **存取方法：** AWS FIS 動作只會影響透過網際網路或閘道虛擬私有雲端 (VPC) 端點提出的請求。不支援來自介面 VPC 端點 (AWS PrivateLink) 的請求。
+ **區域可用性：**此功能僅適用於[支援 S3 Express One Zone 的AWS 區域](s3-express-Endpoints.md)。