

# ディレクトリバケットのユースケース
<a name="directory-bucket-use-cases"></a>

ディレクトリバケットは、アベイラビリティーゾーンまたはローカルゾーンのバケットロケーションタイプでバケットの作成をサポートしています。

低レイテンシーのユースケースでは、単一のアベイラビリティーゾーンにディレクトリバケットを作成してデータを保存できます。アベイラビリティーゾーンのディレクトリバケットは、S3 Express One Zone ストレージクラスをサポートしています。アプリケーションがパフォーマンスの影響を受けやすく、1 桁ミリ秒の `PUT` と `GET` のレイテンシーから利点が得られる場合は、S3 Express One Zone ストレージクラスをお勧めします。アベイラビリティーゾーンでのディレクトリバケットの作成の詳細については、「[高性能ワークロード](directory-bucket-high-performance.md)」を参照してください。

 データレジデンシーのユースケースでは、単一の AWS 専有ローカルゾーン (DLZ) にディレクトリバケットを作成してデータを保存できます。Local Zones のディレクトリバケットは、S3 One Zone-Infrequent Access (S3 One Zone-IA、Z-IA) ストレージクラスをサポートしています。Local Zones でのディレクトリバケットの作成の詳細については、「[データレジデンシーワークロード](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 は、最もレイテンシーの影響を受けやすいアプリケーションに 1 桁のミリ秒単位で一貫したデータアクセスを提供することを目的として構築された、高パフォーマンスのシングルアベイラビリティーゾーンの Amazon S3 ストレージ クラスです。S3 Express One Zone は、現在入手可能なレイテンシーが最も低いクラウドオブジェクトストレージクラスで、データアクセス速度は最大 10 倍速く、リクエストコストは S3 Standard より 50% 低減されます。リクエストが最大で 1 桁速く完了するため、アプリケーションは直ちにメリットを得られます。S3 Express One Zone は、その他の S3 ストレージクラスと同様のパフォーマンス伸縮性を備えています。S3 Express One Zone は、一貫して 1 桁ミリ秒のレイテンシーを必要とするワークロードやパフォーマンス重視のアプリケーションに使用します。

他の 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 は、Amazon EMR、Amazon SageMaker、AI、Amazon Athena など、分析や人工知能と機械学習 (AI/ML) のワークロードをサポートするためにその他の AWS のサービスと併用できます。

![\[S3 Express One Zone の仕組みを説明する図\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/s3-express-one-zone.png)


ディレクトリバケットは、S3 Express One Zone ストレージクラスを使用して、単一のアベイラビリティゾーン内の複数のデバイスにデータを保存しますが、複数のアベイラビリティゾーン間でデータを冗長的に保存することはありません。S3 Express One Zone を使用するためのディレクトリバケットを作成する場合は、パフォーマンスを最適化するために、Amazon EC2、Amazon Elastic Kubernetes Service、または Amazon Elastic Container Service (Amazon ECS) の各コンピューティングインスタンスにローカルな AWS リージョンおよびアベイラビリティーゾーンを指定することをお勧めします。

S3 Express One Zone を使用する場合、ゲートウェイ VPC エンドポイントを使用して、仮想プライベートクラウド (VPC) 内のディレクトリバケットを操作できます。ゲートウェイエンドポイントを使用すると、VPC 用のインターネットゲートウェイや NAT デバイスを必要とせず追加コストあんしで、VPC から S3 Express One Zone にディレクトリバケットにアクセスできます。

汎用バケットやその他のストレージクラスで使用しているのと同じ Amazon S3 の API オペレーションと機能の多くをディレクトリバケットでも使用できます。これには、Mountpoint for 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 SDK、Amazon S3 REST API を使用して S3 Express One Zone にアクセスすることができます。

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 リージョン の冗長電源、ネットワーク、および接続を備えた 1 つ以上の個別のデータセンターです。ディレクトリバケットを作成する際は、バケットの配置場所であるアベイラビリティーゾーンと 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` があります。ディレクトリバケットを作成した後、ゾーンエンドポイント 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 SDK](s3-express-SDKs.md#s3-express-getting-started-accessing-sdks) は、ユーザーに代わってセッションの確立と更新を処理します。セッションを保護するため、一時的なセキュリティ認証情報は 5 分後に期限切れになります。AWS SDK をダウンロードしてインストールし、必要な AWS Identity and Access Management (IAM) アクセス許可を設定したら、直ちに API オペレーションの使用を開始できます。

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

S3 Express One Zone では、次の S3 の機能が利用できます。サポートされている API とサポートされていない 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 は、ディレクトリバケットへのアクセスを安全に制御するうえで役立ちます。IAM を使用すると、`s3express:CreateSession` アクションを通じてバケット管理 (リージョン) API オペレーションとオブジェクト管理 (ゾーン) API オペレーションへのアクセスを許可できます。詳細については、「[IAM を使用したリージョンエンドポイント API オペレーションの承認](s3-express-security-iam.md)」を参照してください。オブジェクト管理アクションとは異なり、バケット管理アクションはクロスアカウント間で実行できません。バケット所有者のみが、このようなアクションを実行できます。
+ [バケットポリシー](s3-express-security-iam-example-bucket-policies.md) – IAM ベースのポリシー言語を使用して、ディレクトリバケットのリソースベースのアクセス許可を設定します。IAM を使用して `CreateSession` API オペレーションへのアクセスを制御することもできます。これにより、ゾーン 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 metrics](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 SDK、および AWS API オペレーションで実行されたアクションが含まれます。詳細については、「[S3 Express One Zone の AWS CloudTrail によるログ記録](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone-logging.html)」を参照してください。

**注記**  
Amazon S3 サーバーのアクセスログは S3 Express One Zone ではサポートされていません。

#### オブジェクト管理
<a name="s3-express-features-object-management"></a>

オブジェクトストレージを管理するには、Amazon S3 コンソール、AWS SDK、AWS CLI を使用できます。S3 Express One Zone でのオブジェクト管理には次の機能を使用できます。
+ [S3 バッチオペレーション](batch-ops-create-job.md) – バッチオペレーションを使用して、ディレクトリバケット内のオブジェクトに対して一括オペレーションを実行します。例には、**Copy**、**Invoke AWS Lambda 関数** などがあります。例えばバッチオペレーションを使用して、ディレクトリバケットと汎用バケット間でオブジェクトをコピーできます。バッチオペレーションを使用すると、AWS SDK または AWS CLI を使用するか、Amazon S3 コンソールで数回クリックするだけで、単一の S3 リクエストで数十億のオブジェクトを大規模に管理できます。
+ [インポート](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job.html) – ディレクトリバケット作成後、Amazon S3 コンソールのインポート機能を使用してバケットにオブジェクトを追加できます。インポートは、汎用バケットからディレクトリバケットにオブジェクトをコピーするバッチオペレーションジョブを作成するための効率的な方法です。

#### AWS SDK とクライアントライブラリ
<a name="s3-express-features-client-libraries"></a>

 オブジェクトストレージを管理するには、AWS SDK およびクライアントライブラリを使用できます。
+ [Mountpoint for Amazon S3](https://github.com/awslabs/mountpoint-s3/blob/main/doc/SEMANTICS.md) – Mountpoint for Amazon S3 は、高スループットのアクセスを実現するとともに、Amazon S3 のデータレイクのコンピューティングコストを削減するオープンソースのファイルクライアントです。Mountpoint for Amazon S3 は、ローカルファイルシステムの API コールを `GET` や `LIST` などの S3 オブジェクト API コールに変換します。ペタバイトのデータを処理できるため、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 は Hadoop の S3N ファイルシステムクライアントの後継です。
+ [PyTorch on AWS](https://docs.aws.amazon.com//sagemaker/latest/dg/pytorch.html) — PyTorch on AWS は、機械学習モデルの開発および本番環境へのデプロイを容易にするオープンソースの深層学習フレームワークです。
+ [AWS SDK](https://aws.amazon.com//developer/tools/) – Amazon S3 でのアプリケーション開発には AWS SDK を使用できます。AWS SDK は、基盤となる Amazon S3 REST API をラップして、プログラミング作業を簡素化します。S3 Express One Zone での AWS SDK の使用の詳細については、「[AWS SDK](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 では、アップロードまたはダウンロード中にデータを検証するために使用されるチェックサムアルゴリズムを選択するオプションが提供されます。CRC32、CRC32C、SHA-1、SHA-256 などのセキュアハッシュアルゴリズム (SHA) や巡回冗長検査 (CRC) データ整合性チェックアルゴリズムのいずれかを選択できます。MD5 ベースのチェックサムは S3 Express One Zone ストレージクラスではサポートされていません。

詳細については、「[S3 の追加のチェックサムのベストプラクティス](s3-express-optimizing-performance.md#s3-express-optimizing-performance-checksums)」を参照してください。

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

S3 Express One Zone は AWS Signature Version 4 (SigV4) を使用します。SigV4 は Amazon S3 に対する HTTP 経由のリクエストを認証するために使用される署名プロトコルです。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 は、すべての AWS リージョン のディレクトリバケット内のオブジェクトの `PUT` と `DELETE` リクエストに対して、読み取り後書き込みの強力な一貫性を提供します。詳細については、「[Amazon S3 のデータ整合性モデル](Welcome.md#ConsistencyModel)」を参照してください。

### 関連サービス
<a name="s3-express-related-services"></a>

S3 Express One Zone AWS のサービス ストレージクラスで次を使用して、特定の低レイテンシーのユースケースをサポートできます。
+ [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 は、AWS で独自の Kubernetes コントロールプレーンをインストール、運用、保守する必要がないマネージドサービスです。[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 はインタラクティブなクエリサービスで、Amazon S3 内のデータを標準 [SQL](https://docs.aws.amazon.com/athena/latest/ug/ddl-sql-reference.html) を使用して直接的に簡単に分析できます。また、Athena を使用すると、リソースの計画、設定、管理を必要とせずに Apache Spark を使用してデータ分析をインタラクティブに実行することもできます。Athena で Apache Spark アプリケーションを実行する場合は、処理用の Spark コードを送信して、結果を直接受け取ります。
+ [Amazon SageMaker トレーニング](https://docs.aws.amazon.com//sagemaker/latest/dg/how-it-works-training.html) – AWS Marketplace の組み込みアルゴリズム、カスタムアルゴリズム、ライブラリ、モデルなど、Amazon SageMaker でモデルをトレーニングするためのオプションを参照します。
+ [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 SDK、API で実行したアクションが含まれます。
+ [AWS CloudFormation ](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/Welcome.html) – AWS のリソースのモデリングおよびセットアップに役立つサービスです。リソース管理の時間を減らし、AWS で実行するアプリケーションに注力する時間を増加できます。使用するすべての AWS リソース (Amazon EC2 インスタンスや Amazon RDS DB インスタンスなど) を記述するテンプレートを作成すれば、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 One Zone のパフォーマンスの最適化](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 は、データに対する応答性の要件が似ている分析や機械学習のワークロード、特に小規模なアクセスやランダムアクセスが多いワークロードにも役立ちます。分析や人工知能と機械学習 (AI/ML) のワークロードをサポートするために、Amazon EMR、Amazon Athena、AWS Glue データカタログ、Amazon SageMaker モデルトレーニングなどの AWSと併用できます。S3 Express One Zone ストレージクラスとディレクトリバケットは、Amazon S3 コンソール、AWS SDK、AWS コマンドラインインターフェイス (AWS CLI)、Amazon S3 REST API を使って操作できます。詳細については、「[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/ja_jp/AmazonS3/latest/userguide/images/s3-express-one-zone.png)


**目的**  
このチュートリアルでは、ゲートウェイエンドポイントを作成し、次に IAM ポリシーを作成してアタッチします。その後、ディレクトリバケットを作成し、インポートアクションを使って現在汎用バケットに保存されているオブジェクトをディレクトリバケットに追加します。オブジェクトは手動でディレクトリバケットにアップロードすることもできます。

**Topics**
+ [前提条件](#s3-express-tutorial-prerequisites)
+ [ステップ 1: S3 Express One Zone ディレクトリバケットに到達するためのゲートウェイ VPC エンドポイントを設定する](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 Identity and Access Management (IAM) ユーザーとしてサインインできる AWS アカウントが必要です。

**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 にサインアップすると、Amazon S3 を含む AWS のすべてのサービスに対して AWS アカウント が自動的にサインアップされます。請求されるのは、使用したサービスの料金のみです。料金の詳細については、[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)」に従うことをお勧めします。ベストプラクティスでは、人間のユーザーと ID プロバイダーとのフェデレーションにより、一時的な認証情報を使用して AWS にアクセスする必要があります。追加のベストプラクティスとして、ワークロードでは一時的な認証情報で IAM ロールを使用し、AWS にアクセス必要があります。AWS IAM アイデンティティセンター を使用して一時的な認証情報を持つユーザーを作成する方法については、**「AWS IAM アイデンティティセンター ユーザーガイド」で[開始方法](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 を使用してユーザー、グループ、またはロールを作成し、それらのアイデンティティにアクセス許可をアタッチします。S3 Express One Zone アクセスのバケットポリシーまたは IAM アイデンティティポリシーに含めることができるリソースは、ディレクトリバケットのみです。

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 SDK を使用して S3 Express One Zone にアクセスしている場合、S3 Express One Zone がユーザーに代わってセッションを作成します。詳細については、「[`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. 次のポリシーを**ポリシーエディタ**ウィンドウにコピーします。ディレクトリバケットを作成したり、Amazon S3 Express One Zone を使用したりする前に、AWS Identity and Access Management (IAM) ロールまたはユーザーに必要なアクセス許可を付与する必要があります。このポリシー例では、`CreateSession` API オペレーション (他のゾーン 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. **[Create policy]** (ポリシーを作成) を選択します。

1.  IAM ポリシーを作成したら、IAM ユーザーにポリシーをアタッチできます。ナビゲーションペインで、**ポリシー** を選択してください。

1. **検索バー**に、ポリシー名を入力します。

1. **[アクション]** メニューの **[アタッチ]** を選択します。

1. **[Filter by Entity Type]** (エンティティタイプでフィルタリング) で、**[IAM ユーザー]** または **[ロール]** を選択します。

1. **検索フィールド**に、使用するユーザーまたはロールの名前を入力します。

1. ［**ポリシーをアタッチ**] を選択します。

**Topics**
+ [AWS アカウント を作成します。](#s3-express-create-account)
+ [AWS アカウントに IAM ユーザーを作成する (コンソール)](#s3-express-tutorial-user)
+ [IAM ポリシーを作成し、IAM ユーザーまたはロールにアタッチする (コンソール)](#s3-express-tutorial-polict)

# ステップ 1: S3 Express One Zone ディレクトリバケットに到達するためのゲートウェイ VPC エンドポイントを設定する
<a name="s3-express-tutorial-endpoints"></a>

 ゲートウェイ仮想プライベートクラウド (VPC) エンドポイントを通じて、ゾーン API オペレーションとリージョン API オペレーションの両方にアクセスできます。ゲートウェイエンドポイントを設定すると、トラフィックは NAT ゲートウェイを経由せずに S3 Express One Zone に到達できます。S3 Express One Zone の使用時に最適なネットワークパスが提供されるため、ゲートウェイエンドポイントを設定することを強くお勧めします。VPC 用のインターネットゲートウェイや NAT デバイスを必要とせず、追加コストなしで、VPC から S3 Express One Zone ディレクトリバケットにアクセスすることができます。S3 Express One Zone ストレージクラスのオブジェクトとディレクトリバケットに接続するゲートウェイエンドポイントは、次の手順を使用して設定します。

S3 Express One Zone にアクセスするには、標準の Amazon S3 エンドポイントとは異なるリージョンエンドポイントとゾーンエンドポイントを使用します。使用する 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) エンドポイントを介す必要があります。

 次の手順を使用して、S3 Express One Zone ストレージクラスのオブジェクトとディレクトリバケットに接続するゲートウェイエンドポイントを作成します。

**ゲートウェイ VPC エンドポイントを設定するには**

1. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) で Amazon VPC コンソールを開きます。

1. ナビゲーションペインの **[仮想プライベートクラウド]** で、**[エンドポイント]** を選択します。

1. **エンドポイントの作成** を選択します。

1. エンドポイントの名前を作成します。

1. **[サービスカテゴリ]** で、**[AWS のサービス]** を選択します。

1. **[サービス]** で、**タイプ = ゲートウェイ**のフィルターを使って検索し、**com.amazonaws.*region*.s3express** の隣にあるボタンをクリックします。

1. **[VPC]** で、エンドポイントを作成する VPC を選択します。

1. **[ルートテーブル]** で、エンドポイントで使用する Local Zone のルートテーブルを選択します。エンドポイントが作成されると、このステップで選択したルートテーブルにルートレコードが追加されます。

1. **[ポリシー]** では、**[フルアクセス]** を選択して、VPC エンドポイントのすべてのリソースに対するすべてのプリンシパルによるすべてのオペレーションを許可します。それ以外の場合は、**[カスタム]** を選択して、VPC エンドポイント経由でリソースに対してアクションを実行するためのプリンシパルのアクセス許可を制御する VPC エンドポイントポリシーをアタッチします。

1. **[IP address type]** (IP アドレスのタイプ) で、次のオプションから選択します。
   +  **[IPv4]** – エンドポイントネットワークインターフェイスに IPv4 アドレスを割り当てます。このオプションは、選択したすべてのサブネットに IPv4 のアドレス範囲があり、サービスが IPv4 リクエストを受け入れる場合にのみサポートされます。
   +  **[IPv6]** – エンドポイントネットワークインターフェイスに IPv6 アドレスを割り当てます。このオプションは、選択したすべてのサブネットが IPv6 のみのサブネットで、サービスが IIPv6 リクエストを受け入れる場合にのみサポートされます。
   +  **[デュアルスタック]** – エンドポイントネットワークインターフェイスに IPv4 と IPv6 両方のアドレスを割り当てます。このオプションは、選択したすべてのサブネットに IPv4 と IPv6 の両方のアドレス範囲があり、サービスが IPv4 リクエストと IPv6 リクエストの両方を受け入れる場合にのみサポートされます。

1. (オプション) タグを追加するには、**[新しいタグを追加]** をクリックして、タグのキーバリューを入力します。

1. **エンドポイントの作成** を選択します。

ゲートウェイエンドポイントを作成した後、リージョン API エンドポイントとゾーン API エンドポイントを使用して、Amazon S3 Express One Zone ストレージクラスのオブジェクトとディレクトリバケットにアクセスできます。

# ステップ 2: S3 Express One Zone ディレクトリバケットを作成する
<a name="s3-express-tutorial-create-directory-bucket"></a>

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、バケットを作成するリージョンを選択します。
**注記**  
レイテンシーとコストを最小化するため、さらに規制条件に対応するために、最寄りのリージョンを選択します。明示的に別のリージョンに移動する場合を除き、特定のリージョンに保管されたオブジェクトは、そのリージョンから移動されることはありません。Amazon S3 AWS リージョン のリストについては、**「Amazon Web Services 全般のリファレンス」の「[AWS のサービス エンドポイント](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)」を参照してください。

1. 左のナビゲーションペインで、**[ディレクトリバケット]** を選択します。

1. [**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 Local Zone) 内で一意である必要があります。
   + 名前は、サフィックスを含め 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 の 1 秒あたりのリクエスト (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 バケットキーは常に有効になります。S3 バケットキーは、ディレクトリバケット内の `GET` および `PUT` オペレーションで常に有効になっており、無効にすることはできません。SSE-KMS で暗号化されたオブジェクトを、[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)、[バッチオペレーションの Copy オペレーション](directory-buckets-objects-Batch-Ops.md)、または [import ジョブ](create-import-job.md)を使用して、汎用バケットからディレクトリバケットへ、ディレクトリバケットから汎用バケットへ、またはディレクトリバケット間でコピーする場合、S3 バケットキーはサポートされません。この場合、KMS で暗号化されたオブジェクトのコピーリクエストが実行されるたびに、Amazon S3 は AWS 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 を入力]** を選択し、**[AWS KMS key ARN]** に KMS キーの 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 デベロッパーガイド*の「[Identifying symmetric and asymmetric KMS keys](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html)」(対称および非対称 KMS キーの識別) を参照してください。

   Amazon S3 での AWS KMS の使用に関する詳細は、「[ディレクトリバケットでの 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 バッチオペレーションが使用されます。コピーのインポートジョブの進行状況は、S3 バッチオペレーションジョブの詳細ページからモニタリングできます。

**インポートアクションを使用するには**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、ディレクトリバケットがあるアベイラビリティーゾーンに関連付けられたリージョンを選択します。

1. 左のナビゲーションペインで、**[ディレクトリバケット]** を選択します。

1. オブジェクトをインポートする先のバケットの名前の隣にあるオプションボタンをクリックします。

1. [**インポート**] を選択します。

1. **[ソース]** には、インポートするオブジェクトを含む汎用バケット (またはプレフィックスを含むバケットパス) を入力します。リストから既存の汎用バケットを選択するには、**[Browse 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) を使用してサーバー側の暗号化 (SSE-S3) でこれらのオブジェクトを再暗号化します。
   + リストから既存の IAM ロールを選択するには、**[既存の IAM ロールから選択]** をクリックします。
   + Amazon リソースネーム (ARN) を入力して既存の IAM ロールを指定するには、**[IAM ロールの ARN の入力]** をクリックして、対応するフィールドに ARN を入力します。

1. **[送信先]** セクションと **[コピーされたオブジェクトの設定]** セクションに表示された情報を確認します。**[送信先]** セクションの情報が適切であれば、**[インポート]** をクリックしてコピージョブを開始します。

   Amazon S3 コンソールでは、新しいジョブのステータスが **[バッチオペレーション]** ページに表示されます。ジョブの詳細については、ジョブ名の横にあるオプションボタンを選択して、**[アクション]** メニューで **[詳細を表示]** を選択します。オブジェクトのインポート先となるディレクトリバケットを開くには、**[インポート先を表示]** を選択します。

# ステップ 4: オブジェクトを S3 Express One Zone ディレクトリバケットに手動でアップロードする
<a name="s3-express-tutorial-Upload"></a>

ディレクトリバケットにオブジェクトを手動でアップロードすることもできます。

**オブジェクトを手動でアップロードするには**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. ページ右上隅にあるナビゲーションバーで、現在表示されている AWS リージョンの名前をクリックします。次に、ディレクトリバケットがあるアベイラビリティーゾーンに関連付けられたリージョンを選択します。

1. 左のナビゲーションペインで、**[ディレクトリバケット]** を選択します。

1. フォルダまたはファイルをアップロードするバケットの名前を選択します。
**注記**  
 このチュートリアルの前のステップで使用したものと同じディレクトリバケットを選択した場合、ディレクトリバケットにはインポートツールでアップロードされたオブジェクトが追加されます。これらのオブジェクトは現在 S3 Express One Zone ストレージクラスに保存されていることに注意してください。

1. **[オブジェクト]** タブで、**[アップロード]** を選択します。

1. **[アップロード]** ページで、以下のいずれかを行います。
   + ファイルとフォルダを点線で示されているアップロードエリアにドラッグアンドドロップします。
   + **[ファイルの追加]** または **[フォルダの追加]** を選択し、アップロードするファイルまたはフォルダを選択して **[開く]** または **[アップロード]** を選択します。

1. **[チェックサム]** で、使用する **[チェックサム関数]** を選択します。
**注記**  
 S3 Express One Zone ストレージクラスで最高のパフォーマンスを実現するには、CRC32 と CRC32C を使用することをお勧めします。詳細については、「[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 Object Lock を有効にすることはできません。

   （オプション) オブジェクトにキーと値のペアのメタデータを追加する場合は、**[プロパティ]** セクションを展開し、**[メタデータ]**セクションで **[メタデータを追加]**を選択します。

1. リストされたファイルとフォルダをアップロードするには、**[アップロード]** を選択します。

   Amazon S3 はオブジェクトとフォルダをアップロードします。アップロードが完了すると、**[アップロード: ステータス]** ページに成功のメッセージが表示されます。

    ディレクトリバケットが正常に作成され、オブジェクトがバケットにアップロードされました。

# ステップ 5: S3 Express One Zone ディレクトリバケットを空にする
<a name="s3-express-tutoiral-Empty"></a>

Amazon S3 コンソールを使用して Amazon S3 ディレクトリバケットを空にできます。

**ディレクトリバケットを空にするには**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. ページ右上隅にあるナビゲーションバーで、現在表示されている AWS リージョンの名前をクリックします。次に、ディレクトリバケットがあるアベイラビリティーゾーンに関連付けられたリージョンを選択します。

1. 左のナビゲーションペインで、**[ディレクトリバケット]** を選択します。

1. 空にするバケットの名前の横にあるオプションボタンを選択し、**[空にする]** を選択します。

1. [**バケットを空にする**] ページで、テキストフィールドに **permanently delete** を入力することでバケットを空にすることを確定し、[**空にする**] を選択します。

1. **[バケットを空にする: ステータス]** ページで、バケットを空にするプロセスの進行状況をモニタリングします。

# ステップ 6: S3 Express One Zone ディレクトリバケットを削除する
<a name="s3-express-tutoiral-Delete"></a>

ディレクトリバケットを空にして進行中のすべてのマルチパートアップロードを中止したら、Amazon S3 コンソールを使用してバケットを削除できます。

**ディレクトリバケットを削除するには**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. ページ右上隅にあるナビゲーションバーで、現在表示されている AWS リージョンの名前をクリックします。次に、ディレクトリバケットがあるアベイラビリティーゾーンに関連付けられたリージョンを選択します。

1. 左のナビゲーションペインで、**[ディレクトリバケット]** を選択します。

1. **[ディレクトリバケット]** リストで、削除するバケット名の横にあるオプションボタンを選択します。

1. **[削除]** を選択します。

1. **[バケットの削除]** ページで、テキストフィールドにバケット名を入力して、バケットの削除を確定します。
**重要**  
ディレクトリバケットを削除すると、元に戻すことはできません。

1. バケットを削除するには、**[バケットの削除]** をクリックします。

## 次のステップ
<a name="s3-express-tutoiral-Next"></a>

このチュートリアルでは、ディレクトリバケットを作成して、S3 Express One Zone ストレージクラスを使用する方法を学習しました。このチュートリアルを完了すると、S3 Express One Zone ストレージクラスで使用できる関連 AWS サービスについて確認できます。

S3 Express One Zone AWS のサービス ストレージクラスで次を使用して、特定の低レイテンシーのユースケースをサポートできます。
+ [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) は、AWS 上で、独自の Kubernetes コントロールプレーンをインストール、運用、保守する必要がないマネージド型サービスです。[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 はインタラクティブなクエリサービスで、Amazon S3 内のデータを標準 [SQL](https://docs.aws.amazon.com/athena/latest/ug/ddl-sql-reference.html) を使用して直接的に簡単に分析できます。また、Athena を使用すると、リソースの計画、設定、管理を必要とせずに Apache Spark を使用してデータ分析をインタラクティブに実行することもできます。Athena で Apache Spark アプリケーションを実行する場合は、処理用の Spark コードを送信して、結果を直接受け取ります。
+ [AWS Glue データカタログ](https://docs.aws.amazon.com//glue/latest/dg/catalog-and-crawler.html) – AWS Glue は、分析を行うユーザーが複数のソースからのデータを簡単に検出、準備、移動、統合できるようにするサーバーレスのデータ統合サービスです。AWS Glue は分析、機械学習、アプリケーション開発に使用できます。AWSGlue データカタログ は、組織のデータセットに関するメタデータを保存する一元化されたリポジトリです。データソースの場所、スキーマ、およびランタイムメトリクスへのインデックスとして機能します。
+ [Amazon SageMaker Runtime Model Training](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 リージョン の冗長電源、ネットワーク、および接続を備えた 1 つ以上の個別のデータセンターです。低レイテンシーでの取り出しを最適化するために、Amazon S3 Express One Zone ストレージクラスのオブジェクトは、コンピューティングワークロードにローカルにある単一のアベイラビリティーゾーンの S3 ディレクトリバケットに冗長的に保存されます。ディレクトリバケットを作成する際は、バケットの配置場所であるアベイラビリティーゾーンと AWS リージョン を選択します。

AWS は、物理的なアベイラビリティーゾーンを AWS アカウント ごとのアベイラビリティーゾーン名にランダムにマップします。この方法は、各リージョンの最初のアベイラビリティーゾーンにリソースが集中するのではなく、AWS リージョン 内のアベイラビリティーゾーン全体にリソースを分散するのに役立ちます。その結果、AWS アカウント のアベイラビリティーゾーン `us-east-1a` は、別の AWS アカウント の `us-east-1a` と同じ物理的な場所を示さない可能性があります。詳細については、[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/ja_jp/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/ja_jp/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>

各リージョンとアベイラビリティーゾーンで使用できるリージョン API エンドポイントとゾーン API エンドポイントは、次の表のとおりです。


| リージョン名 | リージョン | アベイラビリティーゾーン ID | リージョンエンドポイント | ゾーンエンドポイント | 
| --- | --- | --- | --- | --- | 
|  米国東部 (バージニア北部)  |  `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. **[サービスカテゴリ]** で、**[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 のみのサブネットで、サービスが IIPv6 リクエストを受け入れる場合にのみサポートされます。
   +  **[デュアルスタック]** – エンドポイントネットワークインターフェイスに IPv4 と IPv6 両方のアドレスを割り当てます。このオプションは、選択したすべてのサブネットに IPv4 と IPv6 の両方のアドレス範囲があり、サービスが IPv4 リクエストと IPv6 リクエストの両方を受け入れる場合にのみサポートされます。

1. (オプション) タグを追加するには、**[新しいタグを追加]** をクリックして、タグのキーバリューを入力します。

1. **エンドポイントの作成** を選択します。

ゲートウェイエンドポイントを作成した後、リージョン API エンドポイントとゾーン API エンドポイントを使用して、Amazon S3 Express One Zone ストレージクラスのオブジェクトとディレクトリバケットにアクセスできます。

ゲートウェイ VPC エンドポイントの詳細については、「*AWS PrivateLink Guide*」の「[Gateway endpoints](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html)」を参照してください。データレジデンシーのユースケースでは、ゲートウェイ VPC エンドポイントを使用して VPC からのみバケットへのアクセスを有効にすることをお勧めします。アクセスが VPC または VPC エンドポイントに制限されている場合、AWS マネジメントコンソール、REST API、AWS CLI、および AWS SDK を介してオブジェクトにアクセスできます。

**注記**  
AWS マネジメントコンソールを使用して VPC または VPC エンドポイントへのアクセスを制限するには、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 ストレージ クラスは、低レイテンシーのユースケースをサポートし、単一のアベイラビリティーゾーン内でより高速なデータ処理を提供します。アプリケーションのパフォーマンスが重視され、1 桁のミリ秒単位の `PUT` と `GET` のレイテンシーでの利点が得られる場合は、S3 Express One Zone ストレージクラスを使用できるようにディレクトリバケットを作成することをお勧めします。

Amazon S3 バケットには、汎用バケットとディレクトリバケットの 2 種類があります。アプリケーションとパフォーマンス要件に最適なバケットタイプを選択する必要があります。汎用バケットはオリジナルの S3 バケットタイプです。汎用バケットはほとんどのユースケースとアクセスパターンに推奨されます。S3 Express One Zone を除くすべてのストレージクラスにわたってオブジェクトを保存できます。汎用バケットの詳細については、「[汎用バケットの概要](UsingBucket.md)」を参照してください。

ディレクトリバケットは、S3 Express One Zone ストレージクラスを使用します。これは、一貫して 1 桁ミリ秒のレイテンシーに維持する必要があるワークロードまたはパフォーマンス重視のアプリケーション向けに設計されています。S3 Express One Zone は、オブジェクトストレージをコンピューティングリソースと同じ場所に配置するオプションを提供し、単一のアベイラビリティーゾーンを選択できる最初の S3 ストレージクラスです。これにより、アクセス速度が最大限に高速化します。ディレクトリバケットを作成する場合、必要に応じて Amazon EC2、Amazon Elastic Kubernetes Service、または Amazon Elastic Container Service (Amazon ECS) コンピュートインスタンスのローカルにある AWS リージョン とアベイラビリティーゾーンを指定して、パフォーマンスを最適化できます。

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 マネジメントコンソール にサインインし、Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

1. ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、バケットを作成するリージョンを選択します。
**注記**  
レイテンシーとコストを最小化するため、さらに規制条件に対応するために、最寄りのリージョンを選択します。明示的に別のリージョンに移動する場合を除き、特定のリージョンに保管されたオブジェクトは、そのリージョンから移動されることはありません。Amazon S3 AWS リージョン のリストについては、**「Amazon Web Services 全般のリファレンス」の「[AWS のサービス エンドポイント](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)」を参照してください。

1. 左のナビゲーションペインで、**[ディレクトリバケット]** を選択します。

1. [**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 Local Zone) 内で一意である必要があります。
   + 名前は、サフィックスを含め 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 の 1 秒あたりのリクエスト (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 バケットキーは常に有効になります。S3 バケットキーは、ディレクトリバケット内の `GET` および `PUT` オペレーションで常に有効になっており、無効にすることはできません。SSE-KMS で暗号化されたオブジェクトを、[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)、[バッチオペレーションの Copy オペレーション](directory-buckets-objects-Batch-Ops.md)、または [import ジョブ](create-import-job.md)を使用して、汎用バケットからディレクトリバケットへ、ディレクトリバケットから汎用バケットへ、またはディレクトリバケット間でコピーする場合、S3 バケットキーはサポートされません。この場合、KMS で暗号化されたオブジェクトのコピーリクエストが実行されるたびに、Amazon S3 は AWS 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 を入力]** を選択し、**[AWS KMS key ARN]** に KMS キーの 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 デベロッパーガイド*の「[Identifying symmetric and asymmetric KMS keys](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html)」(対称および非対称 KMS キーの識別) を参照してください。

   Amazon S3 での AWS KMS の使用に関する詳細は、「[ディレクトリバケットでの AWS KMS キーによるサーバー側の暗号化 (SSE-KMS) の使用](s3-express-UsingKMSEncryption.md)」を参照してください。

1. **[バケットを作成する]** を選択します。バケットを作成したら、ファイルやフォルダをバケットに追加できます。詳細については、「[ディレクトリバケットでのオブジェクトの使用](directory-buckets-objects.md)」を参照してください。

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

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

AWS SDK for Go を使用してディレクトリバケットを作成する方法は、次の例のとおりです。

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

------
#### [ AWS SDK for JavaScript ]

AWS SDK for JavaScript を使用してディレクトリバケットを作成する方法は、次の例のとおりです。

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

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

SDK for .NET を使用してディレクトリバケットを作成する方法は、次の例のとおりです。

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

AWS SDK for Python (Boto3) を使用してディレクトリバケットを作成する方法は、次の例のとおりです。

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

AWS SDK for Ruby を使用してディレクトリバケットを作成する方法は、次の例のとおりです。

**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 エンドポイントとゾーン API エンドポイントを使用します。使用する Amazon S3 API オペレーションに応じて、リージョンゾーンエンドポイントまたはゾーンエンドポイントのいずれかが必要です。ゲートウェイエンドポイントは追加料金なしで使用できます。

バケットレベル (またはコントロールプレーン) API オペレーションは、リージョンエンドポイントを通じて利用でき、リージョンエンドポイント API オペレーションと呼ばれます。リージョンエンドポイント API オペレーションの例には、`CreateBucket`、`DeleteBucket` があります。

 S3 Express One Zone に保存するディレクトリバケットを作成する場合は、バケットを配置する先のアベイラビリティーゾーンを選択します。ディレクトリバケットにオブジェクトをアップロードして管理するには、ゾーンエンドポイント API オペレーションを使用できます。

オブジェクトレベル (またはデータプレーン) の API オペレーションは、ゾーンエンドポイントを通じて利用でき、ゾーンエンドポイント API オペレーションと呼ばれます。ゾーン別エンドポイント API オペレーションの例には、`CreateSession`、`PutObject` があります。


| リージョン名 | リージョン | アベイラビリティーゾーン ID | リージョンエンドポイント | ゾーンエンドポイント | 
| --- | --- | --- | --- | --- | 
|  米国東部 (バージニア北部)  |  `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 One Zone のパフォーマンスの最適化
<a name="s3-express-performance"></a>

Amazon S3 Express One Zone は、最もレイテンシーに敏感なアプリケーションに一貫した 1 桁ミリ秒のデータアクセスを提供することを目的として設計された、高パフォーマンスの単一アベイラビリティーゾーン (AZ) S3 ストレージクラスです。S3 Express One Zone は、単一のアベイラビリティーゾーン内で、Amazon Elastic Compute Cloud、Amazon Elastic Kubernetes Service、Amazon Elastic Container Service などの高パフォーマンスオブジェクトストレージと AWS コンピューティングリソースを同じロケーションに配置するオプションを提供する最初の S3 ストレージクラスです。ストレージとコンピューティングリソースを同じロケーションに配置すると、コンピューティングパフォーマンスとコストが最適化され、データ処理速度が向上します。

S3 Express One Zone は、その他の S3 ストレージ クラスと同様のパフォーマンスの伸縮性を提供します。ただし、最初のバイトの読み取りと書き込みのリクエストのレイテンシは一貫して 1 桁ミリ秒で、S3 Standard よりも最大 10 倍高速です。S3 Express One Zone は、非常に高い集約レベルまでのバーストスループットをサポートするようにゼロから設計されています。S3 Express One Zone ストレージ クラスは、カスタム構築されたアーキテクチャを使用してパフォーマンスを最適化し、高パフォーマンスハードウェアにデータを保存することで一貫して低いリクエストレイテンシーを実現します。S3 Express One Zone のオブジェクトプロトコルは強化され、認証とメタデータのオーバーヘッドが合理化されています。

レイテンシーをさらに短縮し、1 秒あたり最大 200 万回の読み取りと最大 200,000 回の書き込みをサポートするために、S3 Express One Zone はデータを Amazon S3 ディレクトリバケットに保存します。デフォルトでは、各ディレクトリバケットは、1 秒あたり最大 200,000 回の読み取りと最大 100,000 回の書き込みをサポートします。ワークロードでデフォルトの TPS 制限を超える必要がある場合は、[AWS サポート](https://support.console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase)を通じて引き上げをリクエストできます。

1 桁ミリ秒のデータアクセス速度と、1 秒あたりの大量のトランザクションに対応できるディレクトリバケットを実現する高パフォーマンスの専用ハードウェアとソフトウェアの組み合わせにより、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` のようなキーを持つオブジェクトをアップロードすると、Amazon S3 によってディレクトリ `dir1/` と `dir2/` が自動的に作成および管理されます。ディレクトリは `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>

ディレクトリバケットは、すべてのワークロードに対してデフォルトで高いパフォーマンスを提供します。特定のオペレーションでパフォーマンスをさらに最適化するために、より多くのエントリ (オブジェクトまたはサブディレクトリ) をディレクトリに統合すると、レイテンシーが低くなり、リクエストレートが向上します。
+ `PutObject`、`DeleteObject`、`CreateMultiPartUpload`、`AbortMultiPartUpload` などの変異 API オペレーションは、多数の小さなディレクトリではなく、数千のエントリを含む少数の高密度ディレクトリで実装すると、最適なパフォーマンスが得られます。
+ `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` パラメータで指定されたディレクトリ内のエントリのみを取得するため、リクエストのレイテンシーが短縮され、1 秒あたりの集計キーが増加します。ディレクトリバケットの場合は、可能な限り区切りリストオペレーションを使用してください。区切りリストを使用することで、ディレクトリへのアクセス回数が減り、1 秒あたりのキー数が増加し、リクエストのレイテンシーが短縮されます。

例えば、ディレクトリバケット内の次のディレクトリとオブジェクトの場合。

```
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 リージョン内のアベイラビリティーゾーンを選択できる最初の S3 バケットです。

複数のアベイラビリティーゾーンにわたってディレクトリバケットにアクセスすると、レイテンシーがわずかに増加する可能性があります。パフォーマンスを最適化するには、可能な場合は、同じアベイラビリティーゾーンにある 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 接続には、1 秒あたりにアップロードまたはダウンロードできるバイト数に対する固定の上限があります。オブジェクトが大きくなると、リクエスト時間はトランザクション処理ではなくバイトストリーミングによって支配されるようになります。複数の接続を使用して大きなオブジェクトのアップロードまたはダウンロードを並列化することで、エンドツーエンドのレイテンシーを削減できます。`Java 2.x` SDK を使用する場合は、[マルチパートアップロード API オペレーション](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html)やバイト範囲フェッチなどのパフォーマンスの向上を利用してデータに並行してアクセスする [S3 Transfer Manager](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/transfer-manager.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` を 1 回呼び出すだけでセッショントークンを取得でき、このトークンはその後 5 分間のすべてのリクエストで有効になります。API コールのレイテンシーを最小限に抑えるには、セッショントークンを取得し、そのトークンの有効期間全体にわたって再利用してから更新するようにしてください。

AWS SDK を使用する場合、セッショントークンの更新は SDK によって自動的に処理され、セッションの有効期限が切れたときのサービス中断を回避できます。AWS SDK を使用して `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 SDK の基盤として機能します。CRT は、スループットの向上、接続管理の強化、スタートアップタイムの短縮を実現します。CRT は Go を除くすべての AWS SDK で使用できます。

使用する SDK に合わせて CRT を設定する方法の詳細については、「[AWS Common Runtime (CRT) libraries](https://docs.aws.amazon.com/sdkref/latest/guide/common-runtime.html)」、「[Accelerate Amazon S3 throughput with the AWS Common Runtime](https://aws.amazon.com/blogs//storage/improving-amazon-s3-throughput-for-the-aws-cli-and-boto3-with-the-aws-common-runtime/)」、「[Introducing CRT-based S3 client and the S3 Transfer Manager in the AWS SDK for Java 2.x](https://aws.amazon.com/blogs//developer/introducing-crt-based-s3-client-and-the-s3-transfer-manager-in-the-aws-sdk-for-java-2-x/)」、「[Using S3CrtClient for Amazon S3 operations](https://docs.aws.amazon.com/sdk-for-cpp/v1/developer-guide/examples-s3-crt.html)」、および「[Configure AWS CRT-based HTTP clients](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/http-configuration-crt.html)」を参照してください。

### 最新バージョンの AWS SDK を使用する
<a name="s3-express-best-practices-latest-sdks"></a>

AWS SDK では、Amazon S3 のパフォーマンスの最適化のために推奨されている多くのガイドラインが組み込みでサポートされています。SDK は、アプリケーション内から Amazon S3 を活用するためのシンプルな API を提供し、最新のベストプラクティスに合わせて定期的に更新されます。例えば、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 Transfer Manager は、必要に応じてバイト範囲リクエストを使用して接続を水平方向に自動的にスケーリングし、1 秒あたり数千件のリクエスト処理を実現します。バイト範囲リクエストは、S3 への同時接続を使用して同じオブジェクト内からさまざまなバイト範囲を取得できるため、パフォーマンスを向上させます。これにより、単一のオブジェクト全体のリクエストに対して高い集約スループットを実現できます。そのため、最新のパフォーマンス最適化機能を利用するには、最新バージョンの AWS SDK を使用することが重要です。

## パフォーマンスのトラブルシューティング
<a name="s3-express-performance-troubleshooting"></a>

### レイテンシーの影響を受けやすいアプリケーションに対して、再試行リクエストを設定していますか。
<a name="s3-express-performance-troubleshooting-retry"></a>

S3 Express One Zone は、追加の調整を必要とせずに一貫したレベルのパフォーマンスを実現できるように設計されています。ただし、タイムアウト値とリトライを積極的に設定すると、レイテンシーとパフォーマンスを一定に維持できます。AWS SDK には、特定のアプリケーションの許容値に調整できる設定可能なタイムアウト値と再試行値があります。

### AWS Common Runtime (CRT) ライブラリと最適な Amazon EC2 インスタンスタイプを使用していますか。
<a name="s3-express-performance-troubleshooting-crt-ec2"></a>

多数の読み取りおよび書き込みオペレーションを実行するアプリケーションは、そうでないアプリケーションに比べて、より多くのメモリやコンピューティング容量を必要とする可能性があります。コンピューティングを多用するワークロードのために Amazon EC2 インスタンスを起動する際は、アプリケーションが必要とする量のリソースを持つインスタンスタイプを選択します。S3 Express One Zone の高パフォーマンスストレージは、システムメモリ容量が大きく、高パフォーマンスストレージを活用できるより強力な CPU や GPU を備えた、より大規模で新しいインスタンスタイプと組み合わせるのが理想的です。また、CRT が有効になっている AWS SDK の最新バージョンを使用することをお勧めします。これにより、読み取りリクエストと書き込みリクエストの並列処理をより高速化できます。

### セッションベースの認証に AWS SDK を使用していますか。
<a name="s3-express-performance-troubleshooting-session-auth"></a>

Amazon S3 では、AWS SDK と同じベストプラクティスに従うことで、HTTP REST API リクエストを使用する際のパフォーマンスを最適化することもできます。ただし、S3 Express One Zone で使用されているセッションベースの認可および認証メカニズムの場合、AWS SDK を使用して `CreateSession` およびそのマネージドセッショントークンを管理することを強くお勧めします。AWS SDK は `CreateSession` API オペレーションを使用して、ユーザーに代わってトークンの作成と更新を自動的に行います。`CreateSession` を使用すると、各リクエストを承認するための AWS Identity and Access Management (IAM) へのリクエストごとの往復のレイテンシーを回避できます。

## ディレクトリバケットオペレーションとディレクトリインタラクションの例
<a name="s3-express-directory-bucket-examples"></a>

以下に、ディレクトリバケットの仕組みに関する 3 つの例を示します。

### 例 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` が作成されます。このオペレーションでは、オブジェクトに加えて 2 つのディレクトリが作成されました。  
![\[documents/reports/quarterly.txt の PUT オペレーション後のディレクトリ構造を示す図\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/directory-examples-foo-bar-baz.png)

1. 次に、別のオペレーション `PUT(<bucket>, "documents/logs/application.txt")` が実行されると、 ディレクトリ `documents/` は既に存在し、`documents/` 内にディレクトリ `logs/` が存在しないため新たに作成され、`logs/` 内にオブジェクト `application.txt` が作成されます。このオペレーションでは、オブジェクトに加えて作成されたディレクトリは 1 つだけです。  
![\[documents/logs/application.txt の PUT オペレーション後のディレクトリ構造を示す図\]](http://docs.aws.amazon.com/ja_jp/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/ja_jp/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/` 内にはこれ以上エントリが存在しません。List オペレーションは `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/ja_jp/AmazonS3/latest/userguide/images/directory-examples-delete-before.png)


1. 同じバケットで、`DELETE(<bucket>, "documents/reports/quarterly.txt")` オペレーションを実行すると、オブジェクト `quarterly.txt` が削除され、ディレクトリ `reports/` が空になり、即座に削除されます。`documents/` ディレクトリにはディレクトリ `logs/` とオブジェクト `readme.txt` の両方があり、ディレクトリは空ではないため、削除されません。このオペレーションでは、1 つのオブジェクトと 1 つのディレクトリのみが削除されました。  
![\[documents/reports/quarterly.txt に対する DELETE オペレーション後のディレクトリ構造を示す図\]](http://docs.aws.amazon.com/ja_jp/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/ja_jp/AmazonS3/latest/userguide/images/directory-examples-delete2.png)

1. 最後に、オペレーション `DELETE(<bucket>, "documents/logs/application.txt")` が実行されると、`application.txt` は削除され、`logs/` が空になり、即座に削除されます。これにより `documents/` も空になり、これも即座に削除されます。このオペレーションでは、2 つのディレクトリと 1 つのオブジェクトが削除されます。バケットが空になりました。  
![\[documents/logs/application.txt に対する DELETE オペレーション後のディレクトリ構造を示す図\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/directory-examples-delete3.png)

# データレジデンシーワークロード
<a name="directory-bucket-data-residency"></a>

AWS 専有ローカルゾーン (専有ローカルゾーン) は、AWS によるフルマネージドの AWS インフラストラクチャの一種で、ユーザーまたはコミュニティ専用に構築され、規制要件に準拠するためにユーザーが指定した場所またはデータセンターに配置されます。専有ローカルゾーンは、AWS Local Zones (Local Zones) サービスの一種です。詳細については、「[AWS 専有ローカルゾーン](https://aws.amazon.com/dedicatedlocalzones/)」を参照してください。

専有ローカルゾーンでは、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 SDK を使用できます。



Local Zones 内のディレクトリバケットのオペレーションの詳細については、以降のトピックを参照してください。

**Topics**
+ [Local Zones のディレクトリバケットの概念](s3-lzs-for-directory-buckets.md)
+ [ローカルゾーンのアカウントを有効にする](opt-in-directory-bucket-lz.md)
+ [VPC からのプライベート接続](connectivity-lz-directory-buckets.md)
+ [Local Zone でのディレクトリバケットの作成](create-directory-bucket-LZ.md)
+ [Local Zones でのディレクトリバケットの認証と認可](iam-directory-bucket-LZ.md)

# Local Zones のディレクトリバケットの概念
<a name="s3-lzs-for-directory-buckets"></a>

ローカルゾーンでディレクトリバケットを作成する前に、バケットを作成する先のローカルゾーン ID を取得する必要があります。ローカルゾーンに関するすべての情報は、[DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) API オペレーションを使用して確認できます。この API オペレーションは、ローカルゾーン ID、親リージョン名、ネットワークボーダーグループ、オプトインステータスなど、ローカルゾーンに関する情報を一覧表示します。ローカルゾーン ID を取得してオプトインしたら、ローカルゾーンでディレクトリバケットを作成できます。ディレクトリバケット名は、ユーザーが指定したベース名、バケットの場所のゾーン ID を含むサフィックス、および `--x-s3` で構成されます。

Local Zone は、Amazon の冗長で非常に広帯域のプライベートネットワークを使用して**親リージョン**に接続されます。これにより、ローカルゾーンで実行しているアプリケーションは、親リージョン内の他の AWS のサービスに高速、安全、シームレスにアクセスできます。**親ゾーン ID** は、ローカルゾーンのコントロールプレーンオペレーションを処理するゾーンの ID です。**ネットワーク境界グループ**は、AWS によるパブリック IP アドレスのアドバタイズ元となる一意のグループです。Local Zones、親リージョン、親ゾーン ID の詳細については、「AWS Local Zones* User Guide*」の「[AWS Local Zones concepts](https://docs.aws.amazon.com/local-zones/latest/ug/concepts-local-zones.html)」を参照してください。

すべてのディレクトリバケットでは `s3express` 名前空間を使用します。これは汎用バケットの `s3` 名前空間とは異なります。ディレクトリバケットの場合、リクエストは**リージョンエンドポイント**または**ゾーンエンドポイント**のいずれかにルーティングされます。AWS マネジメントコンソール、AWS CLI、または AWS SDK を使用すると、ルーティングは自動的に処理されます。

ほとんどのバケットレベルの API オペレーション (`CreateBucket` や `DeleteBucket` など) は、リージョンエンドポイントにルーティングされ、リージョンエンドポイント API オペレーションと呼ばれます。リージョンエンドポイントは `s3express-control.ParentRegionCode.amazonaws.com` の形式です。すべてのオブジェクトレベルの API オペレーション (`PutObject` など) と 2 つのバケットレベルの 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) から Local Zones のディレクトリバケットにアクセスするには、ゲートウェイ VPC エンドポイントを使用できます。ゲートウェイエンドポイントは追加料金なしで使用できます。Local Zones のディレクトリバケットとオブジェクトにアクセスするためのゲートウェイ VPC エンドポイントを設定するには、「[VPC からのプライベート接続](connectivity-lz-directory-buckets.md)」を参照してください。

# ローカルゾーンのアカウントを有効にする
<a name="opt-in-directory-bucket-lz"></a>

次のトピックでは、専有ローカルゾーンでアカウントを有効にする方法について説明します。

Amazon S3 を含む AWS 専有ローカルゾーン (専有ローカルゾーン) のすべてのサービスでは、専有ローカルゾーン内のリソースを作成またはアクセスする前に、管理者が AWS アカウントを有効にする必要があります。[DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) API オペレーションを使用して、ローカルゾーンへのアカウント ID アクセスを確認できます。

Amazon S3 のデータをさらに保護するために、デフォルトでは、作成した S3 リソースにのみアクセスできます。Local Zones のバケットでは、すべての S3 ブロックのパブリックアクセス設定がデフォルトで有効になっており、S3 オブジェクトの所有権は [バケット所有者の強制] に設定されています。上記の設定は変更できません。オプションで、Local Zone のネットワーク境界グループ内のみにアクセスを制限するには、IAM ポリシーで条件キー `s3express:AllAccessRestrictedToLocalZoneGroup` を使用できます。詳細については、「[Local Zones でのディレクトリバケットの認証と認可](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. **[サービスカテゴリ]** で、**[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 のみのサブネットで、サービスが IIPv6 リクエストを受け入れる場合にのみサポートされます。
   +  **[デュアルスタック]** – エンドポイントネットワークインターフェイスに IPv4 と IPv6 両方のアドレスを割り当てます。このオプションは、選択したすべてのサブネットに IPv4 と IPv6 の両方のアドレス範囲があり、サービスが IPv4 リクエストと IPv6 リクエストの両方を受け入れる場合にのみサポートされます。

1. (オプション) タグを追加するには、**[新しいタグを追加]** をクリックして、タグのキーバリューを入力します。

1. **エンドポイントの作成** を選択します。

ゲートウェイ VPC エンドポイントの詳細については、「*AWS PrivateLink Guide*」の「[Gateway endpoints](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html)」を参照してください。データレジデンシーのユースケースでは、ゲートウェイ VPC エンドポイントを使用して VPC からのみバケットへのアクセスを有効にすることをお勧めします。アクセスが VPC または VPC エンドポイントに制限されている場合、AWS マネジメントコンソール、REST API、AWS CLI、および AWS SDK を介してオブジェクトにアクセスできます。

**注記**  
AWS マネジメントコンソールを使用して VPC または VPC エンドポイントへのアクセスを制限するには、AWS マネジメントコンソール のプライベートアクセスを使用する必要があります。詳細については、「*AWS マネジメントコンソール guide*」の「[AWS マネジメントコンソール Private Access](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/console-private-access.html)」を参照してください。

# Local Zone でのディレクトリバケットの作成
<a name="create-directory-bucket-LZ"></a>

専有ローカルゾーンでは、特定のデータ境界にオブジェクトを保存および取得するディレクトリバケットを作成して、データレジデンシーとデータ分離のユースケースに対応できます。S3 ディレクトリバケットは Local Zones でサポートされている唯一のバケットタイプであり、`LocalZone` というバケットの場所タイプが含まれています。ディレクトリバケット名は、指定するベース名と、バケットの場所と `--x-s3` の Zone ID を含むサフィックスで構成されます。Local Zone ID のリストは、[DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) API オペレーションを使用して取得できます。詳細については、「[ディレクトリバケットの命名規則](directory-bucket-naming-rules.md)」を参照してください。

**注記**  
S3 を含む AWS 専有ローカルゾーン (専有ローカルゾーン) のすべてのサービスでは、専有ローカルゾーン内のリソースを作成またはアクセスする前に、管理者が AWS アカウントを有効にする必要があります。詳細については、「[ローカルゾーンのアカウントを有効にする](opt-in-directory-bucket-lz.md)」を参照してください。
データレジデンシー要件については、ゲートウェイ VPC エンドポイントからのみバケットへのアクセスを有効にすることをお勧めします。詳細については、「[VPC からのプライベート接続](connectivity-lz-directory-buckets.md)」を参照してください。
Local Zone のネットワーク境界グループ内のみにアクセスを制限するには、IAM ポリシーで条件キー `s3express:AllAccessRestrictedToLocalZoneGroup` を使用できます。詳細については、「[Local Zones でのディレクトリバケットの認証と認可](iam-directory-bucket-LZ.md)」を参照してください。

以下に、AWS マネジメントコンソール、AWS CLI、AWS SDK を使用して単一の Local Zone にディレクトリバケットを作成する方法について説明します。

## S3 コンソールの使用
<a name="create-directory-bucket-lz-console"></a>

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

1. ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、ディレクトリバケットの作成先となる Local Zone の親リージョンを選択します。
**注記**  
親リージョンの詳細については、「[Local Zones のディレクトリバケットの概念](s3-lzs-for-directory-buckets.md)」を参照してください。

1. 左側のナビゲーションペインで、[**バケット**] を選択します。

1. [**Create bucket (バケットの作成)**] を選択します。

   **[バケットの作成]** ページが開きます。

1. **[全般設定]** で、バケットが作成される AWS リージョン を確認します。

1.  **[バケットタイプ]** で **[ディレクトリ]** を選択します。
**注記**  
ディレクトリバケットをサポートしていないリージョンを選択した場合、バケットタイプはデフォルトで汎用バケットになります。ディレクトリバケットを作成するには、サポートされているリージョンを選択する必要があります。ディレクトリバケットをサポートするリージョンのリストについては、「[ディレクトリバケットのリージョンエンドポイントとゾーンエンドポイント](s3-express-Regions-and-Zones.md)」を参照してください。
バケット作成後にバケットタイプは変更できません。

1. **[バケットの場所]** で、使用する Local Zone を選択します。
**注記**  
この Local Zone は、バケットの作成後に変更することはできません。

1. **[バケットの場所]** でチェックボックスをオンにして、Local Zone に障害が発生した場合に、データが使用できなくなったり、データが失われたりする場合があることに同意します。
**重要**  
ディレクトリバケットは、単一の Local Zone 内の複数のデバイスに保存されますが、ディレクトリバケットは Local Zones 間でデータを冗長に保存することはありません。

1. **[バケット名]** には、ディレクトリバケット名を入力します。

   ディレクトリバケットの命名規則の詳細については、「[汎用バケットの命名規則](bucketnamingrules.md)」を参照してください。コンソールを使用してディレクトリバケットを作成すると、指定したベース名にサフィックスが自動的に追加されます。このサフィックスには、選択した Local Zone の Zone 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 を使用して Local Zone でディレクトリバケットを作成する方法を示しています。このコマンドを使用するには、*ユーザー入力用プレースホルダー*を独自の情報に置き換えます。

ディレクトリバケットを作成する際は、設定の詳細を指定して、`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
```

Local Zone ID と親リージョンコードの詳細については、「[Local Zones のディレクトリバケットの概念](s3-lzs-for-directory-buckets.md)」を参照してください。AWS CLI コマンドの詳細については、「*AWS CLI Command Reference*」の「[create-bucket](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-bucket.html)」を参照してください。

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

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

次の例は、AWS SDK for Go を使用して Local Zone でディレクトリバケットを作成する方法を示しています。

**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 を使用して Local Zone でディレクトリバケットを作成する方法を示しています。

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

------
#### [ AWS SDK for JavaScript ]

次の例は、AWS SDK for JavaScript を使用して Local Zone でディレクトリバケットを作成する方法を示しています。

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

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

次の例は、SDK for .NET を使用して Local Zone でディレクトリバケットを作成する方法を示しています。

**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 を使用して Local Zone でディレクトリバケットを作成する方法を示しています。

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

次の例は、AWS SDK for Python (Boto3) を使用して Local Zone でディレクトリバケットを作成する方法を示しています。

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

次の例は、AWS SDK for Ruby を使用して Local Zone でディレクトリバケットを作成する方法を示しています。

**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' }
  }
)
```

------

# Local Zones でのディレクトリバケットの認証と認可
<a name="iam-directory-bucket-LZ"></a>

Local Zones のディレクトリバケットは、AWS Identity and Access Management (IAM) 認可とセッションベースの認可の両方をサポートしています。ディレクトリバケットの認証と認可についての詳細は、「[リクエストの認証と承認](s3-express-authenticating-authorizing.md)」を参照してください。

## リソース
<a name="directory-bucket-lz-resources"></a>

ディレクトリバケットの Amazon リソースネーム (ARN) には、`s3express` 名前空間、AWS 親リージョン、AWS アカウント ID、および Zone ID を含むディレクトリバケット名が含まれます。ディレクトリバケットにアクセスしてアクションを実行するには、次の ARN 形式を使用する必要があります。

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

Local Zone のディレクトリバケットの場合、Zone ID は Local Zone の ID です。Local Zones 内のディレクトリバケットの詳細については、「[Local Zones のディレクトリバケットの概念](s3-lzs-for-directory-buckets.md)」を参照してください。ARN の詳細については「*IAM ユーザーガイド*」の「[Amazon リソースネーム (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)」を参照してください。リソースの詳細については、「[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html)」の「*IAM JSON ポリシー要素: Resource*」を参照してください。

## Local Zones のディレクトリバケットの条件キー
<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)すべてを使用できます。さらに、Local Zone のネットワーク境界グループの周囲にデータ境界を作成するには、条件キー `s3express:AllAccessRestrictedToLocalZoneGroup` を使用して、グループ外からのすべてのリクエストを拒否できます。

次の条件キーを使用すると、IAM ポリシーステートメントが適用される条件をさらに絞り込むことができます。ディレクトリバケットでサポートされている API オペレーション、ポリシーアクション、および条件キーの完全なリストについては、「[ディレクトリバケットのポリシーアクション](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam.html#s3-express-security-iam-actions)」を参照してください。

**注記**  
次の条件キーは Local Zones にのみ適用され、アベイラビリティーゾーンと AWS リージョンではサポートされていません。


| API オペレーション | ポリシーアクション | 説明 | 条件キー | 説明 | タイプ | 
| --- | --- | --- | --- | --- | --- | 
|  [ゾーンエンドポイント API オペレーション](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-APIs.html)  |  s3express:CreateSession  |  セッショントークンを作成するアクセス許可を付与します。このセッショントークンは、`CreateSession`、`HeadBucket`、`CopyObject`、`PutObject`、`GetObject` など、すべてのゾーンエンドポイント API オペレーションへのアクセスを許可するために使用されます。  |  s3express:AllAccessRestrictedToLocalZoneGroup  | この条件キーで指定された AWS Local Zone ネットワーク境界グループからリクエストが発信されていない限り、バケットへのすべてのアクセスをフィルタリングします。 **値:** Local Zone ネットワーク境界グループの値   |  String  | 

## ポリシーの例
<a name="directory-bucket-lz-policies"></a>

定義したデータレジデンシー境界内 (具体的には、同じ AWS リージョンを親とする Local Zones のセットである Local Zone グループ) からのリクエストへのオブジェクトアクセスを制限するには、次のいずれかのポリシーを設定できます。
+ サービスコントロールポリシー (SCP)。SCP の詳細については、「*AWS Organizations User Guide*」の「[Service control policies (SCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)」を参照してください。
+ IAM ロールの IAM アイデンティティベースのポリシー。
+ VPC エンドポイントポリシー。VPC エンドポイントポリシーの詳細については、「*AWS PrivateLink Guide*」の「[Control access to VPC endpoints using endpoint policies](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"
                     ]
                 }   
            }
        }
    ]
}
```