AI News HubLIVE
站內改寫4 分鐘閱讀

共享基礎設施,隔離租户:使用 Amazon Bedrock AgentCore 實現池模型多租户

本文介紹瞭如何使用 Amazon Bedrock AgentCore 構建生產級多租户 AI 系統的模式,通過醫療 AI 助手示例展示了租户隔離、服務層級差異化、成本追蹤和可觀測性等關鍵能力。

來源AWS Machine Learning Blog作者: Ashley Chen

構建多租户 AI 應用面臨新的架構挑戰。您需要在客户之間實現完全的租户隔離,提供不同功能的服務層級,進行細粒度的成本追蹤,並確保每個租户的可觀測性。缺少這些,可能會暴露客户數據、無法提供適當的服務質量或產生不可預見的成本。

在本文中,您將學習使用 Amazon Bedrock AgentCore 實現生產級多租户系統的模式。這些模式將通過服務多個診所和醫院的醫療 AI 助手來展示。雖然本文以醫療領域為例,但架構模式和實施技術廣泛適用於各種多租户 AI 應用。無論您是在構建 SaaS 平台、服務多個業務部門的企業解決方案,還是為不同客户組織提供託管服務,都可以使用這些架構模式來構建您的解決方案。

您將學習的內容包括:如何利用原生 AWS 能力在智能體應用中實現完整的租户隔離;如何通過最小化自定義代碼實現服務層級差異化;每個租户的精細成本歸屬技術;以及可擴展多租户 AI 架構的最佳實踐。

本文是系列文章“使用 Amazon Bedrock AgentCore 構建多租户智能體”的第二部分。第一部分探討了架構多租户智能體應用的設計考慮因素,以及應對 Amazon Bedrock AgentCore 的 SaaS 架構挑戰所需的框架。

示例代碼可在 GitHub 倉庫獲取:https://github.com/aws-samples/sample-agentcore-and-multitenancy-blog

解決方案概述

該解決方案演示瞭如何利用 Amazon Bedrock AgentCore 的原生能力,通過 AWS 託管服務實現完整的租户隔離。架構實現了三級層次結構:層級 → 租户 → 用户,並通過知識庫中的文檔、記憶、模型訪問和成本追蹤在每個層級實施隔離。層級策略是 SaaS 應用中的常見模式,租户根據其需求(如基礎版和高級版)、使用模式或定價計劃被分組到不同的服務層級。每個層級定義了一組功能和可用服務質量,使 SaaS 提供商能夠以差異化的體驗服務多樣化的客户羣,同時保持運營效率。

醫療 AI 助手示例

為了展示實際應用,示例解決方案實現了兩個服務層級:

基礎版:面向小型診所,主要需要簡單的文檔搜索和檢索。由於這些任務適合較小且成本效益高的模型,該層級使用 Mistral Ministral 3 8B Instruct,在保持低成本的同時為簡單查詢提供準確結果。

高級版:面向需要複雜臨牀分析的醫院和專科中心。該層級使用 OpenAI GPT OSS 120B,具有高級推理能力以實現準確的工具選擇,包括僅對高級版客户可用的網絡搜索工具。

在每個層級內,解決方案使用池隔離模型,即租户共享相同的基礎設施和計算資源,而不是每個租户擁有專用的隔離資源。池模型最大化資源利用並簡化操作,同時通過邏輯分離機制(如作用域標識符、訪問策略和數據分區)實施租户隔離。將層級策略與池模型相結合,可以在成本效率和提供差異化服務級別之間取得平衡。

架構

以下是如何利用 AgentCore 的原生能力解決這些多租户挑戰。架構圖展示了請求如何從經過身份驗證的用户流經特定層級的智能體到達隔離的文檔存儲。

該解決方案包括以下關鍵組件:

  • Amazon Cognito:管理用户身份驗證,並將租户元數據(層級、診所 ID、角色)存儲在 JWT 聲明中。這些聲明被提取並作為租户上下文通過請求負載傳播,使每個下游組件能夠將其操作範圍限定到正確的租户。
  • Amazon API Gateway:路由請求並通過使用計劃實施基於層級的速率限制。
  • AWS Lambda:提取租户上下文並調用對應的 Amazon Bedrock AgentCore 智能體。
  • AgentCore 組件:運行時(智能體執行)、記憶(對話狀態)、身份(智能體身份管理)、網關(工具服務器)和策略(智能體操作邊界)。
  • Amazon S3:在按層級分隔的存儲桶中存儲臨牀文檔,並使用分層前綴結構實現租户隔離。
  • Amazon Bedrock Knowledge Bases:提供語義搜索,並通過元數據過濾將查詢範圍限定到請求租户的文檔。
  • Amazon Bedrock project:通過成本分配標籤實現每個層級的成本追蹤。

解決方案詳解

本節描述解決方案的關鍵方面。您需要運行部署腳本來設置基礎設施和應用程序。本文中的代碼片段僅用於描述架構關鍵方面如何被解決方案組件處理,無需運行任何命令。

Amazon Bedrock AgentCore 組件

架構利用六個核心 Bedrock AgentCore 能力實現多租户:

AgentCore Runtime:為解決方案中的智能體提供計算,每個智能體會話在隔離的微虛擬機中執行,實現租户級計算隔離。每個層級託管獨立的智能體實例,配置適合該層級的模型和能力。

AgentCore Identity:通過統一的基於 JWT 的身份驗證模型保護多租户架構。Cognito ID 令牌在運行時和網關邊界驗證用户,而工具 Lambda 為下游數據訪問生成自己的作用域憑證。

AgentCore Memory:會話歷史不能在租户之間或同一租户的不同用户之間泄露。解決方案在應用層和基於 IAM 的屬性訪問控制(ABAC)層實施記憶隔離。應用層使用複合 actor_id 的分層命名空間結構組織每個租户的對話數據。

AgentCore Gateway:通過模型上下文協議(MCP)將靜態 Lambda 函數轉換為動態、上下文感知的智能體工具。MCP 是連接 AI 智能體到外部工具的開源標準。

每個運行時配置了入站 JWT 授權器,在智能體代碼執行前驗證 Cognito ID 令牌。ID 令牌攜帶租户元數據作為自定義聲明,例如 sub(用户唯一標識符)、iss(令牌頒發者)、aud(Web 客户端 ID)、token_use(令牌類型)、cognito:username(登錄用户名,用於記憶隔離)、custom:tier(層級)、custom:clinic_id(租户 ID)和 custom:role(角色)。

網關也配置了 JWT 授權,使用相同的 Cognito 發現 URL 和受眾。當智能體調用網關時,它將用户的原始 JWT 作為 Bearer 令牌轉發,並附上租户上下文頭。網關驗證令牌後,將租户頭傳播到目標 Lambda。

目標 Lambda 從不直接接收或處理用户的 JWT。相反,它讀取受信任的租户頭,並假設一個 TVM(令牌自動售貨機)角色,其會話標籤源自這些頭。TVM 角色的 ABAC 策略使用 dynamodb:LeadingKeys 條件限制 DynamoDB 訪問,確保每個租户只能在 IAM 級別查詢自己的診所數據,而不僅僅是應用層過濾。

電視機制:運行時,智能體假設一個 TVM 角色,其 Tier、ClinicId 和 UserId 作為會話標籤,接收限定到該租户命名空間的臨時憑證。TVM 角色的信任策略確保只有智能體執行角色可以假設它,並且所有三個會話標籤都存在。

通過這種組合,解決方案在不犧牲安全性的前提下實現了池模型多租户的靈活性和效率。