Terraform を使用して CrewAI フレームワークを使用して Amazon Bedrock にエージェントシステムをデプロイする - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Terraform を使用して CrewAI フレームワークを使用して Amazon Bedrock にエージェントシステムをデプロイする

Vanitha Dontireddy、Amazon Web Services

概要

このパターンは、Amazon BedrockTerraform と統合された CrewAI フレームワークを使用して、スケーラブルなマルチエージェント AI システムを実装する方法を示しています。このソリューションにより、組織はInfrastructure as Code (IaC) を通じて高度な AI エージェントワークフローを作成、デプロイ、管理できます。このパターンでは、CrewAI マルチエージェントオーケストレーション機能が Amazon Bedrock 基盤モデルと Terraform インフラストラクチャオートメーションと組み合わされています。その結果、チームは人間による監視を最小限に抑えながら、複雑なタスクに取り組む本番環境対応の AI システムを構築できます。このパターンは、エンタープライズグレードのセキュリティ、スケーラビリティ、運用のベストプラクティスを実装しています。

前提条件と制限

前提条件

制約事項

  • エージェントとのやり取りは、モデルコンテキストウィンドウによって制限されます。

  • 大規模なデプロイでは、Terraform 状態管理に関する考慮事項がこのパターンに適用されます。

  • 一部の 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. ユーザーは コマンドを実行して AWS リソースterraform applyをデプロイします。

  3. Amazon Bedrock モデル設定には、CrewAI エージェントの設定に使用する基盤モデル (FM) の指定が含まれます。

  4. EventBridge ルールが確立され、定義されたスケジュールに従って Lambda 関数がトリガーされます。

  5. (スケジュールまたは手動で) トリガーされると、Lambda 関数は と Amazon Bedrock へのアクセス許可を持つ IAM ロールを初期化 AWS のサービス して引き受けます。

  6. CrewAI フレームワークは、YAML ファイルからエージェント設定をロードし、特殊な AI エージェント (AWS インフラストラクチャセキュリティ監査クルー) を作成します。Lambda 関数は、これらのエージェントを順番に実行して、 AWS リソースをスキャンし、セキュリティの脆弱性を分析し、包括的な監査レポートを生成します。

  7. CloudWatch Logs は、365 日間の保持期間とコンプライアンス要件のための AWS Key Management Service (AWS KMS) 暗号化を使用して、Lambda 関数から詳細な実行情報をキャプチャします。ログは、エージェントのアクティビティ、エラー追跡、パフォーマンスメトリクスを可視化し、セキュリティ監査プロセスの効果的なモニタリングとトラブルシューティングを可能にします。

  8. セキュリティ監査レポートが自動的に生成され、指定された Amazon S3 バケットに保存されます。自動セットアップは、運用上のオーバーヘッドを最小限に抑えながら、一貫したセキュリティモニタリングを維持するのに役立ちます。

最初のデプロイ後、ワークフローは、手動で介入することなく AWS 、インフラストラクチャの継続的なセキュリティ監査とレポートを提供します。

AI エージェントの概要

このパターンでは、複数の AI エージェントを作成し、それぞれに一意のロール、目標、ツールがあります。

  • セキュリティアナリストエージェントは、 AWS リソース情報を収集して分析します。

  • ペネトレーションテスターエージェントは、 AWS リソースの脆弱性を特定します。

  • コンプライアンスエキスパートエージェントは、コンプライアンス標準に照らして設定をチェックします。

  • レポートライターエージェントは、結果を包括的なレポートにコンパイルします。

これらのエージェントは、集合的なスキルを活用してセキュリティ監査を実行し、包括的なレポートを生成しながら、一連のタスクで共同作業を行います。(このconfig/agents.yamlファイルは、このクルーの各エージェントの機能と設定の概要を示しています)。

セキュリティ分析処理は、次のアクションで構成されます。

  1. セキュリティアナリストエージェントは、次のような AWS リソースに関して収集されたデータを調べます。

    • Amazon Elastic Compute Cloud (Amazon EC2) インスタンスとセキュリティグループ

    • Amazon S3 バケットと設定

    • IAM ロール、ポリシー、アクセス許可

    • Virtual Private Cloud (VPC) の設定とネットワーク設定

    • Amazon RDS データベースとセキュリティ設定

    • Lambda 関数と設定

    • 監査範囲内 AWS のサービス のその他

  2. ペネトレーションテスターエージェントは潜在的な脆弱性を特定します。

  3. エージェントは CrewAI フレームワークを通じてコラボレーションし、結果を共有します。

レポート生成は、次のアクションで構成されます。

  1. レポートライターエージェントは、他のすべてのエージェントの結果をコンパイルします。

  2. セキュリティの問題は、サービス、重要度、コンプライアンスへの影響別に整理されています。

  3. 特定された問題ごとに修復の推奨事項が生成されます。

  4. 包括的なセキュリティ監査レポートは、マークダウン形式で作成され、指定された Amazon S3 バケットにアップロードされます。履歴レポートは、コンプライアンス追跡とセキュリティ体制の改善のために保持されます。

ログ記録とモニタリングアクティビティには以下が含まれます。

  • CloudWatch Logs は、実行の詳細とエラーをキャプチャします。

  • Lambda 実行メトリクスはモニタリングのために記録されます。

注記

のコードaws-security-auditor-crewは、 AWS サンプルコレクションで利用可能な GitHub 3P-Agentic_frameworks リポジトリから取得されます。

可用性とスケール

使用可能なエージェントは、4 つのコアエージェント以上に拡張できます。追加の専門エージェントでスケーリングするには、次の新しいエージェントタイプを検討してください。

  • 脅威インテリジェンススペシャリストエージェントは、以下を実行できます。

    • 外部の脅威フィードをモニタリングし、内部検出結果と関連付けます

    • インフラストラクチャに関連する新たな脅威に関するコンテキストを提供します。

    • ワイルドでのアクティブな悪用に基づいて脆弱性を優先する

  • コンプライアンスフレームワークエージェントは、次のような特定の規制分野に集中できます。

    • Payment Card Industry Data Security Standard (PCI DSS) コンプライアンスエージェント

    • 1996 年医療保険の相互運用性と説明責任に関する法律 (HIPAA) コンプライアンスエージェント

    • System and Organization Controls 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 は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。

  • AWS SDK for Python (Boto3) は、Python アプリケーション、ライブラリ、またはスクリプトを と統合するのに役立つソフトウェア開発キットです AWS のサービス。

  • Amazon Simple Storage Service (Amazon S3) は、どのようなデータ量であっても、データを保存、保護、取得することを支援するクラウドベースのオブジェクトストレージサービスです。このパターンでは、エージェントアーティファクトと状態管理用のオブジェクトストレージを提供します。

その他のツール

  • CrewAI は、マルチエージェント AI システムを構築するためのオープンソースの Python ベースのフレームワークです。

  • Terraform」は、HashiCorpのinfrastructure as code (IaC) ツールで、クラウドとオンプレミスのリソースの作成と管理を支援します。

コードリポジトリ

このパターンのコードは、GitHub deploy-crewai-agents-terraform リポジトリで入手できます。

ベストプラクティス

  • Amazon DynamoDB ロックで Amazon S3 バックエンドを使用して、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.tfvars.example terraform ディレクトリの 例からterraform.tfvarsファイルを作成します。

  2. 環境変数を編集して、独自の情報を使用します。

DevOps エンジニア

インフラストラクチャを作成します。

インフラストラクチャを作成するには、次のコマンドを実行します。

cd terraform
terraform init
terraform plan

実行計画を注意深く確認してください。計画された変更が許容できる場合は、次のコマンドを実行します。

terraform apply --auto-approve
DevOps エンジニア
タスク説明必要なスキル

エージェントにアクセスします。

AWS インフラストラクチャセキュリティ監査およびレポートクルーのエージェントは、Lambda 関数としてデプロイされます。エージェントにアクセスするには、次の手順を実行します。

  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/lambda/ で AWS Lambda コンソールを開きます。

  2. Functions ページで、{project_name}\function という名前の関数を見つけて選択します (Terraform 変数で定義)。

  3. 関数のページから、次のアクションを実行できます。

    • 設定の詳細を表示します。

    • 実行メトリクスをモニタリングします。

    • CloudWatch ログを表示します。

    • 関数を手動でテストします。

DevOps エンジニア

(オプション) エージェントの手動実行を設定します。

エージェントは、毎日のスケジュール (UTC 午前 0 時) で自動的に実行されるように設定されています。ただし、次の手順を使用して手動でトリガーできます。

  1. Lambda コンソールで、 という名前の関数を選択します{project_name}

  2. 関数のページで、テストタブを選択します。

  3. 空の JSON オブジェクト を使用して新しいテストイベントを作成します{}

  4. イベントを実行するには、テストを選択します。

詳細については、Lambda ドキュメントの「コンソールでの Lambda 関数のテスト」を参照してください。

DevOps エンジニア

デバッグ用のエージェントログにアクセスします。

CrewAI エージェントは、セキュリティ監査を実行し、レポートを Amazon S3 に保存するために必要なアクセス許可を持つ Lambda 環境で実行されています。出力は、 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 Logs を使用してエージェントの実行をモニタリングするには、以下を実行します。

  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

    • 次のダイイルは、エージェントのタスクとワークフローを定義します。

    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 ファイルを更新して、新しいエージェント固有のタスクを含めます。

    • タスク間に依存関係を作成して、適切な情報フローを確保します。

    • 必要に応じて並列タスク実行を実装します。

技術的な実装

以下は、提案された脅威インテリジェンススペシャリストエージェントの 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 の使用状況をモニタリングします。

    • 監査範囲に基づいて選択的エージェントのアクティベーションを実装します。

  • コラボレーション効率

    • エージェント間の情報共有を最適化します。

    • 複雑な環境に階層型エージェント構造を実装します。

  • ナレッジベースの機能強化

    • エージェントにドメインの専門知識ベースを提供します。

    • 新しいセキュリティのベストプラクティスを使用して、エージェントの知識を定期的に更新します。