主题
BYOC 架构
LangSmith BYOC 部署如何在 LangChain 控制平面与你 AWS 账户中的数据平面之间构成。
控制平面和数据平面模型
BYOC 部署分为两个平面。本页描述每个平面的组件、它们如何通信,以及 LangChain 在你的账户中预置什么。
控制平面运行在 LangChain 的云中,处理身份认证、组织配置和计费。它预置、监控和编排你的部署,但不持有任何敏感应用数据。
数据平面运行在你的 AWS 账户中,摄取、存储和查询你所有的敏感应用数据。它持有你的 VPC、EKS 集群、数据库和其他资源。
下表总结了这种划分:
| 平面 | 运行位置 | 持有的内容 |
|---|---|---|
| 控制平面 | LangChain 的云,us-east-2 | 身份认证、组织和工作区配置、计费和用量元数据、LangSmith API keys,以及静态前端资源 |
| 数据平面 | 你的 AWS 账户,在你选择的区域中 | 追踪、提示词、数据集、评估器、实验、洞察运行、标注队列、智能体部署、工作区密钥和其他应用数据 |

预置的资源
LangChain 在你的账户中预置以下内容:
- VPC:默认情况下,一个分布在该区域可用区中的专用 VPC,带私有入口。它使用 VPC 终端节点与 AWS 服务进行私有通信,并使用 PrivateLink 实现数据平面与控制平面之间的通信。使用 BYOVPC 时,则改为由你创建和管理 VPC 及其基础网络资源。
- 托管数据库:用于关系型工作负载的 RDS,以及用于缓存的 ElastiCache。
- 存储:用于存放追踪数据的 Blob 存储、VPC 流日志和 ClickHouse 备份的 S3 存储桶。
- EKS:一个带托管附加组件的私有 EKS 集群。
- 计算:用于平台工作负载的系统节点组,以及通过 Karpenter 提供的应用节点组。
- 集群内资源:LangSmith Helm chart、Istio、KEDA 以及其他集群内资源。
- IAM 角色:Kubernetes 资源所需的角色和权限。
跨账户 IAM 权限
LangChain 需要跨账户 IAM 权限来预置和管理你 AWS 账户内的资源。这些权限让 LangChain 能够:
- 预置基础设施:创建和配置 VPC、子网、安全组和其他网络组件。使用 BYOVPC 时,该角色保留工作负载网络权限,而由你管理基础网络。
- 管理 Kubernetes 集群:部署和维护 EKS 集群、其节点组和集群附加组件。
- 创建存储资源:预置 RDS、ElastiCache,以及用于应用数据和备份的 S3 存储桶。
- 创建 IAM 角色:创建和配置 Kubernetes 服务账户和支持服务所使用的角色。
- 运维支持服务:部署和管理入口与自动扩缩容,并扩缩容和升级 LangSmith 工作负载。
权限通过一个单一的跨账户 IAM 角色授予,该角色由你在入门过程中应用 langsmith-byoc-role Terraform 模块时创建。
对于 BYOVPC,禁用基础 VPC 创建权限,并将安全组创建限定到你提供的 VPC ID。请参阅创建降权限的 IAM 角色。
LangChain 提供该角色信任策略中使用的外部 ID。使用 Settings > Data Planes 中 Data Planes 标题旁的按钮复制它,并在应用该模块时使用它。该角色的 ExternalId 条件必须与此值匹配。
如何强制执行最小权限
该角色的范围仅限于 BYOC 操作所需的权限:
- 限定到 LangSmith 拥有的资源:凡 AWS 支持资源级限定的地方,权限都被限制为带有特定标签和名称前缀的资源,因此该角色无法对账户中不相关的资源执行操作。
- 基础设施范围,而非数据范围:该角色可以管理保存你数据的资源,但无法通过 AWS 数据 API 读取数据本身。它不持有对追踪存储桶的
s3:GetObject、对 PostgreSQL 的rds-db:connect,以及对 Redis 的elasticache:Connect。
网络
数据流量
敏感数据不会离开你的 VPC,也不会经过 LangChain 的 VPC。
- 当用户打开
aws.smith.langchain.com时,浏览器会从 LangChain 的云中获取由 HTML、JavaScript、CSS 和图像组成的 LangSmith UI 包。这些资源与每个 BYOC 和 Cloud 租户运行的代码相同,且不包含任何客户数据。 - 加载后,应用会解析所选工作区的数据平面终端节点,并将每个敏感数据请求路由到你的 VPC。
要以编程方式摄取或查询数据,请将你的客户端直接指向你的数据平面。数据流始终为 browser or client → data plane → back to client。

连接
控制平面与你的数据平面之间的所有通信都通过 AWS PrivateLink 双向传输。LangChain 不会通过公共互联网访问你的环境。BYOC 建立两条 PrivateLink 连接:
- 控制平面到数据平面(管理路径):仅暴露你集群的 Kubernetes API 服务器,LangChain 用它来安装和协调 LangSmith 组件。你的数据无法通过此连接访问。
- 数据平面到控制平面(运行时路径):数据平面调用控制平面来对请求进行身份认证、验证 API keys、解析角色和权限,以及加载组织和工作区配置。
容器镜像通过 VPC 终端节点从 LangChain 控制平面的 ECR 仓库以只读方式拉取。
使用 BYOVPC 时,你配置客户侧的 AWS 服务终端节点以及数据平面到控制平面的 PrivateLink 终端节点。LangChain 管理用于集群管理路径的终端节点服务。请参阅配置连接。
DNS 和入口
流量通过由 AWS NLB 前置的 Istio 入口到达 LangSmith,并使用 Route 53 进行 DNS 解析。数据平面创建后,其 API URL 会列在 LangSmith UI 的 Settings > Data Planes 下。