Blog

Bedrock AgentCoreを一般公開された直後に使ってみた感想

こんにちは。25年新入社員の高垣です。

私は、新人研修の一環として10月に開発合宿に参加しました。開発合宿については以下のブログをご覧ください。

その時に、2025/10/13(米国時間)に一般公開されたAmazon Bedrock AgentCoreを使って開発しました。このブログでは、その感想や実装について述べようと思います。

Amazon Bedrock AgentCoreとは

Amazon Bedrock AgentCore(以下AgentCore)とは、AIエージェントの構築からデプロイ・運用までできる基盤です。具体的には以下の7つのサービスがあります。

  • Runtime: サーバレスの実行環境
  • Identity: エージェントに対する認証情報(アウトバウンド・インバウンド両方)を管理するもの
  • Memory: エージェントが何を記憶するかを制御する
  • Code Interpreter: 分離されたサンドボックス環境内でコードを安全に実行する
  • Browser: クラウドベースのブラウザ実行環境
  • Gateway: APIやLambda関数などの既存のサービスをエージェント互換のツールへ簡単に変換する
  • Observability: エージェントのモニタリング

どのように使用したのか

今回は実行環境としてRuntimeのみ使用しています。アプリケーション全体の構成は次の図のとおりです。Orchestratorエージェントはユーザからの入力を受け取り、Create_taskエージェントは入力に基づいたタスクを生成しています。詳細は以下のブログをご覧ください。

エージェントの中身について

2つのエージェントは役割が違いますが、中身はほとんど同じです。

両者共に、Bedrock AgentCore Runtimeフレームワークを使用してエージェントの振る舞いを定義しています。

例:Orchestratorエージェントの場合

@app.entrypointというデコレータでこの関数をAgentCore Runtimeのエントリーポイントとして登録しています。

Orchestratorエージェントの場合は、promptを読み取り、そこから適切なエージェントを決定して、エージェントに処理を投げています。

AIエージェントのフレームワークについては、最初に簡単な処理を作って動作を確認してからStrands AgentsかLangGraphを使おうと思っていました。ただ、時間がなかったので、今回はそれらは使用できませんでした(はじめからどちらかを使っておけばよかったと思っています…)。

デプロイについて

AWSのチュートリアルではコマンドを使ってデプロイしています。

https://aws.amazon.com/jp/blogs/startup/5min-ai-agent-hosting/

ですが、今回はPythonのSDKを使ってデプロイしました(Claude Codeに作ってもらいました)。

例:Orchestratorエージェントをデプロイするコード

苦労したこと

情報が少ない

AgentCoreは2025年10月13日(米国時間)にリリースされましたが、その前にプレビューとして一部のリージョンで2025年7月16日に公開されていました。しかしながら、公開されてから3ヶ月弱しか期間がなく、AgentCoreに関する記事が十分にありませんでした。

そんな中でも、参考にしたサイトがいくつかあるので共有します。

https://blog.msysh.me/posts/2025/08/agentcore-runtime-stream-response-via-lambda.html#lambda-のコード-1—agentcore-からの応答をそのまま返す場合

https://aws.amazon.com/jp/blogs/machine-learning/build-multi-agent-site-reliability-engineering-assistants-with-amazon-bedrock-agentcore/

Amazon Bedrock Agentsとの違いを理解する必要がある

AWSが提供しているAIエージェント系のサービスでAmazon Bedrock Agents(以下Bedrock Agents)というものがあります。

https://aws.amazon.com/jp/bedrock/agents/

こちらは、Amazon Bedrockの一部でLLMのモデルを指定するだけでAIエージェントを作成することができます。ただし、文字列のレスポンスを返したり、lambdaなどの関数を実行したりすることしかできないので、自由度は低めです。一方で、AgentCoreは実質Pythonコードを動かしているため、jsonを返したり、複雑な処理を実行することができます。この違いを理解しないと、開発途中で大きな手戻りが発生してしまう可能性があります。

今回の場合だと、初めはBedrock Agentsで開発していましたが、後から決まったレスポンスを返す必要があることがわかりました。いくらプロンプトを修正してもlambdaを実行してくれなかったり、lambdaへの入力が違ったりしたので、途中からAgentCoreを用いて開発しました。

参考程度に、Bedrock AgentsとAgentCoreの比較表を載せます。

Bedrock AgentsAgentCore
役割AIエージェントAIエージェントを実行する基盤
開発方法AWSマネジメントコンソールPythonコード(フレームワーク)
料金Bedrockの料金体系AgentCoreの料金体系
デプロイ不要SDKかAgentcore CLI
Bedrock AgentsとAgentCoreの比較

AIエージェントを組み込んだプロダクトを作る際の前提知識が不足していた(わからなかった)

今回初めてAIエージェントを組み込んだプロダクトを作りましたが、前提知識が不足していたと思っています。理由としては、開発時に詰まった際に、「これがわからないからここを調べよう」というよりも、「ここがわからないけど、これはそもそもなんなんだ」と思うことが多くあったからです。前提知識がなく、時間があまりない中で調べながら開発したため、十分に開発することはできませんでした。

この経験から、前提知識として以下のようなものを知っておくことをおすすめします。

  • AIエージェントを組み込んだプロダクトに対するブログや記事があるか
    • 先駆者の知識や経験は非常に参考になると思います
  • LangGraphや Strands Agentsなどのフレームワークについて
    • フレームワークの名前だけ知っていても十分だと思います
  • インフラについて
    • AgentCore以外にもVertex AI Agent BuilderやAzure AI Foundry Agent Serviceなどの選択肢があります
  • AIエージェントのデザインパターンについて

感想

AIエージェントを使ったサービスを作りたい際は、Bedrock Agentsに比べてAgentCoreの方が柔軟に開発できるので、AgentCoreを使った方が良いと思います。ただし、Bedrock Agentsの方が比較的簡単に作れるので、初めにBedrock Agentsでプロトタイプを作ってから、AgentCoreで本番開発をするという流れでも良いと思います。

また、AgentCoreはあくまでも基盤なので、フレームワーク等でAIを呼ぶ処理を書くようにしましょう(1敗)。

最後に、AgentCoreを使った開発は楽しかったです。AIエージェントの可能性を感じることができましたし、情報があまりない中で調べながら開発することはとてもワクワクしました。

ニフティでは、
さまざまなプロダクトへ挑戦する
エンジニアを絶賛募集中です!
ご興味のある方は以下の採用サイトより
お気軽にご連絡ください!

ニフティに興味をお持ちの方は
キャリア登録をぜひお願いいたします!

connpassでニフティグループに
参加いただくと
イベントの
お知らせが届きます!