主题
在 AWS 上自带 VPC
为 LangSmith BYOC 创建客户管理的 VPC,配置降权限的 IAM 角色,并提供你的 VPC 和子网 ID。
自带 VPC(BYOVPC)将 LangSmith BYOC 数据平面部署到你创建和管理的现有 VPC 中。它让你控制网络配置,而由 LangChain 预置和运维 EKS 集群、数据库、存储和其他工作负载资源。对于由 LangChain 预置的 VPC,请遵循标准的 BYOC 入门指南。
你拥有:
- VPC
- 子网
- 路由
- 网关
- VPC 终端节点
- 流日志
- 出站控制。
LangChain 保留管理工作负载安全组、用于访问你数据平面 EKS API 的 PrivateLink 终端节点服务,以及 VPC 内其他 LangSmith 基础设施(如数据库)所需的权限。
开始之前
完成 BYOC 先决条件并在你的组织上启用 BYOC。创建 VPC:
- 在与跨账户 IAM 角色相同的 AWS 账户中,并且
- 在你计划部署数据平面的区域中。
满足网络要求
当你提供 VPC(包括使用参考模块创建的 VPC)时,LangSmith 会检查以下要求。
配置 VPC 和子网
- 归属和区域:VPC 及每个提供的子网都必须属于包含该 IAM 角色的 AWS 账户,位于所请求的区域中,并处于
available状态。 - VPC 配置:使用默认实例租户和从
/16到/18的主 RFC 1918 IPv4 CIDR。同时启用 DNS 支持和 DNS 主机名。 - 可用区:在每个(两到三个)标准区域可用区中,恰好提供一个应用子网和一个数据库子网。如果你提供公有子网,请在同一批可用区中各提供一个。
- 子网范围:每个子网都必须有一个位于 VPC 主 CIDR 范围内的私有 IPv4 CIDR。提供的子网 CIDR 不得重叠。
- 子网 ID 和标签:每个子网 ID 必须在所有层级中唯一。
| 子网层级 | 最小子网大小 | 每个子网的最小可用 IPv4 地址数 |
|---|---|---|
| 私有应用 | /20 或更大 | 256 |
| 私有数据库 | /26 或更大 | 16 |
| 公有,提供时 | /26 或更大 | 16 |
更大的子网具有更小的前缀长度。子网大小和可用地址数都必须满足要求。
配置路由
VPC 必须有一个主路由表。验证会使用每个子网的显式路由表关联,如果没有显式关联,则使用主路由表。
- 私有应用子网:每个子网都必须有一条通向客户管理出站流量(例如 NAT 网关或中转网关)的活动 IPv4 默认路由(
0.0.0.0/0)。直接通向互联网网关的路由不满足此要求。 - 公有子网:每个提供的公有子网都必须有一条通向连接到该 VPC 的互联网网关的活动 IPv4 默认路由。
- 数据库子网:参考模块保持这些子网隔离,没有默认出站路由。
配置网络 ACL
每个提供的子网都必须有一个允许以下流量的关联网络 ACL。验证会按优先级顺序评估规则,包括拒绝规则。
| 子网层级 | 方向 | 协议与端口 | 来源或目标 |
|---|---|---|---|
| 所有提供的子网 | 入站和出站 | TCP 和 UDP,端口 1–65535 | VPC 主 CIDR |
| 私有应用 | 出站 | TCP 443 | 0.0.0.0/0 |
| 私有应用 | 入站 | TCP 1024–65535,用于返回流量 | 0.0.0.0/0 |
| 公有 | 入站 | TCP 443 | 0.0.0.0/0 |
| 公有 | 出站 | TCP 1024–65535,用于返回流量 | 0.0.0.0/0 |
这些是网络 ACL 要求。工作负载安全组和你的出站控制也决定哪些连接能够成功。
使用 Terraform 创建 VPC
NOTE
使用 Terraform 模块是可选的。你可以使用自己的工具创建 VPC,并将该模块作为参考以满足网络要求。
byovpc Terraform 模块 会创建一个符合 LangSmith 数据平面要求的网络。用它创建 VPC,或配置现有 VPC 以满足网络要求。
创建 VPC:
- 为目标账户和受支持区域配置 AWS 服务商。
- 将该模块添加到你的 Terraform 配置中。选择一个不与你计划对等的网络重叠的私有 CIDR 范围。
- 初始化 Terraform,审核计划,并在你的账户中应用它。
以下配置使用该模块的默认子网布局,并启用 AWS 服务终端节点、控制平面 PrivateLink 和流日志:
hcl
provider "aws" {
region = "us-west-2"
}
module "langsmith_byovpc" {
source = "github.com/langchain-ai/terraform//modules/byoc/aws/byovpc?ref=main"
name = "langsmith-production"
vpc_cidr_block = "10.0.0.0/16"
enable_vpc_endpoints = true
enable_control_plane_privatelink = true
enable_vpc_flow_logs = true
}
output "langsmith_network_config" {
value = module.langsmith_byovpc.langsmith_network_config
}langsmith_network_config 输出包含创建数据平面时需要提供的 VPC ID 和子网 ID。
配置连接
VPC 模块允许你配置:
- AWS 服务终端节点。
- 控制平面 PrivateLink 和私有 DNS。
- VPC 流日志。
- 面向互联网的负载均衡器所用的公有子网。
- NAT 和互联网网关,或客户管理的集中式出站。
有关配置选项和要求,请参阅 byovpc Terraform 模块。
创建降权限的 IAM 角色
langsmith-byoc-role Terraform 模块 会创建 LangChain 用于管理数据平面的跨账户角色。
创建该角色:
- 使用 Settings > Data Planes 中 Data Planes 标题旁的按钮复制外部 ID。将其作为
external_id传入。该角色的信任策略必须在其ExternalId条件中使用此值。 - 设置
allow_vpc_creation_permissions = false,并在vpc_ids输入中提供 VPC ID。 - 如果你需要面向互联网的负载均衡器,设置
allow_public_ingress = true。否则,保持禁用。 - 审核并应用角色模块,然后保留其
crossplane_role_arn输出以供创建数据平面时使用。
禁用 VPC 创建权限后,该角色无法创建或管理基础 VPC、子网、互联网和 NAT 网关、弹性 IP、路由表和路由、客户侧 VPC 终端节点或 VPC 流日志。它保留工作负载网络权限,包括带标签的安全组、VPC 终端节点服务,以及 Karpenter 所需的权限。安全组的创建仅限于 vpc_ids 中的 VPC ID。
提供 VPC 和子网 ID
创建数据平面时,请提供来自入门指南的名称、AWS 区域和 IAM 角色 ARN,以及以下网络值:
| 值 | Terraform 模块输出 | 数据平面创建字段 |
|---|---|---|
| VPC ID | vpc_id | byovpc_id |
| 私有应用子网 ID | private_app_subnet_ids | byovpc_private_app_subnet_ids |
| 私有数据库子网 ID | private_db_subnet_ids | byovpc_private_db_subnet_ids |
| 公有子网 ID,公有负载均衡器需要 | public_subnet_ids | byovpc_public_subnet_ids |
LangSmith 会在预置前验证网络。修正任何报告的网络或 IAM 权限错误,然后重新提交请求。验证会检查 AWS 配置;你仍需负责打通任何自定义路由、DNS、终端节点策略和出站过滤器中的连接。
创建完成后,继续预置和私有连接(第 4 步)。
维护网络
在数据平面的整个生命周期内保持客户管理的网络可用。路由、网关、终端节点、DNS、网络 ACL 和流日志的变更由你管理。
VPC、可用区和私有子网配置在创建后无法更改。你无法在 LangChain 管理的 VPC 与 BYOVPC 之间转换数据平面。
删除数据平面会移除 LangChain 管理的资源。你的 VPC 和其他客户管理的网络资源仍由你控制,并在数据平面取消预置后需要单独清理。