【ITニュース解説】AWS Agent built with Strand Agent framework and deployed to Bedrock Agentcore
2025年09月29日に「Dev.to」が公開したITニュース「AWS Agent built with Strand Agent framework and deployed to Bedrock Agentcore」について初心者にもわかりやすく解説しています。
ITニュース概要
Strand Agentフレームワークを使い、AWSの作業を自動化するAIエージェントを構築し、Bedrock Agentcoreへデプロイする方法を解説する。複数のAWSサービスに対応する専門エージェントを連携させ、会話履歴を記憶する機能も実装。構築手順やテスト方法、具体的な設定例を紹介する。
ITニュース解説
今日のITの世界では、AI、特に大規模言語モデル(LLM)の進化が目覚ましく、私たちの仕事のやり方を大きく変えつつある。この記事では、AWSのクラウド環境で、LLMを活用した「エージェント」と呼ばれるシステムをどのように構築し、運用するかについて解説する。システムエンジニアを目指す皆さんにとって、これは未来のシステム開発の一端を理解する良い機会となるだろう。
まず、ここで言う「エージェント」とは、人間からの指示を理解し、自律的に判断してタスクを実行するソフトウェアのことだ。この記事の著者は、Strand Agentというフレームワークを使ってエージェントを構築し、それをAWS Bedrock Agentcoreというサービスにデプロイしている。Strand Agentは、LLMの統合やツールの利用を容易にし、エージェントの作成を支援する。一方、AWS Bedrock Agentcoreは、構築されたエージェントをAWS上で効率的に実行、管理するための環境を提供する。
このシステムの中核をなすのは、大きく分けて二つの種類の「エージェント」だ。一つは、ユーザーからの問い合わせを受け付け、その内容に応じて最適な「専門エージェント」にタスクを振り分ける「オーケストレーターエージェント」と呼ばれるもの。これは、複数の専門エージェントを束ねる「監督役」のような役割を担う。もう一つは、特定のAWSサービスに特化した知識と操作能力を持つ「専門エージェント」たちだ。記事では、AWS CloudTrail、CloudWatch、Cost Explorer、DynamoDB、IAMなど、AWSの主要なサービスに対応する9種類の専門エージェントが作成されている。
システムを動かすためには、まずAWS Bedrock Agentcoreが様々なAWSリソースにアクセスするための「実行ロール」を設定する必要がある。これは、AWS Identity and Access Management (IAM) というサービスで定義されるセキュリティ設定で、エージェントがECR(コンテナイメージの保存場所)、CloudWatch Logs(ログの記録)、X-Ray(システム動作の追跡)、CloudWatch(監視データ)、そしてBedrock AgentcoreやBedrockそのものといったサービスにアクセスできるよう、具体的な権限をJSON形式で記述する。特に、Agentcoreのアクセス権限では、ワイルドカード(agent*)を使うことで、将来的に増えるであろう多くの子エージェントにも同じ権限を効率的に適用できるように工夫されている。これは、セキュリティを確保しつつ、管理の手間を減らすための重要なテクニックだ。さらに、各専門エージェントがAWSリソースに対して具体的な操作を行うための追加ポリシーも設定される。
オーケストレーターエージェントの「頭脳」には、AnthropicのClaude 3 Sonnetという高性能なLLMが使われている。このLLMに与えられるプロンプト、つまり指示文は非常に重要で、「あなたはオーケストレーターエージェントであり、AWSサービス間のサポートを調整するように設計されている」と明記され、どの種類の問い合わせをどの専門エージェントにルーティングすべきかの詳細なルールが示されている。例えば、「セキュリティ監査やAPI追跡ならAWS CloudTrail Assistantへ」といった具体的な指示だ。これにより、オーケストレーターエージェントは効率的にタスクを振り分けられる。
専門エージェントの具体的な実装例として、AWS Cost Assistantが挙げられている。このエージェントは、Strand AgentフレームワークのAgentクラスを使って定義され、AWS Labsが提供するMCP (Managed Control Plane) サーバーと呼ばれるツール群と連携する。MCPサーバーは、AWSリソースをコマンドラインから操作するための便利なツールで、これをStrand Agentの「ツール」として組み込むことで、エージェントはAWSのコストデータを取得したり分析したりする能力を持つ。コードの中では、uvxコマンドを使ってawslabs.cost-explorer-mcp-serverという特定のMCPサーバーを起動し、その機能を通じてAWSのコスト情報を引き出している。また、Strand Agentのthinkツールを使うことで、エージェントがより深く思考し、適切な判断を下せるように促している。これは、複雑な問題を解決する際に、エージェントが「考える時間」を持つようなイメージだ。
このシステムにおいて、エージェントがユーザーとの会話履歴を覚えて、パーソナライズされた応答を返す「記憶」の機能も非常に重要だ。これはAWS Bedrock Agentcoreが提供するメモリ機能と、Strand AgentフレームワークのOrchestratorMemoryHooksおよびMemoryManagerによって実現されている。OrchestratorMemoryHooksは、ユーザーコンテキストの取得、対話の保存、複数戦略のメモリ(ユーザー設定、意味的メモリ)、セッション管理を行う。MemoryManagerは、AgentCore Memoryリソースの管理、戦略設定、ユーザーごとのメモリ分離、イベントの自動削除(90日間)といった機能を提供する。これらの機能は、ユーザーの過去の問い合わせやエージェントの応答を保存し、その情報を基に次の対話をより自然で役立つものにする。例えば、以前の会話で設定したユーザーの好みや、過去に解決した問題のコンテキストを覚えておくことで、よりスムーズなコミュニケーションが可能になる。
エージェントのデプロイは、agentcore configureとagentcore launchという簡単なコマンドで行われる。これにより、構築したエージェントがBedrock Agentcoreの環境上で実行可能となる。著者はさらに、streamlitというPythonのウェブアプリケーションフレームワークを使って、このエージェントと対話できるシンプルなチャットアプリを作成し、エージェントの動作を視覚的に確認できるようにしている。これにより、エージェントに質問を投げかけ、その応答や、裏側でどのツールが使われたか、どれくらいのトークン(AIが処理する情報量)が消費されたかなどをリアルタイムで確認できる。エージェントコンソール上のサンドボックス環境でもテストが可能であり、実際の利用を想定した検証が行える。
最後に、記事では、DynamoDBテーブルの作成や、AWS Diagram Assistantを使った図の作成、さらにはチャット履歴に関する質問への応答といった、エージェントが実際に様々なタスクをこなしている例が示されている。これらのデモンストレーションは、オーケストレーターエージェントが適切に専門エージェントを呼び出し、メモリ機能を活用しながらユーザーの要望に応えていることを明確に示している。
このように、Strand AgentフレームワークとAWS Bedrock Agentcore、そして高性能なLLMを組み合わせることで、AWSの複雑な運用タスクを自然言語で指示し、自律的に実行できる強力なエージェントシステムを構築できることがわかる。これは、システム管理や開発の効率を大きく向上させる可能性を秘めている。システムエンジニアを目指す皆さんにとって、このようなエージェント技術は、今後のキャリアにおいて必須となる知識の一つと言えるだろう。