KINTO Tech Blog
General

AWS Bedrock AgentCoreをマネジメントコンソール経由でデプロイしてみた話

Cover Image for AWS Bedrock AgentCoreをマネジメントコンソール経由でデプロイしてみた話

初めに

こんにちは!
KINTO テクノロジーズ、AI ファーストグループの nicepear と AlexQ です!
AI ファーストグループは、生成 AI の活用推進、ユースケース開発、技術調査、PoC、教育研修など幅広く活動している横串組織です。

今回我々は、AWS Bedrock AgentCore のエージェントを AWS のマネジメントコンソール経由でデプロイしてみたので、その経験を共有できればと思います。

AWS Bedrock AgentCore とは

AWS Bedrock AgentCore は、企業が AI エージェントを本格的に開発し、安全かつ大規模に運用するために AWS が提供する新しい基盤サービスです。

公式によりますと主な要素は以下です:

AgentCore Runtime – セッション分離を備え、サンドボックス化された低レイテンシーのサーバーレス環境を提供し、人気のオープンソースフレームワーク、ツール、モデルを含むあらゆるエージェントフレームワークをサポートし、マルチモーダルワークロードと長時間実行エージェントを処理します。

AgentCore Memory – セッションと長期メモリを管理し、エージェントが過去のインタラクションから学習するのをサポートしつつ、モデルに関連コンテキストを提供します。

AgentCore Observability – メタデータのタグ付け、カスタムスコアリング、軌跡の検査、トラブルシューティング/デバッグフィルターを使用して、エージェント実行のステップバイステップのビジュアライゼーションを提供します。

AgentCore Identity – AI エージェントが、ユーザーに代わって、または事前に認可されたユーザーの同意を得てエージェント自身によって、AWS サービス、および GitHub、Salesforce、Slack などのサードパーティーツールやサービスに安全にアクセスできるようにします。

AgentCore Gateway – 既存の API と AWS Lambda 関数をエージェント対応ツールに変換し、MCP などのプロトコルやランタイム検出にわたる統合アクセスを提供します。

AgentCore Browser – エージェントのウェブオートメーションワークフローをスケールするためのマネージドウェブブラウザインスタンスを提供します。

AgentCore Code Interpreter – エージェントが生成したコードを実行するための独立した環境を提供します。

AWS AgentCore Runtime にエージェントをデプロイする方法

AWS AgentCore でのAIエージェントのデプロイメントについて、公式では以下の bedrock-agentcore-starter-toolkit というライブラリを使用するアプローチが紹介されています:

https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-getting-started-toolkit.html

また、bedrock-agentcore-starter-toolkit を使わない方法として、boto3 API を使う方法も公式で取り上げられています。

https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/getting-started-custom.html

今回は、公式ドキュメントに記載されていないマネジメントコンソールでの手動デプロイメントを試してみたので、その経験と注意点をご紹介したいと思います。

マネジメントコンソールでのデプロイ手順

大きな手順は以下です:

  1. エージェントのソースコードを用意する
  2. Docker ファイルを作成する
  3. マネジメントコンソールで ECR リポジトリを作成する
  4. Docker で ARM64 image を作成し ECR リポジトリにデプロイする
  5. AgentCore のマネジメントコンソールでエージェント新規作成する

エージェントのソースコードを用意する

今回は公式の Strand Agents を使用してエージェントを構築しました。
また、デプロイ手順をテストするのが目的なため、比較的シンプルな構成にしております。

agentcore.py

import os
from strands import Agent, tool
from strands_tools import calculator
from strands.models.litellm import LiteLLMModel
from bedrock_agentcore.runtime import BedrockAgentCoreApp

app = BedrockAgentCoreApp()
os.environ["OPENAI_API_KEY"] = "YOUR_API_KEY"

@tool
def get_tenki():
   """ 天気を調べるためのツール """
   return "晴れです。"

model = "gpt-4.1"
model = LiteLLMModel(
   model_id=model
)

agent = Agent(
   model=model,
   tools=[calculator, get_tenki],
   system_prompt="あなたは賢いエージェントです。ユーザーの指示に応じて、数字の計算を行い、あるいは天気を調べてあげてください。"
)

@app.entrypoint
def revoke_agent(payload):
    user_input = payload.get("prompt")
    response = agent(user_input)
    print(response.message['content'][0]['text'])
    return response.message['content'][0]['text']

if __name__ == "__main__":
   app.run()

なお、ディレクトリ構造は以下のようにしております。

AWS-AGENTCORE/
├── agentcore.py                
├── Dockerfile 
├── requirements.txt      

Docker ファイルを作成する

以下のように Docker ファイルを用意しました。

FROM python:3.12-slim

WORKDIR /app

COPY requirements.txt /app

# Install dependencies
RUN pip install --no-cache-dir -r requirements.txt

# Copy agent file
COPY agentcore.py /app

ENTRYPOINT ["python", "/app/agentcore.py"]

マネジメントコンソールで ECR リポジトリを作成する

リポジトリ作成は通常の手順と特に変わりません。

まずはAWS マネジメントコンソールにログインし、ECR にアクセスします。
そして右上の「リポジトリ作成」をクリックします。

リポジトリ名を入力し右下の「作成」をクリックします。

作成が完了したら、リポジトリ一覧で確認できます。

Docker で ARM64 image を作成し ECR リポジトリにデプロイする

基本 ECR リポジトリで表示されるプッシュコマンド順で進めていきます。
プッシュコマンドはここで見つかります:

まずは AWS CLI で、ECR にログインします:

aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin account-id.dkr.ecr.us-west-2.amazonaws.com

次に Docker イメージを構築します。ここで、プッシュコマンドの書いた通りに構築するとあとでAgentCoreエージェントを作成する際にエラーになりました。
どうやら原因は、ARM64のDockerコンテナを用意する必要があるところみたいですね。

# エラーを起こしたコマンド
docker build -t agentcore/techblog .

公式でもARM64を使うと書いてありましたね。

Build the image locally for testing:

docker buildx build --platform linux/arm64 -t my-agent:arm64 --load .

なので、改めて以下のコマンドでイメージを構築しました。

docker build --platform linux/arm64 -t agentcore/techblog .

構築が完了したら、イメージにタグを付けます。

docker tag agentcore/techblog:latest account-id.dkr.ecr.us-east-1.amazonaws.com/agentcore/techblog:latest

最後に、以下のコマンドを実行して、先ほど作成した ECR リポジトリにこのイメージをプッシュします。

docker push account-id.dkr.ecr.us-east-1.amazonaws.com/agentcore/techblog:latest

AgentCore のマネジメントコンソールでエージェント新規作成する

最後に、Bedrock AgentCore のマネジメントコンソールにアクセスします。

Agent Runtime に入っていきます。

右上の「Host Agent」をクリックします。

必要な情報を記入していきます。

  • Name は「agentcore_techblog」にしました。(※ -(ハイフン)も使えると書いてありますが実際使うとエラーになりました。ここにバグがあるかと思います。)
  • Docker image は先ほどプッシュしたやつを選びます。
  • IAM ロールは、既存のものがあればそれを使えます。なければここで新規作成できるので、今回は新規作成でいきます。

ここでまたエラーになりました。

どうやら、ここで新規作成した IAM ロールの権限が正しく設定されていなかったようです。
IAM で確認しましょう。

先ほど作成した ECR リポジトリが「../agentcore/techblog」に対して、自動で作成された IAM ロールのアクセスできるリソースは「../techblog」になっていますね...
これもバグではないかと。

手動で「../agentcore/techblog」に直しましょう。

これで、AgentCore Runtime を無事作成できました。

AgentCore Runtime のエージェントと会話してみる

デプロイしたエージェントと会話してみましょう。

公式でもサンプルコードを提供しているので、早速それを使ってみます。
質問内容に関して、今回構築したエージェントはツールを使って天気を調べることができるとなっているので今日の天気について聞いてみましょう。

input_text = "今日の天気は?"

response = client.invoke_agent_runtime(
    agentRuntimeArn="YOUR_AGENT_RUNTIME_ARN",
    qualifier="<Endpoint Name>",
    payload=input_text
)

うまく返事が返ってきました。

おわりに

今回は、AWS Bedrock AgentCore を使って AI エージェントをマネジメントコンソール経由でデプロイする手順をご紹介しました。

公式ドキュメントでは主に bedrock-agentcore-starter-toolkit や boto3 API を使用したデプロイ方法が紹介されていますが、マネジメントコンソールを使った手動デプロイも可能であることを確認できました。ただし、いくつかの注意点がありました:

  • Docker イメージは必ず ARM64 アーキテクチャで構築する必要がある
  • エージェント名にハイフン(-)を使用するとエラーが発生する可能性がある
  • IAM ロールの自動作成時に ECR リポジトリのリソースパスが正しく設定されない場合がある

これらの点に注意すれば、マネジメントコンソールを使ったデプロイも十分可能です。特に、GUI での操作に慣れている方や、小規模な PoC での利用には便利な選択肢となるでしょう。

AWS Bedrock AgentCore は、企業での AI エージェント運用を考える上で非常に待ちかねたサービスです。今後も様々な活用パターンを検証し、知見を共有していきたいと思います。

最後まで読んでいただき、ありがとうございました!

Facebook

関連記事 | Related Posts

We are hiring!

生成AIエンジニア/AIファーストG/東京・名古屋・大阪・福岡

AIファーストGについて生成AIの活用を通じて、KINTO及びKINTOテクノロジーズへ事業貢献することをミッションに2024年1月に新設されたプロジェクトチームです。生成AI技術は生まれて日が浅く、その技術を業務活用する仕事には定説がありません。

【フロントエンドエンジニア(コンテンツ開発)】新車サブスク開発G/東京・大阪・福岡

新車サブスク開発グループについてTOYOTAのクルマのサブスクリプションサービスである『 KINTO ONE 』のWebサイトの開発、運用をしています。​業務内容トヨタグループの金融、モビリティサービスの内製開発組織である同社にて、自社サービスである、クルマのサブスクリプションサービス『KINTO ONE』のWebサイトコンテンツの開発・運用業務を担っていただきます。

イベント情報