

# データレジデンシーワークロード
<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"
                     ]
                 }   
            }
        }
    ]
}
```