

# 数据驻留工作负载
<a name="directory-bucket-data-residency"></a>

AWS 专用本地区域（专用本地区域）是一种完全由 AWS 管理、专为您或您的社区使用而构建、放置在您指定的位置或数据中心且有助于遵守监管要求的 AWS 基础设施。专用本地区域是一种 AWS Local Zones（即 Local Zones）服务。有关更多信息，请参阅 [AWS 专用本地区域](https://aws.amazon.com/dedicatedlocalzones/)。

在专用本地区域中，您可以创建 S3 目录存储桶来将数据存储在特定的数据边界中，这有助于支持数据驻留和隔离应用场景。专用本地区域中的目录存储桶可以支持 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)
+ [在本地区域中创建目录存储桶](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`。

本地区域使用 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`）和两个存储桶级 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 端点。使用网关端点不会发生任何额外费用。要配置网关 VPC 端点来访问 Local Zones 中的目录存储桶和对象，请参阅 [来自 VPC 的私有连接](connectivity-lz-directory-buckets.md)。

# 为本地区域启用账户
<a name="opt-in-directory-bucket-lz"></a>

以下主题介绍了如何为专用本地区域启用账户。

对于 AWS 专用本地区域（专用本地区域）中的所有服务，包括 Amazon S3，管理员必须先启用您的 AWS 账户，然后您才能在专用本地区域中创建或访问任何资源。可以使用 [DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) API 操作来确认您的账户 ID 对本地区域的访问权限。

为了进一步保护您在 Amazon S3 中的数据，默认情况下，您只能访问自己创建的 S3 资源。Local Zones 中的存储桶默认启用了所有 S3 屏蔽公共访问权限设置，并且 S3 对象所有权设置为强制存储桶拥有者。无法修改这些设置。（可选）要将访问权限仅限于本地区域网络边界组内，您可以在 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. 对于 **Service category**（服务类别），选择 **AWS 服务**。

1. 对于**服务**，添加筛选条件 **Type=Gateway**，然后选择 **com.amazonaws.*region*.s3express** 旁边的选项按钮。

1. 对于 **VPC**，选择要在其中创建端点的 VPC。

1. 对于**路由表**，请选择 VPC 中要由端点使用的路由表。创建端点后，将在此步骤中选择的路由表中添加一条路径记录。

1. 对于**策略**，请选择**完整访问权限**以允许所有主体通过 VPC 端点对所有资源执行所有操作。否则，选择**自定义**以附加 VPC 端点策略，该策略控制主体通过 VPC 端点对资源执行操作的权限。

1. 对于 **IP address type**（IP 地址类型），可从以下选项中进行选择：
   +  **IPv4** – 将 IPv4 地址分配给端点网络接口。仅当所有选定子网都具有 IPv4 地址范围且服务接受 IPv4 请求时，才支持此选项。
   +  **IPv6** – 将 IPv6 地址分配给端点网络接口。仅当所有选定子网均为仅限 IPv6 的子网且服务接受 IPv6 请求时，才支持此选项。
   +  **双堆栈**：将 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)。

# 在本地区域中创建目录存储桶
<a name="create-directory-bucket-LZ"></a>

在专用本地区域中，您可以创建目录存储桶来存储和检索特定数据边界中的对象，以有助于满足数据驻留和数据隔离应用场景的要求。S3 目录存储桶是 Local Zones 中唯一支持的存储桶类型，并且包含名为 `LocalZone` 的存储桶位置类型。目录存储桶名称由您提供的基本名称以及包含存储桶位置的可用区 ID 和 `--x-s3` 的后缀组成。可以使用 [DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) API 操作获取本地区域 ID 的列表。有关更多信息，请参阅 [目录存储桶命名规则](directory-bucket-naming-rules.md)。

**注意**  
对于 AWS 专用本地区域（专用本地区域）中的所有服务，包括 S3，管理员必须先启用您的 AWS 账户，然后您才能在专用本地区域中创建或访问任何资源。有关更多信息，请参阅 [为本地区域启用账户](opt-in-directory-bucket-lz.md)。
对于数据驻留要求，我们建议仅允许从网关 VPC 端点访问您的存储桶。有关更多信息，请参阅 [来自 VPC 的私有连接](connectivity-lz-directory-buckets.md)。
要将访问权限仅限于本地区域网络边界组内，您可以在 IAM 策略中使用条件键 `s3express:AllAccessRestrictedToLocalZoneGroup`。有关更多信息，请参阅 [对 Local Zones 中的目录存储桶进行身份验证和授权](iam-directory-bucket-LZ.md)。

下面介绍使用 AWS 管理控制台、AWS CLI 和 AWS SDK 在单个本地区域中创建目录存储桶的方法。

## 使用 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 Zones 中目录存储桶的概念](s3-lzs-for-directory-buckets.md)。

1. 在左侧导航窗格中，选择**存储桶**。

1. 选择**创建存储桶**。

   此时将打开**创建存储桶**页面。

1. 在**常规配置**下，查看将在其中创建存储桶的 AWS 区域。

1.  在**存储桶类型**下，请选择**目录**。
**注意**  
如果您选择的区域不支持目录存储桶，则存储桶类型默认为通用存储桶。要创建目录桶，您必须选择受支持的区域。有关支持目录存储桶的区域列表，请参阅[目录存储桶的区域和可用区端点](s3-express-Regions-and-Zones.md)。
在创建存储桶后，便无法更改存储桶类型。

1. 在**存储桶位置**下，选择要使用的本地区域。
**注意**  
创建存储桶后无法更改本地区域。

1. 在**存储桶位置**下，选中复选框以确认在本地区域中断的情况下，您的数据可能不可用或丢失。
**重要**  
尽管目录存储桶存储在单个 Local Zones 中的多个设备上，但目录存储桶不会跨 Local Zones 冗余存储数据。

1. 对于**存储桶名称**，请输入目录存储桶的名称。

   有关目录存储桶的命名规则的更多信息，请参阅[通用存储桶命名规则](bucketnamingrules.md)。后缀将自动添加到您使用控制台创建目录存储桶时提供的基本名称中。此后缀包括您选择的本地区域的可用区 ID。

   创建存储桶后，便无法更改其名称。
**重要**  
请勿在存储桶名称中包含敏感信息，如账号。存储桶名称会显示在指向存储桶中的对象的 URL 中。

1. 在**对象所有权**下，将自动启用**强制桶拥有者**设置，并禁用所有访问控制列表（ACL）。对于目录存储桶，ACL 已禁用且无法启用。

   在启用**强制存储桶拥有者**设置的情况下，存储桶拥有者会自动拥有并完全控制存储桶中的每个对象。ACL 不再影响对 S3 存储桶中数据的访问权限。存储桶专门使用策略来定义访问控制。Amazon S3 中的大多数现代使用案例不再需要使用 ACL。有关更多信息，请参阅 [为您的存储桶控制对象所有权和禁用 ACL。](about-object-ownership.md)。

1. 在**此桶的屏蔽公共访问权限设置**下，目录桶的所有屏蔽公共访问权限设置已自动启用。无法修改目录桶的这些设置。有关阻止公共访问的更多信息，请参阅[阻止对您的 Amazon S3 存储的公有访问](access-control-block-public-access.md)。

1. 默认情况下，在**默认加密**下，目录存储桶使用**具有 Amazon S3 托管式密钥的服务器端加密（SSE-S3）**来加密数据。还可以选择使用**具有 AWS Key Management Service 密钥的服务器端加密（SSE-KMS）**对目录存储桶中的数据进行加密。

1. 选择 **创建存储桶 **。

   创建存储桶后，您可以向存储桶中添加文件和文件夹。有关更多信息，请参阅 [使用目录桶中的对象](directory-buckets-objects.md)。

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

此示例说明如何在本地区域中使用 AWS CLI 创建目录存储桶。要使用该命令，请将*用户输入占位符* 替换为您自己的信息。

创建目录存储桶时，必须提供配置详细信息并使用以下命名约定：`bucket-base-name--zone-id--x-s3`。

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

有关本地区域 ID 和父区域代码的更多信息，请参阅[Local Zones 中目录存储桶的概念](s3-lzs-for-directory-buckets.md)。有关 AWS CLI 命令的更多信息，请参阅《AWS CLI 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 ]

此示例说明如何在本地区域中使用适用于 Go 的 AWS SDK 创建目录存储桶。

**Example**  

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

func runCreateBucket(c *s3.Client) {
    resp, err := c.CreateBucket(context.Background(), &s3.CreateBucketInput{
        Bucket: &bucket,
        CreateBucketConfiguration: &types.CreateBucketConfiguration{
            Location: &types.LocationInfo{
                Name: aws.String("local-zone-id"),
                Type: types.LocationTypeLocalZone,
            },  
            Bucket: &types.BucketInfo{
                DataRedundancy: types.DataRedundancySingleLocalZone,
                Type:           types.BucketTypeDirectory,
            },  
        },  
    })  
    var terr *types.BucketAlreadyOwnedByYou
    if errors.As(err, &terr) {
        fmt.Printf("BucketAlreadyOwnedByYou: %s\n", aws.ToString(terr.Message))
        fmt.Printf("noop...\n") // No operation performed, just printing a message
        return
    }   
    if err != nil {
        log.Fatal(err)
    }   

    fmt.Printf("bucket created at %s\n", aws.ToString(resp.Location))
}
```

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

此示例说明如何在本地区域中使用AWS SDK for Java 2.x 创建目录存储桶。

**Example**  

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

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

    CreateBucketConfiguration bucketConfiguration = CreateBucketConfiguration.builder()
             .location(LocationInfo.builder()
                     .type(LocationType.LOCAL_ZONE)
                     .name("local-zone-id").build()) //this must match the Local Zone ID in your bucket name
             .bucket(BucketInfo.builder()
                    .type(BucketType.DIRECTORY)
                    .dataRedundancy(DataRedundancy.SINGLE_LOCAL_ZONE)
                    .build()).build();
    try {
    
             CreateBucketRequest bucketRequest = CreateBucketRequest.builder().bucket(bucketName).createBucketConfiguration(bucketConfiguration).build();
             CreateBucketResponse response = s3Client.createBucket(bucketRequest);
             System.out.println(response);
    } 
    
    catch (S3Exception e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
         }
    }
```

------
#### [ 适用于 JavaScript 的 AWS SDK ]

此示例说明如何在本地区域中使用适用于 JavaScript 的 AWS SDK 创建目录存储桶。

**Example**  

```
// file.mjs, run with Node.js v16 or higher
// To use with the preview build, place this in a folder 
// inside the preview build directory, such as /aws-sdk-js-v3/workspace/

import { S3 } from "@aws-sdk/client-s3";

const region = "parent-region-code";
const zone = "local-zone-id";
const suffix = `${zone}--x-s3`;

const s3 = new S3({ region });

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

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

------
#### [ 适用于 .NET 的 SDK ]

此示例说明如何在本地区域中使用适用于 .NET 的 SDK 创建目录存储桶。

**Example**  

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

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

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

此示例说明如何在本地区域中使用AWS SDK for PHP 创建目录存储桶。

**Example**  

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

$s3Client = new S3Client([

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


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

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

此示例说明如何在本地区域中使用适用于 Python (Boto3) 的 AWS SDK 创建目录存储桶。

**Example**  

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

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

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

    try:
        bucket_config = {
                'Location': {
                    'Type': 'LocalZone',
                    'Name': local_zone
                },
                'Bucket': {
                    'Type': 'Directory', 
                    'DataRedundancy': 'SingleLocalZone'
                }
            }
        s3_client.create_bucket(
            Bucket = bucket_name,
            CreateBucketConfiguration = bucket_config
        )
    except ClientError as e:
        logging.error(e)
        return False
    return True


if __name__ == '__main__':
    bucket_name = 'BUCKET_NAME'
    region = 'parent-region-code'
    local_zone = 'local-zone-id'
    s3_client = boto3.client('s3', region_name = region)
    create_bucket(s3_client, bucket_name, local_zone)
```

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

此示例说明如何在本地区域中使用适用于 Ruby 的 AWS SDK 创建目录存储桶。

**Example**  

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

------

# 对 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 和目录存储桶名称（包括可用区 ID）。要访问目录存储桶并对其执行操作，您必须使用以下 ARN 格式：

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

对于本地区域中的目录存储桶，可用区 ID 是本地区域的 ID。有关 Local Zones 中的目录存储桶的更多信息，请参阅[Local Zones 中目录存储桶的概念](s3-lzs-for-directory-buckets.md)。有关 ARN 的更多信息，请参阅《IAM 用户指南》**中的 [Amazon 资源名称（ARN）](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)。有关资源的更多信息，请参阅《IAM 用户指南》**中的 [IAM JSON 策略元素：Resource](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html)。

## Local Zones 中目录存储桶的条件键
<a name="condition-key-db-lz"></a>

在本地区域中，您可以在 IAM 策略中使用所有这些[条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3express.html#amazons3express-policy-keys)。此外，要在本地区域网络边界组周围创建数据边界，您可以使用条件键 `s3express:AllAccessRestrictedToLocalZoneGroup` 来拒绝来自组外部的所有请求。

以下条件键可用于进一步细化 IAM 策略语句适用的条件。有关目录存储桶支持的 API 操作、策略操作和条件键的完整列表，请参阅[目录存储桶的策略操作](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam.html#s3-express-security-iam-actions)。

**注意**  
以下条件键仅适用于 Local Zones，在可用区和 AWS 区域中不受支持。


| API 操作 | 策略操作 | 说明 | 条件键 | 说明 | 类型 | 
| --- | --- | --- | --- | --- | --- | 
|  [可用区端点 API 操作](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-APIs.html)  |  s3express:CreateSession  |  授予权限以创建会话令牌，该令牌用于授予对所有可用区端点 API 操作的访问权限，例如 `CreateSession`、`HeadBucket`、`CopyObject`、`PutObject` 和 `GetObject`。  |  s3express:AllAccessRestrictedToLocalZoneGroup  | 筛选对存储桶的所有访问权限，除非请求源自此条件键中提供的 AWS 本地区域网络边界组。 **值：**本地区域网络边界组值   |  String  | 

## 策略示例
<a name="directory-bucket-lz-policies"></a>

要将对象访问仅限于您定义的数据驻留边界内的请求（具体而言为 Local Zones 组，即一组以同一个 AWS 区域为父级的 Local Zones），您可以设置以下任何策略：
+ 服务控制策略（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"
                     ]
                 }   
            }
        }
    ]
}
```