

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

# 使用 Terraform 在 Amazon Bedrock 上部署代理程式系統，搭配CrewAI 架構
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework"></a>

*Vanitha Dontireddy，Amazon Web Services*

## 摘要
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-summary"></a>

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

## 先決條件和限制
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-prereqs"></a>

**先決條件**
+  AWS 帳戶 具備適當許可的作用中 [，可存取 Amazon Bedrock 基礎模型](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
+ [已安裝](https://developer.hashicorp.com/terraform/install) Terraform 1.5 版或更新版本
+ [已安裝](https://www.python.org/downloads/) Python 3.9 版或更新版本
+ [已安裝](https://docs.crewai.com/installation)CrewAI 架構

**限制**
+ 客服人員互動受限於模型內容視窗。
+ 大規模部署的分層狀態管理考量適用於此模式。
+ 有些 AWS 服務 不適用於所有 AWS 區域。如需區域可用性，請參閱[AWS 依區域的服務](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。如需特定端點，請參閱[服務端點和配額](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)，然後選擇服務的連結。

## Architecture
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-architecture"></a>

在此模式中，會發生下列互動：
+ 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 多代理程式系統的工作流程。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/b46069e9-4c38-405f-b0f0-310eabb06b06/images/b3296b17-e388-46ba-8d71-2ec7ce3ed3e0.png)


該圖顯示以下工作流程：

1. 使用者複製儲存庫。

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

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

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

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

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

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

1. 安全性稽核報告會自動產生並存放在指定的 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 服務 稽核範圍內的其他項目

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

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

報告產生包含下列動作：

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

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

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

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

記錄和監控活動包括：
+ CloudWatch 日誌會擷取執行詳細資訊和任何錯誤。
+ 系統會記錄 Lambda 執行指標以進行監控。

**注意**  
的程式碼`aws-security-auditor-crew`來自 GitHub [3P-Agentic\$1frameworks](https://github.com/aws-samples/3P-Agentic-Frameworks/blob/main/crewai/aws-security-auditor-crew/README.md) 儲存庫，可在 AWS 範例集合中找到。

**可用性和擴展**

您可以將可用的客服人員擴展到四個以上的核心客服人員。若要使用其他專業客服人員進行擴展，請考慮下列新的客服人員類型：
+ *威脅情報專家*代理程式可以執行下列動作：
  + 監控外部威脅饋送並與內部調查結果建立關聯
  + 提供有關與基礎設施相關的新興威脅的內容
  + 根據萬用中的主動入侵來排定漏洞的優先順序
+ *合規架構*代理程式可以專注於特定法規領域，例如：
  + 支付卡產業資料安全標準 (PCI DSS) 合規代理程式
  + 1996 年健康保險流通與責任法案 (HIPAA) 合規代理程式
  + 系統和組織控制 2 (SOC 2) 合規代理程式
  + 一般資料保護法規 (GDPR) 合規代理程式

透過仔細擴展可用的代理程式，此解決方案可以提供更深入、更專業的安全洞見，同時在大型 AWS 環境中維持可擴展性。如需實作方法、工具開發和擴展考量的詳細資訊，請參閱[其他資訊](#deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-additional)。

## 工具
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-tools"></a>

**AWS 服務**
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) 是一種全受管 AI 服務，可透過統一 API 使用高效能的基礎模型 (FMs)。
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) 可協助您集中所有系統、應用程式的日誌， AWS 服務 以便您可以監控日誌並將其安全地存檔。
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) 是一種無伺服器事件匯流排服務，可協助您將應用程式與來自各種來源的即時資料連線。例如， AWS Lambda 函數、使用 API 目的地的 HTTP 調用端點，或其他事件匯流排 AWS 帳戶。在此模式中，它會用於排程和協調客服人員工作流程。
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 透過控制已驗證並獲授權使用的人員，協助您安全地管理對 AWS 資源的存取。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 是一項運算服務，可協助您執行程式碼，無需佈建或管理伺服器。它只會在需要時執行程式碼並自動擴展，因此您只需按使用的運算時間付費。
+ [適用於 Python (Boto3) 的 AWS SDK](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) 是一種軟體開發套件，可協助您整合 Python 應用程式、程式庫或指令碼 AWS 服務。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) 是一種雲端型物件儲存服務，可協助您儲存、保護和擷取任何數量的資料。在此模式中，它會為代理程式成品和狀態管理提供物件儲存。

**其他工具**
+ 以 Python 為基礎的開放原始碼架構[CrewAI](https://www.crewai.com/open-source)可建置多代理程式 AI 系統。
+ [Terraform](https://www.terraform.io/) 是 HashiCorp 的基礎設施即程式碼 (IaC) 工具，可協助您建立和管理雲端和內部部署資源。

**程式碼儲存庫**

此模式的程式碼可在 GitHub [deploy-crewai-agents-terraform](https://github.com/aws-samples/deploy-crewai-agents-terraform.git) 儲存庫中使用。

## 最佳實務
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-best-practices"></a>
+ 使用 Amazon S3 後端搭配 Amazon DynamoDB 鎖定，為 Terraform 實作適當的狀態管理。如需詳細資訊，請參閱《使用 Terraform 提供者的最佳實務》中的[後端](https://docs.aws.amazon.com/prescriptive-guidance/latest/terraform-aws-provider-best-practices/backend.html)最佳實務。 * AWS *
+ 使用工作區來分隔開發、預備和生產環境。
+ 遵循最低權限原則，並授予執行任務所需的最低許可。如需詳細資訊，請參閱 IAM 文件中的[授予最低權限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv)和[安全最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。
+ 透過 CloudWatch Logs 啟用詳細記錄和監控。
+ 實作客服人員操作的重試機制和錯誤處理。

## 史詩
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-epics"></a>

### 部署CrewAI架構
<a name="deploy-crewai-framework"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 複製儲存庫。 | 若要在本機電腦上複製此模式的儲存庫，請執行下列命令：<pre>git clone "git@github.com:aws-samples/deploy-crewai-agents-terraform.git"<br />cd deploy-crewai-agents-terraform</pre> | DevOps 工程師 | 
| 編輯環境變數。 | 若要編輯環境變數，請執行下列動作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html) | DevOps 工程師 | 
| 建立基礎設施。 | 若要建立基礎設施，請執行下列命令：<pre>cd terraform</pre><pre>terraform init</pre><pre>terraform plan</pre>請仔細檢閱執行計畫。如果計劃的變更是可接受的，請執行下列命令：<pre>terraform apply --auto-approve</pre> | DevOps 工程師 | 

### 存取 CrewAI 代理程式
<a name="access-crewai-agents"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 存取代理程式。 |  AWS 基礎設施安全稽核和報告人員中的代理程式會部署為 Lambda 函數。若要存取代理程式，請使用下列步驟：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html) | DevOps 工程師 | 
| （選用） 設定代理程式的手動執行。 | 代理程式設定為以每日排程 （午夜 UTC) 自動執行。不過，您可以使用下列步驟手動觸發它們：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html)如需詳細資訊，請參閱 [Lambda 文件中的在主控台中測試 Lambda 函數](https://docs.aws.amazon.com/lambda/latest/dg/testing-functions.html)。 | DevOps 工程師 | 
| 存取代理程式日誌以進行偵錯。 | CrewAI 代理程式正在 Lambda 環境中執行，具有執行安全稽核和在 Amazon S3 中存放報告的必要許可。輸出是 Markdown 報告，可提供 AWS 基礎設施的完整安全分析。若要協助詳細偵錯代理程式行為，請執行下列動作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html) | DevOps 工程師 | 
| 檢視代理程式執行的結果。 | 若要檢視代理程式執行的結果，請執行下列動作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html)報告會以時間戳記型檔案名稱存放，如下所示： `security-audit-report-YYYY-MM-DD-HH-MM-SS.md)` | DevOps 工程師 | 
| 監控代理程式執行。 | 若要透過 CloudWatch 日誌監控代理程式的執行，請執行下列動作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html) | DevOps 工程師 | 
|  自訂代理程式行為。 | 若要修改客服人員或其任務，請執行下列動作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html)<pre>cd terraform </pre><pre>terraform apply</pre> | DevOps 工程師 | 

### 清除資源
<a name="clean-up-resources"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 刪除建立的資源。 | 若要刪除此模式建立的所有基礎設施，請執行下列命令：<pre>terraform plan -destroy </pre>下列命令將永久刪除此模式建立的所有資源。命令會在移除任何資源之前提示確認。請仔細檢閱銷毀計畫。如果計劃刪除是可接受的，請執行下列命令：<pre>terraform destroy</pre> | DevOps 工程師 | 

## 疑難排解
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-troubleshooting"></a>


| 問題 | 解決方案 | 
| --- | --- | 
| 代理程式行為 | 如需此問題的相關資訊，請參閱 Amazon Bedrock 文件中的[測試和疑難排解代理程式行為](https://docs.aws.amazon.com/lambda/latest/dg/troubleshooting-networking.html)。 | 
| Lambda 網路問題 | 如需有關這些問題的資訊，請參閱 [Lambda 文件中的對 Lambda 中的聯網問題進行故障診斷](https://docs.aws.amazon.com/lambda/latest/dg/troubleshooting-networking.html)。 | 
| IAM 許可 | 如需這些問題的相關資訊，請參閱 [IAM 文件中的疑難排解](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot.html) IAM。 | 

## 相關資源
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-resources"></a>

**AWS 部落格**
+ [使用CrewAI和 Amazon Bedrock 建置代理系統](https://aws.amazon.com/blogs/machine-learning/build-agentic-systems-with-crewai-and-amazon-bedrock/)

**AWS 文件**
+ [Amazon Bedrock 文件](https://docs.aws.amazon.com/bedrock/)
+ [Amazon Bedrock 代理程式的運作方式](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-how.html)
+ [AWS Well-Architected 架構](https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html)

**其他資源**
+ [CrewAI 文件](https://docs.crewai.com/introduction)
+ [Terraform AWS 提供者文件](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)

## 其他資訊
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-additional"></a>

本節包含實作方法、工具開發以及與[自動化和擴展](#deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-architecture)中先前討論相關的擴展考量的相關資訊。

**實作方法**

考慮以下新增客服人員的方法：

1. 代理程式組態：
   + 將新的客服人員定義新增至 `config/agents.yaml` 檔案。
   + 為每個代理程式定義專門的備份、目標和工具。
   + 根據客服人員專業設定記憶體和分析功能。

1. 任務協同運作：
   + 更新 `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 用量。
  + 根據稽核範圍實作選擇性代理程式啟用。
+ **協作效率**
  + 最佳化客服人員之間的資訊共用。
  + 實作複雜環境的階層式代理程式結構。
+ **知識庫增強功能**
  + 為客服人員提供其網域的專業知識庫。
  + 使用新的安全最佳實務定期更新客服人員知識。