

# 用于 S3 Vectors 的 VPC 端点


为了从您的虚拟私有云（VPC）访问 S3 Vectors，Amazon S3 支持通过 AWS PrivateLink（PrivateLink）使用接口 VPC 端点。PrivateLink 提供了您的 VPC 与 S3 Vectors 之间的私有连接，使您无需使用互联网网关或 NAT 设备。接口端点由一个或多个弹性网络接口（ENI）表示，这些接口是从 VPC 中的子网分配的私有 IP 地址。通过接口端点向 S3 Vectors 发出的请求仍留在 AWS 网络上。

您还可以通过 AWS Direct Connect 或 AWS 虚拟专用网络（AWS VPN）从本地应用程序访问 VPC 中的接口端点。有关如何将 VPC 与本地网络连接的更多信息，请参阅[《AWS Direct Connect 用户指南》](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)**和[《AWS Site-to-Site VPN 用户指南》](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)**。有关接口端点的一般信息，请参阅《AWS PrivateLink 指南》**中的[使用接口 VPC 端点访问 AWS 服务](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)。

## 将 PrivateLink 与 S3 Vectors 结合使用的好处


将 PrivateLink 与 S3 Vectors 结合使用可带来多项安全性和运营方面的好处：
+ **增强的安全性**：您的 VPC 与 S3 Vectors 之间的流量始终留在 AWS 网络内，不会通过互联网传输。
+ **简化的网络架构**：无需配置互联网网关、NAT 设备或 VPN 连接即可访问 S3 Vectors。
+ **精细的访问控制**：使用 VPC 端点策略来控制哪些向量存储桶和向量索引可通过端点访问。
+ **合规性支持**：满足“必须对敏感数据使用专用网络连接”的监管要求。

## VPC 端点 DNS 名称和解析


当您创建 VPC 端点时，S3 Vectors 会生成两种类型的特定于端点的 DNS 名称：区域和可用区。

用于 S3 Vectors 的接口 VPC 端点的区域和可用区 DNS 名称如下所示：
+ **区域 DNS 名称**：`vpce-1a2b3c4d-5e6f.s3vectors.region.vpce.amazonaws.com` – 区域 VPC 端点 DNS 名称。始终解析为私有 IP 地址。
+ **可用区 DNS 名称**：`vpce-1a2b3c4d-5e6f-availability_zone_code.s3vectors.region.vpce.amazonaws.com` – 特定于可用区的 VPC 端点 DNS 名称。始终解析为私有 IP 地址。

如果为 VPC 端点启用了私有 DNS，您还可以使用公共端点 `s3vectors.region.api.aws` 的 DNS 名称作为端点服务的私有 DNS 名称。

## 接口端点的 IP 寻址


S3 Vectors 区域、可用区和私有 DNS 端点对 AWS PrivateLink 支持 IPv4、IPv6 和双堆栈 IP 类型。有关更多信息，请参阅《AWS PrivateLink 指南》**中的 [IP 地址类型](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html#aws-service-ip-address-type)和 [AWS 服务的 DNS 记录 IP 类型](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html#aws-services-dns-record-ip-type)。

尝试在 VPC 中通过 IPv6 访问 S3 Vectors 向量索引和向量存储桶之前，您应该了解以下事项：
+ 用于访问向量的客户端和您的 S3 Vectors 客户端都必须启用了双堆栈。
+ 如果您的 VPC 安全组未设置 IPv6，您需要配置一条规则以允许 IPv6 流量。有关更多信息，请参阅《VPC 用户指南》**中的[步骤 3：更新安全组规则](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html#vpc-migrate-ipv6-sg-rules)和《Amazon EC2 用户指南》**中的[配置安全组规则](https://docs.aws.amazon.com/ec2/latest/userguide/working-with-security-groups.html#adding-security-group-rule)。
+ 如果您的 VPC 未分配 IPv6 CIDR，则需要手动将 IPv6 CIDR 数据块添加到 VPC。有关更多信息，请参阅《AWS PrivateLink 指南》**中的[为 VPC 添加 IPv6 支持](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#vpc-endpoint-ipv6)。
+ 如果您使用 IP 地址筛选 IAM 策略，则必须对这些策略进行更新才能处理 IPv6 地址。有关使用 IAM 管理访问权限的更多信息，请参阅 [S3 Vectors 中的身份和访问权限管理](s3-vectors-access-management.md)。

## 为 S3 Vectors 创建 VPC 接口端点


您可以使用 VPC 控制台、AWS CLI、AWS SDK 或 AWS API 为 S3 Vector 创建 VPC 接口端点。

### 使用 S3 控制台


1. 通过以下网址打开 VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

1. 在导航窗格中，选择**端点**。

1. 选择 **创建端点**。

1. 对于**服务类别**，选择 **AWS 服务**。

1. 对于**服务**，搜索 `s3vectors` 并选择 `com.amazonaws.region.s3vectors`。

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

1. （可选）在**其他设置**下，对于**启用 DNS 名称**，选择是否启用私有 DNS 功能。启用后，使用公共服务端点（`s3vectors.region.api.aws`）的请求（例如通过 AWS SDK 发出的请求）将解析到您的 VPC 端点，而非公共端点。

1. 对于**子网**，选择要在其中创建端点网络接口的子网。

1. 对于 **IP 地址类型**，选择端点的 IP 地址类型。
   + **IPv4**：将 IPv4 地址分配给端点网络接口。仅当所有选定子网都具有 IPv4 地址范围时，才支持此选项。
   + **IPv6**：将 IPv6 地址分配给端点网络接口。仅当所有选定子网均为仅限 IPv6 的子网时，才支持此选项。
   + **双堆栈**：将 IPv4 和 IPv6 地址均分配给端点网络接口。仅当所有选定子网都具有 IPv4 和 IPv6 地址范围时，才支持此选项。

1. 对于**安全组**，选择要与端点网络接口关联的安全组。

1. （可选）对于**策略**，您可以附加 VPC 端点策略来控制通过端点对 S3 Vectors 的访问。要允许所有主体通过接口端点对所有 S3 Vectors 资源执行的所有操作，请选择**完全访问权限**。要限制访问，请选择**自定义**并输入策略。有关更多信息，请参阅《AWS PrivateLink 指南》中的[使用端点策略控制对 VPC 端点的访问](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。如果您未附加策略，默认策略将允许完全访问权限。

1. 选择**创建端点**。

### 使用 AWS CLI


要创建为 S3 Vectors 返回 IPv4 和 IPv6 的新 VPC 端点，请使用以下示例 CLI 命令。有关更多信息，请参阅 [create-vpc-endpoint](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-vpc-endpoint.html)。

```
aws ec2 create-vpc-endpoint \
    --vpc-id vpc-12345678 \
    --service-name com.amazonaws.region.s3vectors \
    --vpc-endpoint-type Interface \
    --subnet-ids subnet-12345678 subnet-87654321 \
    --security-group-ids sg-12345678 \
    --ip-address-type dualstack \
    --private-dns-enabled
```

`--private-dns-enabled` 参数用于启用私有 DNS 功能。启用后，对 `s3vectors.region.api.aws` 的请求将通过您的 VPC 端点进行路由。

有关创建 VPC 端点的更多信息，请参阅《VPC 用户指南》**中的[创建 VPC 端点](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws)。

## 用于 S3 Vectors 的 VPC 端点策略


与基于资源的策略类似，您可以向 VPC 端点附加端点策略，来控制对向量索引和向量存储桶的访问。有关端点策略的更多信息，请参阅《AWS PrivateLink 指南》中的[使用端点策略控制对 VPC 端点的访问](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。

### 示例 VPC 端点策略


以下示例 VPC 端点策略允许所有主体访问所有 S3 Vectors 操作：

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "s3vectors:*"
      ],
      "Resource": "*"
    }
  ]
}
```

以下示例 VPC 端点策略限制对特定向量存储桶的访问：

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "s3vectors:GetVectorBucket",
        "s3vectors:ListIndexes",
        "s3vectors:GetIndex",
        "s3vectors:QueryVectors",
        "s3vectors:GetVectors"
      ],
      "Resource": [
        "arn:aws:s3vectors:us-west-2:111122223333:bucket/amzn-s3-demo-vector-bucket",
        "arn:aws:s3vectors:us-west-2:111122223333:bucket/amzn-s3-demo-vector-bucket/*"
      ]
    }
  ]
}
```

以下示例 VPC 端点策略仅允许在工作时间内使用 `aws:CurrentTime` 条件键进行访问：

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3vectors:*",
      "Resource": "*",
      "Condition": {
        "DateGreaterThan": {
          "aws:CurrentTime": "08:00Z"
        },
        "DateLessThan": {
          "aws:CurrentTime": "18:00Z"
        }
      }
    }
  ]
}
```

## 为 VPC 端点配置 S3 Vectors 客户端


将 VPC 端点与 S3 Vectors 一起使用时，您可以将 S3 Vectors 客户端配置为使用服务 DNS 名称或 VPC 端点 DNS 名称。

### 使用 AWS SDK


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

以下示例说明如何在适用于 Python 的 SDK（Boto3）中将 S3 Vectors 客户端配置为使用 VPC 端点：

```
import boto3

# Using service DNS name (requires private DNS feature enabled on VPC endpoint)
s3vectors_client = boto3.client(
    's3vectors',
    region_name='us-west-2',
    endpoint_url='https://s3vectors.us-west-2.api.aws'
)

# Using VPC endpoint DNS name
s3vectors_client = boto3.client(
    's3vectors',
    region_name='us-west-2',
    endpoint_url='https://vpce-12345678.s3vectors.us-west-2.vpce.amazonaws.com'
)
```

------

## VPC 端点问题排查


如果遇到接口 VPC 端点问题，建议执行以下问题排查步骤：
+ **DNS 解析**：使用私有 DNS 时，验证端点的 DNS 查询是否解析到您的 VPC CIDR 范围内的私有 IP 地址。
+ **安全组**：确保与 VPC 端点关联的安全组允许来自您的 VPC 资源的入站 HTTPS 流量（端口 443）。
+ **路由表**：确保您的子网路由表不包含可能将流量从 VPC 端点重定向到外部的冲突路由。
+ **VPC 端点策略**：检查您的 VPC 端点策略是否允许必要的 S3 Vectors 操作和资源。
+ **客户端配置**：如果私有 DNS 功能已禁用，请将您的 S3 Vectors 客户端配置为使用 VPC 端点 DNS 名称而非服务 DNS 名称。

## 监控 VPC 端点的使用情况


您可以通过 CloudTrail [NetworkActivity](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-network-events-with-cloudtrail.html) 事件日志监控 S3 Vectors VPC 端点的使用情况。

有关 S3 Vectors 日志记录的更多信息，请参阅[使用 AWS CloudTrail 对 S3 Vectors 进行日志记录](s3-vectors-logging.md)。