View a markdown version of this page

通过 Terraform 在 Amazon Bedrock 上使用 CrewAI 框架部署代理式系统 - AWS 规范指引

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

通过 Terraform 在 Amazon Bedrock 上使用 CrewAI 框架部署代理式系统

Vanitha Dontireddy,Amazon Web Services

Summary

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

先决条件和限制

先决条件

限制

  • 代理交互受到模型上下文窗口的限制。

  • 对于大规模部署而言,Terraform 状态管理注意事项同样适用此模式。

  • 有些 AWS 服务 并非全部可用 AWS 区域。有关区域可用性,请参阅按区域划分的AWS 服务。有关特定端点,请参阅服务端点和配额,然后选择相应服务的链接。

架构

在此模式中,会发生以下交互:

  • 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 多代理系统的工作流。

下图显示了如下工作流:

  1. 用户克隆存储库。

  2. 用户运行命令terraform apply来部署 AWS 资源。

  3. Amazon Bedrock 模型配置包括指定用于配置 CrewAI 代理的基础模型(FM)。

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

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

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

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

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

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

人工智能代理概述

此模式会创建多个人工智能代理,其中每个代理都具有唯一的角色、目标和工具:

  • 安全分析师代理收集和分析 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 执行指标以供监控之用。

可用性和扩缩

您可以将可用代理数量扩展到四个以上的核心代理。要使用其他专业代理进行扩展,请考虑以下新的代理类型:

  • 威胁情报专家代理可以执行以下操作:

    • 监控外部威胁源并建立与内部调查发现的关联

    • 提供与您的基础设施的相关的新威胁的上下文

    • 根据野外的活动利用情况,确定漏洞的优先级

  • 合规性框架代理人可以专注于特定的监管领域,例如:

    • 支付卡行业数据安全标准(PCI DSS)合规性代理

    • 1996 年版健康保险流通与责任法案(HIPAA)合规性代理

    • 系统和组织控制(SOC 2)合规性代理

    • 《通用数据保护条例》(GDPR)合规性代理

通过深思熟虑地扩展可用代理,该解决方案可以提供更深入、更专业的安全见解,同时保持大型 AWS 环境的可扩展性。有关实施方法、工具开发和扩展注意事项的更多信息,请参阅其他信息

工具

AWS 服务

  • Amazon Bedrock 是一项完全托管的人工智能服务,可通过统一的 API 提供高性能基础模型 (FMs) 以供使用。

  • Amazon CloudWatch Lo gs 可帮助您集中所有系统和应用程序的日志, 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)是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。在此模式中,它可为代理构件和状态管理提供对象存储。

其他工具

  • CrewAI 是一个基于 Python 的开源框架,可用于构建多代理人工智能系统。

  • Terraform 是一款基础设施即代码 (IaC) 工具 HashiCorp ,可帮助您创建和管理云和本地资源。

代码存储库

此模式的代码可在 GitHub deploy-crewai-agents-terraform存储库中找到。

最佳实践

  • 搭配 Amazon DynamoDB 锁定使用 Amazon S3 后端,对 Terraform 实施适当的状态管理。有关更多信息,请参阅使用 Terraform AWS 提供程序的最佳实践中的后端最佳实践。

  • 使用工作区来分隔开发、暂存和生产环境。

  • 遵循最低权限原则,并授予执行任务所需的最低权限。有关详情,请参阅 IAM 文档中的授予最低权限安全最佳实践

  • 通过 CloudWatch 日志启用详细的日志记录和监控。

  • 为代理操作实施重试机制和错误处理。

操作说明

Task说明所需技能

克隆存储库。

要在本机计算机上克隆此模式的存储库,请运行以下命令:

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 工程师
Task说明所需技能

访问代理。

AWS 基础设施安全审计和报告团队中的代理是作为 Lambda 函数部署的。要访问代理,请使用以下步骤:

  1. 登录 AWS 管理控制台 并打开 AWS Lambda 控制台,网址为https://console.aws.amazon.com/lambda/

  2. 函数页面上,找到并选择名为 {project_name}\function(如 Terraform 变量中所定义)的函数。

  3. 在函数页面中,您可以执行以下操作:

    • 查看配置详细信息。

    • 监控执行指标。

    • 查看 CloudWatch 日志。

    • 手动测试函数。

DevOps 工程师

(可选)配置代理的手动执行。

代理配置为按每日时间表自动运行(世界标准时间午夜)。但是,您可以使用以下步骤手动触发:

  1. 在 Lambda 控制台中,选择名为 {project_name} 的函数。

  2. 在函数页面上,选择测试选项卡。

  3. 使用空的 JSON 对象 {} 创建新的测试事件。

  4. 要执行事件,选择测试

有关更多详细信息,请参阅 Lambda 文档中的在控制台中测试 Lambda 函数

DevOps 工程师

访问代理日志,以进行调试。

CrewAI 代理在 Lambda 环境中运行,并且拥有执行安全审计和在 Amazon S3 中存储报告的必要权限。输出是一份降价报告,可对您的 AWS 基础架构进行全面的安全分析。

为了帮助详细调试代理行为,请执行以下操作:

  1. 在中 AWS 管理控制台,导航到 CloudWatch 日志。

  2. 查找 Lambda 函数的日志组。

  3. 查找具有代理名称的日志条目(例如,基础设施映射专家探索性安全分析师)。

  4. 审查日志,深入了解每个代理的操作。

DevOps 工程师

查看代理执行的结果。

要查看代理执行的结果,请执行以下操作:

  1. 在中 AWS 管理控制台,导航至 Amazon S3。

  2. 打开名为 {project_name}-reports-{random_suffix}(如 Terraform 变量中所定义)的 Amazon S3 存储桶。

报告以基于时间戳的文件名存储,如下所示:security-audit-report-YYYY-MM-DD-HH-MM-SS.md)

DevOps 工程师

监控代理执行。

要通过 CloudWatch 日志监控代理的执行情况,请执行以下操作:

  1. 在中 AWS 管理控制台,导航到 CloudWatch。

  2. 转到日志组

  3. 选择名为 /aws/lambda/{project_name}-function 的日志组。

  4. 日志流中,选择最新的日志流,以查看详细的执行信息。

DevOps 工程师

自定义代理行为。

要修改代理或其任务,请执行以下操作:

  1. 更新本地存储库中的配置文件:

    • 以下文件定义了每个代理的角色、功能和设置:src/aws_infrastructure_security_audit_and_reporting/config/agents.yaml

    • 以下文件定义了代理的任务和工作流:

    src/aws_infrastructure_security_audit_and_reporting/config/tasks.yaml

  2. 要重新打包和更新 Lambda 函数,请使用以下命令:

cd terraform
terraform apply
DevOps 工程师
Task说明所需技能

删除创建的资源。

要删除此模式创建的所有基础设施,请运行以下命令:

terraform plan -destroy
警告

以下命令将永久删除由此模式创建的所有资源。在移除任何资源之前,该命令会提示进行确认。

仔细审查销毁计划。如果计划的删除可以接受,则请运行以下命令:

terraform destroy
DevOps 工程师

问题排查

问题解决方案

代理行为

有关此问题的信息,请参阅 Amazon Bedrock 文档中的测试代理行为并进行问题排查

Lambda 网络问题

有关这些问题的信息,请参阅 Lambda 文档中的 Lambda 中的联网问题疑难解答

IAM 权限

有关这些问题的信息,请参阅 IAM 文档中的排查 IAM 问题

相关资源

AWS 博客

AWS 文档

其他资源

附加信息

本部分包含有关实施方法、工具开发和扩缩注意事项的信息,其中这些注意事项与之前在自动化和扩缩中讨论的内容有关。

实施方法

请考虑使用以下方法来添加代理:

  1. 代理配置:

    • config/agents.yaml 文件中添加新的代理定义。

    • 为每个代理定义专门的背景故事、目标和工具。

    • 根据代理的专业,配置内存和分析功能。

  2. 任务编排:

    • 更新 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 的使用情况。

    • 根据审计范围,实施选择性代理激活。

  • 协作效率

    • 优化代理之间的信息共享。

    • 为复杂的环境实施分层代理结构。

  • 知识库增强

    • 为代理提供其所在领域的专业知识库。

    • 使用新的安全最佳实践定期更新代理知识。