

# 创建限制到 Virtual Private Cloud 的接入点
<a name="access-points-vpc"></a>

创建接入点时，您可以选择让接入点可从互联网访问，也可以指定通过该接入点发出的所有请求都必须来自特定虚拟私有云（VPC）。可从 Internet 访问的接入点被认为是具有 `Internet` 网络起源。它可以在互联网上的任何地方使用，但需遵守针对接入点、底层数据来源和相关资源（如请求的对象）所设置的任何其它访问限制。只能从指定 VPC 访问的接入点的网络起源为 `VPC`，并且 Amazon S3 会拒绝从该 VPC 之外的来源向接入点发出的任何请求。

**重要**  
您只能在创建接入点时指定接入点的网络起源。创建接入点后，无法更改其网络起源。

要将接入点限制为仅限于 VPC 访问，请在创建接入点的请求中包括 `VpcConfiguration` 参数。在 `VpcConfiguration` 参数中，您指定希望能够使用接入点的 VPC ID。如果请求是通过接入点发出的，则该请求必须源自 VPC，否则 Amazon S3 将拒绝该请求。

您可以使用 Amazon CLI、Amazon SDK 或 REST API 检索接入点的网络起源。如果接入点指定了 VPC 配置，则其网络起源为 `VPC`。否则，接入点的网络起源为 `Internet`。

## 示例：创建接入点并将其限制为某个 VPC ID
<a name="access-points-vpc-example1"></a>

以下示例为账户 `123456789012` 中的存储桶 `{{amzn-s3-demo-bucket}}` 创建一个名为 `example-vpc-ap` 的接入点，该接入点仅允许从 VPC `vpc-1a2b3c` 访问。然后，该示例验证新接入点是否具有 `VPC` 网络起源。

------
#### [ Amazon CLI ]

```
aws s3control create-access-point --name example-vpc-ap --account-id 123456789012 --bucket {{amzn-s3-demo-bucket}} --vpc-configuration VpcId=vpc-1a2b3c
```

```
aws s3control get-access-point --name example-vpc-ap --account-id 123456789012

{
    "Name": "example-vpc-ap",
    "Bucket": "{{amzn-s3-demo-bucket}}",
    "NetworkOrigin": "VPC",
    "VpcConfiguration": {
        "VpcId": "vpc-1a2b3c"
    },
    "PublicAccessBlockConfiguration": {
        "BlockPublicAcls": true,
        "IgnorePublicAcls": true,
        "BlockPublicPolicy": true,
        "RestrictPublicBuckets": true
    },
    "CreationDate": "2019-11-27T00:00:00Z"
}
```

------

要将接入点与 VPC 搭配使用，您必须修改 VPC 端点的访问策略。VPC 端点允许流量从您的 VPC 流向 Amazon S3。它们具有访问控制策略，用于控制如何允许 VPC 内的资源与 Amazon S3 交互。仅当 VPC 端点策略同时授予对接入点和底层存储桶的访问权限时，从 VPC 通过接入点到 S3 的请求才会成功。

**注意**  
要使资源只能在 VPC 中访问，请确保为 VPC 端点创建[私有托管区域](https://docs.amazonaws.cn/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html)。要使用私有托管区域，请[修改您的 VPC 设置](https://docs.amazonaws.cn/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating)，以便 [VPC 网络属性](https://docs.amazonaws.cn/vpc/latest/userguide/vpc-dns.html#vpc-dns-support) `enableDnsHostnames` 和 `enableDnsSupport` 设置为 `true`。

以下示例策略语句配置 VPC 端点，以允许对名为 `awsexamplebucket1` 的存储桶和名为 `example-vpc-ap` 的接入点执行 `GetObject` 调用。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
        "Principal": "*",
        "Action": [
            "s3:GetObject"
        ],
        "Effect": "Allow",
        "Resource": [
            "arn:aws:s3:::awsexamplebucket1/*",
            "arn:aws:s3:us-west-2:123456789012:accesspoint/example-vpc-ap/object/*"
        ]
    }]
}
```

------

**注意**  
此示例中的 `"Resource"` 声明使用 Amazon 资源名称（ARN）指定接入点。有关接入点 ARN 的更多信息，请参阅 [使用 ARN、接入点别名或虚拟托管类型 URI 来引用接入点](access-points-naming.md)。

有关 VPC 端点策略的更多信息，请参阅《VPC User Guide》**中的 [Using endpoint policies for Amazon S3](https://docs.amazonaws.cn/vpc/latest/userguide/vpc-endpoints-s3.html#vpc-endpoints-policies-s3)。

有关使用 VPC 端点创建接入点的教程，请参阅 [Managing Amazon S3 access with VPC endpoints and access points](https://www.amazonaws.cn/blogs/storage/managing-amazon-s3-access-with-vpc-endpoints-and-s3-access-points/)。

## 示例：创建附加到适用于 OpenZFS 的 FSx 卷的接入点并将其限制为某个 VPC ID
<a name="access-points-vpc-example2"></a>

您可以使用 Amazon FSx 控制台、Amazon CLI 或 API 创建附加到适用于 OpenZFS 的 FSx 卷的接入点。附加后，您可以使用 S3 对象 API 从指定的 VPC 访问您的文件数据。

有关创建和限制连接到适用于 OpenZFS 的 FSx 卷的接入点的说明，请参阅《适用于 OpenZFS 的 FSx 用户指南》**中的[创建仅限虚拟私有云（VPC）的接入点](https://docs.amazonaws.cn/fsx/latest/OpenZFSGuide/create-access-points.html)。

## 示例：创建附加到适用于 ONTAP 的 FSx 卷的接入点并将其限制为某个 VPC ID
<a name="access-points-vpc-example3"></a>

您可以使用 Amazon FSx 控制台、Amazon CLI 或 API 创建附加到适用于 ONTAP 的 FSx 卷的接入点。附加后，您可以使用 S3 对象 API 从指定的 VPC 访问您的文件数据。

有关创建和限制连接到适用于 ONTAP 的 FSx 卷的接入点的说明，请参阅[《适用于 ONTAP 的 FSx 用户指南》](https://docs.amazonaws.cn/fsx/latest/ONTAPGuide/access-points-for-fsxn-vpc.html)**。