使用 Terraform 在 Amazon Bedrock 上部署代理程式系統,搭配CrewAI 架構 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Terraform 在 Amazon Bedrock 上部署代理程式系統,搭配CrewAI 架構

Vanitha Dontireddy,Amazon Web Services

Summary

此模式示範如何使用與 Amazon BedrockTerraform 整合的CrewAI 架構來實作可擴展的多代理程式 AI 系統。解決方案可讓組織透過基礎設施即程式碼 (IaC) 建立、部署和管理複雜的 AI 代理程式工作流程。在此模式中,CrewAI 多代理程式協同運作功能會結合 Amazon Bedrock 基礎模型和 Terraform 基礎設施自動化。因此,團隊可以建置生產就緒的 AI 系統,以最少的人工監督來處理複雜的任務。模式實作企業級安全性、可擴展性和操作最佳實務。

先決條件和限制

先決條件

限制

  • 客服人員互動受限於模型內容視窗。

  • 大規模部署的分層狀態管理考量適用於此模式。

  • 有些 AWS 服務 完全無法使用 AWS 區域。如需區域可用性,請參閱AWS 依區域的服務。如需特定端點,請參閱服務端點和配額,然後選擇服務的連結。

架構

在此模式中,會發生下列互動:

  • Amazon Bedrock 透過其基礎模型 (FMs) 套件提供客服人員智慧的基礎。它可為 AI 代理器啟用自然語言處理 (NLP)、推理和決策功能,同時保持高可用性和可擴展性。

  • CrewAI 架構可做為核心協同運作層,用於建立和管理 AI 代理器。它會在與 Amazon Bedrock 整合時處理代理程式通訊協定、任務委派和工作流程管理。

  • Terraform 透過程式碼管理整個基礎設施堆疊,包括運算資源、聯網、安全群組和 AWS Identity and Access Management (IAM) 角色。它可確保跨環境的一致、版本控制的部署。Terraform 部署會建立下列項目:

    • AWS Lambda 函數以執行CrewAI 應用程式

    • 適用於程式碼和報告的 Amazon Simple Storage Service (Amazon S3) 儲存貯體

    • 具有適當許可的 IAM 角色

    • Amazon CloudWatch 記錄

    • Amazon EventBridge 排定的執行

下圖說明了使用 Amazon Bedrock 和 Terraform 部署 CrewAI 多代理程式系統的架構。

使用 Terraform 和 Amazon Bedrock 部署 CrewAI 多代理程式系統的工作流程。

該圖顯示以下工作流程:

  1. 使用者複製儲存庫。

  2. 使用者執行 命令terraform apply來部署 AWS 資源。

  3. Amazon Bedrock 模型組態包括指定基礎模型 (FM),以用於設定 CrewAI 代理程式。

  4. 建立 EventBridge 規則,根據定義的排程觸發 Lambda 函數。

  5. 觸發時 (透過排程或手動),Lambda 函數會初始化並擔任具有存取 AWS 服務 和 Amazon Bedrock 許可的 IAM 角色。

  6. CrewAI 架構會從 YAML 檔案載入代理程式組態,並建立專門的 AI 代理程式 (AWS 基礎設施安全稽核人員)。Lambda 函數會依序執行這些代理程式,以掃描 AWS 資源、分析安全漏洞,並產生全面的稽核報告。

  7. CloudWatch Logs 會擷取來自 Lambda 函數的詳細執行資訊,其中包含 365 天的保留期和 AWS Key Management Service (AWS KMS) 合規要求的加密。日誌提供客服人員活動、錯誤追蹤和效能指標的可見性,可有效監控和疑難排解安全稽核程序。

  8. 安全性稽核報告會自動產生並存放在指定的 Amazon S3 儲存貯體中。自動化設定有助於維持一致的安全監控,並將營運開銷降至最低。

在初始部署之後,工作流程會為您的 AWS 基礎設施提供持續的安全稽核和報告,而無需手動介入。

AI 代理器概觀

此模式會建立多個 AI 代理器,每個代理器都有獨特的角色、目標和工具:

  • 安全分析師代理程式會收集和分析 AWS 資源資訊。

  • 滲透測試人員代理程式可識別 AWS 資源中的漏洞。

  • 合規專家代理程式會根據合規標準檢查組態。

  • 報告寫入器代理程式會將問題清單編譯為全面的報告。

這些客服人員會協同處理一系列任務,利用其集體技能來執行安全稽核並產生全面的報告。( config/agents.yaml 檔案概述了此組建中每個代理程式的功能和組態。)

安全分析處理包含下列動作:

  1. 安全分析師代理程式會檢查所收集的 AWS 資源相關資料,例如下列項目:

    • Amazon Elastic Compute Cloud (Amazon EC2) 執行個體和安全群組

    • Amazon S3 儲存貯體和組態

    • IAM 角色、政策和許可

    • 虛擬私有雲端 (VPC) 組態和網路設定

    • Amazon RDS 資料庫和安全性設定

    • Lambda 函數和組態

    • AWS 服務 稽核範圍內的其他項目

  2. 滲透測試人員代理程式可識別潛在漏洞。

  3. 客服人員透過CrewAI」架構協作來共用問題清單。

報告產生包含下列動作:

  1. 報告寫入器代理程式會編譯所有其他代理程式的問題清單。

  2. 安全問題會依服務、嚴重性和合規影響進行組織。

  3. 系統會為每個已識別的問題產生修復建議。

  4. 以 Markdown 格式建立全面的安全稽核報告,並上傳至指定的 Amazon S3 儲存貯體。保留歷史報告以進行合規追蹤和安全狀態改善。

記錄和監控活動包括:

  • CloudWatch 日誌會擷取執行詳細資訊和任何錯誤。

  • 系統會記錄 Lambda 執行指標以進行監控。

注意

的程式碼aws-security-auditor-crew來自 GitHub 3P-Agentic_frameworks 儲存庫,可在 AWS 範例集合中找到。

可用性和擴展

您可以將可用的客服人員擴展到四個以上的核心客服人員。若要使用其他專業客服人員進行擴展,請考慮下列新的客服人員類型:

  • 威脅情報專家代理程式可以執行下列動作:

    • 監控外部威脅饋送,並與內部調查結果建立關聯

    • 提供有關與基礎設施相關的新興威脅的內容

    • 根據在野外的主動利用來排定漏洞的優先順序

  • 合規架構代理程式可以專注於特定法規領域,例如:

    • 支付卡產業資料安全標準 (PCI DSS) 合規代理程式

    • 1996 年健康保險流通與責任法案 (HIPAA) 合規代理程式

    • 系統和組織控制 2 (SOC 2) 合規代理程式

    • 一般資料保護法規 (GDPR) 合規代理程式

透過仔細擴展可用的代理程式,此解決方案可以提供更深入、更專業的安全洞見,同時在大型 AWS 環境中維持可擴展性。如需實作方法、工具開發和擴展考量的詳細資訊,請參閱其他資訊

工具

AWS 服務

  • Amazon Bedrock 是一項全受管 AI 服務,可透過統一 API 使用高效能的基礎模型 (FMs)。

  • Amazon CloudWatch Logs 可協助您集中所有系統、應用程式的日誌, AWS 服務 以便您可以監控日誌並將其安全地存檔。

  • Amazon EventBridge 是一種無伺服器事件匯流排服務,可協助您將應用程式與來自各種來源的即時資料連線。例如, AWS Lambda 函數、使用 API 目的地的 HTTP 調用端點,或其他事件匯流排 AWS 帳戶。在此模式中,它會用於排程和協調客服人員工作流程。

  • AWS Identity and Access Management (IAM) 透過控制已驗證並獲授權使用的人員,協助您安全地管理對 AWS 資源的存取。

  • AWS Lambda 是一項運算服務,可協助您執行程式碼,無需佈建或管理伺服器。它只會在需要時執行程式碼並自動擴展,因此您只需按使用的運算時間付費。

  • 適用於 Python (Boto3) 的 AWS SDK 是一種軟體開發套件,可協助您整合 Python 應用程式、程式庫或指令碼 AWS 服務。

  • Amazon Simple Storage Service (Amazon S3) 是一種雲端型物件儲存服務,可協助您儲存、保護和擷取任何數量的資料。在此模式中,它會為代理程式成品和狀態管理提供物件儲存。

其他工具

  • 以 Python 為基礎的開放原始碼架構CrewAI可建置多代理程式 AI 系統。

  • Terraform 是 HashiCorp 的基礎設施即程式碼 (IaC) 工具,可協助您建立和管理雲端和內部部署資源。

程式碼儲存庫

此模式的程式碼可在 GitHub deploy-crewai-agents-terraform 儲存庫中使用。

最佳實務

  • 使用 Amazon S3 後端搭配 Amazon DynamoDB 鎖定,為 Terraform 實作適當的狀態管理。如需詳細資訊,請參閱《使用 Terraform 提供者的最佳實務》中的後端最佳實務。 AWS

  • 使用工作區來分隔開發、預備和生產環境。

  • 遵循最低權限原則,並授予執行任務所需的最低許可。如需詳細資訊,請參閱 IAM 文件中的授予最低權限安全最佳實務

  • 透過 CloudWatch Logs 啟用詳細記錄和監控。

  • 實作客服人員操作的重試機制和錯誤處理。

史詩

任務描述所需的技能

複製儲存庫。

若要在本機電腦上複製此模式的儲存庫,請執行下列命令:

git clone "git@github.com:aws-samples/deploy-crewai-agents-terraform.git" cd deploy-crewai-agents-terraform
DevOps 工程師

編輯環境變數。

若要編輯環境變數,請執行下列動作:

  1. terraform terraform.tfvars.example 目錄中的範例建立terraform.tfvars檔案。

  2. 編輯環境變數以使用您自己的資訊。

DevOps 工程師

建立基礎設施。

若要建立基礎設施,請執行下列命令:

cd terraform
terraform init
terraform plan

請仔細檢閱執行計畫。如果計劃的變更是可接受的,請執行下列命令:

terraform apply --auto-approve
DevOps 工程師
任務描述所需的技能

存取代理程式。

AWS 基礎設施安全稽核和報告團隊中的代理程式會部署為 Lambda 函數。若要存取代理程式,請使用下列步驟:

  1. 登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/lambda/ 開啟 AWS Lambda 主控台。

  2. 函數頁面上,尋找並選取名為 {project_name}\function 的函數 (如 Terraform 變數中所定義)。

  3. 從函數的頁面,您可以採取下列動作:

    • 檢視組態詳細資訊。

    • 監控執行指標。

    • 檢視 CloudWatch 日誌。

    • 手動測試函數。

DevOps 工程師

(選用) 設定代理程式的手動執行。

代理程式設定為以每日排程 (午夜 UTC) 自動執行。不過,您可以使用下列步驟手動觸發它們:

  1. 在 Lambda 主控台中,選取名為 的函數{project_name}

  2. 在函數的頁面上,選擇測試索引標籤。

  3. 使用空的 JSON 物件 建立新的測試事件{}

  4. 若要執行事件,請選擇測試

如需詳細資訊,請參閱 Lambda 文件中的在主控台中測試 Lambda 函數

DevOps 工程師

存取代理程式日誌以進行偵錯。

CrewAI 代理程式正在 Lambda 環境中執行,具有執行安全稽核和在 Amazon S3 中存放報告的必要許可。輸出是 Markdown 報告,可提供 AWS 基礎設施的完整安全分析。

若要協助詳細偵錯代理程式行為,請執行下列動作:

  1. 在 中 AWS Management Console,導覽至 CloudWatch Logs。

  2. 尋找 Lambda 函數的日誌群組。

  3. 尋找具有代理程式名稱的日誌項目 (例如,基礎設施映射專家探索性安全分析師)。

  4. 檢閱日誌,深入了解每個客服人員的動作。

DevOps 工程師

檢視代理程式執行的結果。

若要檢視代理程式執行的結果,請執行下列動作:

  1. 在 中 AWS Management Console,導覽至 Amazon S3。

  2. 開啟名為 的 Amazon S3 儲存貯體 {project_name}-reports-{random_suffix}(如 Terraform 變數中所定義)。

報告會以時間戳記型檔案名稱存放,如下所示: security-audit-report-YYYY-MM-DD-HH-MM-SS.md)

DevOps 工程師

監控代理程式執行。

若要透過 CloudWatch 日誌監控代理程式的執行,請執行下列動作:

  1. 在 中 AWS Management Console,導覽至 CloudWatch。

  2. 移至日誌群組

  3. 選取名為 的日誌群組/aws/lambda/{project_name}-function

  4. 日誌串流中,選擇最新的日誌串流以查看詳細的執行資訊。

DevOps 工程師

自訂代理程式行為。

若要修改客服人員或其任務,請執行下列動作:

  1. 更新本機儲存庫中的組態檔案:

    • 下列檔案會定義每個客服人員的角色、功能和設定: src/aws_infrastructure_security_audit_and_reporting/config/agents.yaml

    • 下列 dile 定義客服人員的任務和工作流程:

    src/aws_infrastructure_security_audit_and_reporting/config/tasks.yaml

  2. 若要重新封裝和更新 Lambda 函數,請使用下列命令:

cd terraform
terraform apply
DevOps 工程師
任務描述所需的技能

刪除建立的資源。

若要刪除此模式建立的所有基礎設施,請執行下列命令:

terraform plan -destroy
警告

下列命令將永久刪除此模式建立的所有資源。命令會在移除任何資源之前提示確認。

請仔細檢閱銷毀計畫。如果計劃刪除是可接受的,請執行下列命令:

terraform destroy
DevOps 工程師

故障診斷

問題解決方案

客服人員行為

如需此問題的相關資訊,請參閱 Amazon Bedrock 文件中的測試和疑難排解代理程式行為

Lambda 網路問題

如需有關這些問題的資訊,請參閱 Lambda 文件中的對 Lambda 中的聯網問題進行故障診斷

IAM 許可

如需這些問題的相關資訊,請參閱 IAM 文件中的疑難排解 IAM。

相關資源

AWS 部落格

AWS 文件

其他資源

其他資訊

本節包含實作方法、工具開發以及與自動化和擴展中先前討論相關的擴展考量的相關資訊。

實作方法

請考慮下列新增客服人員的方法:

  1. 代理程式組態:

    • 將新的客服人員定義新增至 config/agents.yaml 檔案。

    • 為每個代理程式定義專門的備份、目標和工具。

    • 根據客服人員專科設定記憶體和分析功能。

  2. 任務協同運作:

    • 更新 config/tasks.yaml 檔案以包含新的客服人員特定任務。

    • 在任務之間建立相依性,以協助確保適當的資訊流程。

    • 視需要實作平行任務執行。

技術實作

以下是提議的 Threat Intelligence Specialist 代理程式agents.yaml的 檔案新增項目:

Example new agent configuration in agents.yaml threat_intelligence_agent: name: "Threat Intelligence Specialist" role: "Cybersecurity Threat Intelligence Analyst" goal: "Correlate AWS security findings with external threat intelligence" backstory: "Expert in threat intelligence with experience in identifying emerging threats and attack patterns relevant to cloud infrastructure." verbose: true allow_delegation: true tools: - "ThreatIntelligenceTool" - "AWSResourceAnalyzer"

工具開發

使用CrewAI,您可以採取下列動作來增強安全稽核團隊的有效性:

  • 為新客服人員建立自訂工具。

  • 與外部 APIs整合以進行威脅情報。

  • 為不同的 開發專用分析器 AWS 服務。

擴展考量

擴展您的 AWS 基礎設施安全稽核和報告系統以處理更大的環境或更全面的稽核時,請解決下列擴展因素:

  • 運算資源

    • 增加 Lambda 記憶體配置以處理其他代理程式。

    • 考慮將代理程式工作負載分割到多個 Lambda 函數。

  • 成本管理

    • 在代理程式計數增加時監控 Amazon Bedrock API 用量。

    • 根據稽核範圍實作選擇性代理程式啟用。

  • 協同合作效率

    • 最佳化客服人員之間的資訊共用。

    • 實作複雜環境的階層式代理程式結構。

  • 知識庫增強功能

    • 為客服人員提供其網域的專業知識庫。

    • 使用新的安全最佳實務定期更新客服人員知識。