AI News HubLIVE
站内改写5 分钟阅读

在AWS上使用现代数据网格策略构建自主AI应用

本文展示了如何在AWS上构建一个受治理的无服务器数据网格,为生产级自主AI提供安全、可扩展的数据基础。架构通过S3 Tables(Iceberg)、S3 Vectors和AgentCore Gateway实现三层治理,解决自主AI多步骤数据访问中的授权问题。

来源AWS Machine Learning Blog作者: Venkata Sistla

当客服代理自主查询订单数据库、检索退货政策并综合答案时,它需要跨组织多个数据源的受控访问。在现代化数据网格上构建自主AI应用,需要在数据交互链的每一层实施细粒度访问控制。自主发现数据库模式、构建SQL查询并综合多个数据源的AI代理,暴露了为检索增强生成(RAG)构建的单检查点模型无法解决的治理缺口。组织需要从工具发现到查询执行再到响应合成的全程控制。

在之前的文章《在AWS无服务器数据湖上构建安全RAG应用》中,我们展示了如何通过使用业务领域和安全分类等元数据过滤向量搜索结果,对RAG实施细粒度访问控制(FGAC)。该方法行之有效,因为RAG的数据交互简单:从预构建的向量索引中检索块,按元数据过滤,并呈现结果。

本文展示了如何在AWS上构建一个受治理的无服务器数据网格,为生产级自主AI提供安全、可扩展的数据基础。该架构在原有基础上进行了三项关键改进:

  • 用Amazon S3 Vectors替代Amazon OpenSearch Serverless,实现成本优化的知识库,在中等查询频率工作负载下,与专用向量数据库解决方案相比,可将向量存储和查询成本降低高达90%。
  • 用受AWS Lake Formation治理的Amazon S3 Tables(内置Apache Iceberg支持)替代通用Amazon S3,与自管理Iceberg表相比,每秒事务处理量提升高达10倍,并提供细粒度的行、列和单元格级安全。
  • 通过AgentCore Gateway将数据网格暴露为模型上下文协议(MCP)工具,并利用AWS Lambda支持的拦截器在每次代理到工具的调用中实现确定性访问控制。

前提条件 要实现此架构,您需要:

  • 具有管理员访问权限的AWS账户。
  • AWS Identity and Access Management (IAM) 权限,用于创建角色、策略、Lambda函数、S3 Tables表桶、Amazon Athena工作组和Lake Formation配置。
  • 熟悉AWS Lake Formation概念(数据湖管理员、LF-Tag、数据过滤器)。
  • 已启用Amazon Bedrock的账户并配置模型访问权限。
  • 账户中配置了Amazon Bedrock AgentCore访问权限。
  • 安装并配置AWS CLI v2。

架构概览 下图展示了从客户请求到受控数据访问再返回的端到端流程。每一层都实施自己的授权控制,因此没有单点故障能暴露未经授权的数据。架构图包含四层:代理层(AgentCore Runtime和LangGraph代理)、网关层(请求和响应拦截器)、工具层(四个Lambda支持的MCP工具:get_user_tables、get_schema、run_query、kb_search)以及受治理数据网格(S3 Tables、Athena、Lake Formation、S3 Vectors)。箭头显示数据从客户经代理流向受控数据源。

  • 代理层 – 客户与AgentCore Runtime交互,这是一个安全的无服务器托管环境,在隔离的微VM环境中部署代理,并实现会话隔离。代理在LangGraph框架内运行,通过MCPClient类与MCP工具集成。
  • 网关层 – 网关包括执行JSON Web Token(JWT)验证和作用域强制执行的请求拦截器,以及处理工具过滤、数据编辑和审计日志的响应拦截器。AgentCore Policy与Bedrock Guardrails实时评估每次工具调用的输入和输出,防范提示注入、有害内容和敏感信息泄露。
  • 工具层 – 四个Lambda支持的MCP工具提供受控数据访问:get_user_tables、get_schema、run_query和kb_search。
  • 受治理数据网格 – S3 Tables(Iceberg)注册在AWS Glue数据目录中,Amazon Athena具有工作组成本控制,Lake Formation强制执行行/列/单元格级安全,S3 Vectors为Amazon Bedrock知识库提供支持。

为什么自主AI需要新的治理模型 RAG架构在单个检查点实施治理:通过元数据过滤的向量检索。该方法适用于RAG工作负载。自主模式引入了额外步骤,形成多步骤链,每个步骤都需要自己的授权决策。在RAG中,系统在检索时查询一个预构建的向量索引并应用元数据过滤器。在自主AI中,系统发现哪些表存在、理解模式、构建SQL、从向量存储检索并综合结果。

单次检索边界的元数据过滤器无法治理这五步链。向量数据库定期同步权限,意味着撤销不会立即反映出来。当代理自主处理数据时,这是一个不可接受的缺口。复杂的身份权限(如角色层次结构、基于属性的访问和行级过滤器)无法表示为向量块上的简单元数据键值对。

这些限制促使向受治理数据网格架构转变,其中授权在每个数据访问层原生实施。

构建受治理的无服务器数据网格 数据网格将数据所有权下放给领域团队,同时集中治理和发现。在AWS上,领域团队端到端拥有其数据产品,AWS Glue数据目录提供集中元数据发现,Lake Formation使用授予/撤销语义跨数据库、表、列、行和单元格实施权限。

每个生产者域位于其自己的AWS账户中。生产者在中央治理账户(一个专门的AWS账户,托管整个组织的权威AWS Glue数据目录和Lake Formation权限策略)中注册数据产品。数据通过Lake Formation跨账户共享。不复制数据,仅通过消费者目录中的资源链接链接元数据。在查询时,Lake Formation验证权限并向查询引擎发放临时凭证。基于标签的访问控制(LF-TBAC)动态扩展这一点。管理员为资源分配LF-Tag(如classification=PII或department=customer_service),并根据这些标签授予权限。

以下小节描述我们如何实现此网格的两个数据层。首先,我们介绍用于结构化数据(订单记录、客户档案)的事务性Iceberg表,受Lake Formation行和列安全治理。然后,我们介绍用于非结构化知识(政策、常见问题解答)的向量存储,以支持语义搜索。

使用Apache Iceberg的S3 Tables处理事务数据 对于我们的客服代理,订单管理领域团队使用Amazon S3 Tables发布订单和客户数据。S3 Tables是首个内置Apache Iceberg支持的云对象存储,与通用S3桶上的自管理Iceberg表相比,每秒事务处理量提升高达10倍。它自动处理压缩、快照管理和未引用文件删除。

S3 Tables与Amazon SageMaker Lakehouse集成,后者填充AWS Glue数据目录并通过Lake Formation联合访问。三个数据产品(customer_orders、customer_profiles和interaction_history)可通过Amazon Athena查询,受Lake Formation权限治理,并由S3 Tables自动压缩。

Lake Formation数据过滤器实施行级安全,因此代理只能访问属于已验证客户的记录。customer_orders上的数据过滤器使用行过滤器表达式customer_id = :customer_id,无论代理如何构建SQL,都将每个查询限制为当前客户的记录。run_query Lambda函数在向Athena提交查询前,将已验证客户的身份作为会话参数注入。列级安全完全隐藏敏感字段(如payment_method和billing_address)的查询结果。

使用Amazon S3 Vectors构建知识库 仅有结构化数据是不够的。客户需要从非结构化知识(产品手册、退货政策、常见问题解答和故障排除指南)中获取答案,这需要语义搜索能力。

Amazon S3 Vectors提供原生向量存储和查询支持,作为完全无服务器服务。它支持每个索引多达20亿个向量,并提供强写入一致性,意味着新添加的向量立即可查询。

S3 Vectors的成本优势 使用Amazon Bedrock知识库功能的客户可以选择S3 Vectors作为向量存储,与中等查询频率工作负载中的专用向量数据库解决方案相比,成本可降低高达90%。对于需要个位数毫秒延迟的高QPS工作负载,Amazon OpenSearch Serverless仍然是更合适的选择。AWS提供从S3 Vectors到Amazon OpenSearch Serverless集合的单步导出,适用于工作负载超出S3 Vectors性能配置的场景。

S3 Vectors支持可过滤元数据(字符串、数字、布尔、列表类型,支持$eq、$ne、$gt、$in、$and、$or等运算符)和不可过滤元数据(用于存储随结果返回的更大上下文数据)。在我们的用例中,文档存储时带有可过滤元数据键,如product_category和document_type,支持针对性语义搜索。以下示例显示一个元数据过滤器,仅检索电子产品退货政策:

{"$and": [{"product_category": {"$eq": "electronics"}}, {"document_type": {"$eq": "return_policy"}}]}

使用AgentCore Gateway暴露数据网格 在受治理数据网格和知识库就位后,下一个挑战是以安全、可发现和标准化的方式将这些能力暴露给AI代理。本节介绍实现这一点的工具、拦截器和身份传播模式。

AgentCore Gateway提供了一个集中层,用于管理AI代理如何连接到工具。它将认证、可观测性和策略实施整合到单个端点。网关将Lambda函数、API和现有MCP服务器转换为兼容MCP的工具,包括协议转换、入站OAuth授权和出站凭证管理。代理通过流式HTTP传输和OAuth Bearer令牌连接。

四个核心数据工具 四个Lambda支持的MCP工具通过网关提供受控数据访问。get_user_tables查询由Lake Formation权限过滤的AWS Glue数据目录,返回授权表。get_schema检索指定表的列名、类型和描述。run_query根据只读允许列表验证SQL,注入客户身份以实现行级过滤,并通过Athena执行,设置字节扫描成本限制。kb_search针对Amazon Bedrock知识库执行元数据过滤的语义搜索。

随着Amazon Bedrock托管知识库的推出,知识库现在可作为AgentCore Gateway中的原生预建目标类型。这意味着您可以通过网关暴露知识库,无需自定义Lambda函数——网关自动生成IAM角色,提供内置可观测性和评估指标,并通过AgentCore Policy实施策略。在此架构中,我们使用自定义Lambda支持的kb_search工具来演示网关拦截器如何在工具级别实施细粒度授权和元数据过滤。