

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 通过 Terraform 在 Amazon Bedrock 上使用 CrewAI 框架部署代理式系统
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework"></a>

*Vanitha Dontireddy，Amazon Web Services*

## Summary
<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/) 框架来实施可扩展的多代理人工智能系统。利用该解决方案，组织将能够通过基础设施即代码（IaC）创建、部署和管理复杂的人工智能代理工作流。在此模式中，了解 CrewAI 多代理编排功能可与 Amazon Bedrock 基础模型和 Terraform 基础设施自动化相结合。因此，团队可以构建生产就绪型人工智能系统，因此只需最少的人工监督即可处理复杂的任务。该模式实施了企业级安全性、可扩展性和运营最佳实践。

## 先决条件和限制
<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 框架

**限制**
+ 代理交互受到模型上下文窗口的限制。
+ 对于大规模部署而言，Terraform 状态管理注意事项同样适用此模式。
+ 有些 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)，然后选择相应服务的链接。

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

在此模式中，会发生以下交互：
+ Amazon Bedrock 通过其基础模型套件为特工情报奠定了基础 (FMs)。它可为人工智能代理提供自然语言处理（NLP）、推理和决策能力，同时还能保持高可用性和可扩展性。
+ CrewAI 框架是创建和管理人工智能代理的核心编排层。它可以处理代理通信协议、任务委派和工作流管理，同时还能与 Amazon Bedrock 集成。
+ Terraform 通过代码管理整个基础设施堆栈，包括计算资源、网络、安全组和 AWS Identity and Access Management (IAM) 角色。它可确保跨环境部署时保持一致性和版本受控。Terraform 部署创建了以下内容：
  + AWS Lambda 运行 CrewaI 应用程序的函数
  + Amazon Simple Storage Service（Amazon S3）存储桶，可用于编码和报告
  + IAM 角色，具有适当的权限
  + 亚马逊 CloudWatch 日志
  + 由亚马逊计划执行 EventBridge

下图阐明了使用 Amazon Bedrock 和 Terraform 部署 CrewAI 多代理系统的架构。

![\[使用 Terraform 和 Amazon Bedrock 部署 CrewAI 多代理系统的工作流。\]](http://docs.aws.amazon.com/zh_cn/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 模型配置包括指定用于配置 CrewAI 代理的基础模型（FM）。

1. 已建立 EventBridge 规则，根据定义的计划触发 Lambda 函数。

1. 当触发（通过计划或手动触发）时，Lambda 函数将初始化并担任具有访问权限和 A AWS 服务 mazon Bedrock 权限的 IAM 角色。

1. CrewAI 框架从 YAML 文件加载代理配置，并创建专门的人工智能代理（*AWS 基础设施安全审计*团队）。Lambda 函数按顺序执行这些代理来扫描 AWS 资源、分析安全漏洞并生成全面的审计报告。

1. CloudWatch 日志从 Lambda 函数中捕获详细的执行信息，保留期为 365 天，并且 AWS Key Management Service (AWS KMS) 加密以满足合规性要求。通过这些日志，可以了解代理活动、错误跟踪和性能指标，从而能够对安全审计流程进行有效的监控和问题排查。

1. 安全审计报告将自动生成并存储在指定的 Amazon S3 存储桶中。自动设置有助于保持一致的安全监控，同时最大限度地减少运营开销。

初始部署后，该工作流程无需人工干预即可为您的 AWS 基础架构提供持续的安全审计和报告。

**人工智能代理概述**

此模式会创建多个人工智能代理，其中每个代理都具有唯一的角色、目标和工具：
+ **安全分析师代理**收集和分析 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 执行指标以供监控之用。

**注意**  
的代码来自 GitHub [3P-agentic\$1F `aws-security-auditor-crew` rameworks 存储库，该存储库可在示例](https://github.com/aws-samples/3P-Agentic-Frameworks/blob/main/crewai/aws-security-auditor-crew/README.md)集合中找到。 AWS 

**可用性和扩缩**

您可以将可用代理数量扩展到四个以上的核心代理。要使用其他专业代理进行扩展，请考虑以下新的代理类型：
+ *威胁情报专家*代理可以执行以下操作：
  + 监控外部威胁源并建立与内部调查发现的关联
  + 提供与您的基础设施的相关的新威胁的上下文
  + 根据野外的活动利用情况，确定漏洞的优先级
+ *合规性框架*代理人可以专注于特定的监管领域，例如：
  + 支付卡行业数据安全标准（PCI DSS）合规性代理
  + 1996 年版健康保险流通与责任法案（HIPAA）合规性代理
  + 系统和组织控制（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) 是一项完全托管的人工智能服务，可通过统一的 API 提供高性能基础模型 (FMs) 以供使用。
+ [Amazon CloudWatch Lo](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) gs 可帮助您集中所有系统和应用程序的日志， 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)是一项基于云的对象存储服务，可帮助您存储、保护和检索任意数量的数据。在此模式中，它可为代理构件和状态管理提供对象存储。

**其他工具**
+ [CrewAI](https://www.crewai.com/open-source) 是一个基于 Python 的开源框架，可用于构建多代理人工智能系统。
+ [Terraform](https://www.terraform.io/) 是一款基础设施即代码 (IaC) 工具 HashiCorp ，可帮助您创建和管理云和本地资源。

**代码存储库**

此模式的代码可在 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 DynamoDB 锁定使用 Amazon S3 后端，对 Terraform 实施适当的状态管理。有关更多信息，请参阅*使用 Terraform AWS 提供程序的最佳实践*[中的后端](https://docs.aws.amazon.com/prescriptive-guidance/latest/terraform-aws-provider-best-practices/backend.html)最佳实践。
+ 使用工作区来分隔开发、暂存和生产环境。
+ 遵循最低权限原则，并授予执行任务所需的最低权限。有关详情，请参阅 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 日志启用详细的日志记录和监控。
+ 为代理操作实施重试机制和错误处理。

## 操作说明
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-epics"></a>

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


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 克隆存储库。 | 要在本机计算机上克隆此模式的存储库，请运行以下命令：<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_cn/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>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 访问代理。 |  AWS 基础设施安全审计和报告团队中的代理是作为 Lambda 函数部署的。要访问代理，请使用以下步骤：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/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_cn/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 中存储报告的必要权限。输出是一份降价报告，可对您的 AWS 基础架构进行全面的安全分析。为了帮助详细调试代理行为，请执行以下操作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/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_cn/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_cn/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_cn/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>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 删除创建的资源。 | 要删除此模式创建的所有基础设施，请运行以下命令：<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 文档中的[排查 IAM 问题](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot.html)。 | 

## 相关资源
<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/)
+ [亚马逊 Bedrock Agents 的工作原理](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-how.html)
+ [AWS 架构完善的框架](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` 文件，以包含新的代理特定任务。
   + 在各项任务之间创建依赖关系，以帮助确保正确的信息传递流程。
   + 适当时实施并行任务执行。

**技术实施**

以下是 `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 的使用情况。
  + 根据审计范围，实施选择性代理激活。
+ **协作效率**
  + 优化代理之间的信息共享。
  + 为复杂的环境实施分层代理结构。
+ **知识库增强**
  + 为代理提供其所在领域的专业知识库。
  + 使用新的安全最佳实践定期更新代理知识。