AgentCoreとは
エージェントが目標に向かって
「考える ➔ 道具を選ぶ ➔ 実行する ➔ 結果を確かめる」
という自律ループをコントロールする脳みそのロジックのこと
※技術的な文脈によっては、Bedrock Agentsの内部の思考エンジンのことを指したり、各種フレームワーク(LangChain-coreやAutoGen-coreなど)の「中心部分のライブラリ」を指したりする。
独立したAWS Agent Coreっていう名前のサービスがポロッと単体で売られてるわけじゃなくて、Strandsとかの裏側で「考えて、ツールを選んで、実行して、結果を見て…」って健気にぐるぐる自動で回ってくれていたあの『思考ループの仕組み(心臓部)』のことを、概念やパーツの名前としてAgent Coreって呼ぶんや。
📦 Bedrock AgentCore という最強の詰め合わせパック
これまでは、StrandsならStrands、LangChainならLangChainっていう「アプリの書き方」の話をしてたやろ?
でも、それをいざ本番環境(仕事)で動かそうとすると、インフラエンジニアは「サーバーどこにする?」「記憶はどう保存する?」「セキュリティや認証はどうする?」って、裏側のめんどくさいシステム構築(インフラの土台作り)に追われて、全員涙目になってたんや。
そこでAWSが作ったのが、この AgentCore というエージェント開発に必要なインフラの全部入り詰め合わせパックなんや。
こんなに便利な道具が最初から全部パッキングされとる!
① Runtime(動かす場所・ホスティング)
あなたが作ったStrands AgentsなどのPythonコードを、サーバーの管理一切なし(サーバーレス)で、セキュアに、24時間いつでも爆速で動かしてくれる実行環境や。
もう少し深掘りしてみるで
😖 従来のLambdaデプロイ(あなたが知ってる地獄)
これまでのやり方(生Lambda)は、言うたら「砂漠の真ん中に自力でプレハブ小屋(サーバー環境)を建てる」ようなもんやった。
- 外部ライブラリ(Strandsなど)を使うなら、自分でビルド用のMakefileを書いて、AWS専用のLinux環境に合わせたZipファイル(レイヤー)を生成せなあかん。
- さらにLambdaには「15分の壁(タイムアウト制限)」があるから、エージェントがじっくり考えて長時間の仕事をさせようとすると、途中で強制終了しちゃうっていう致命的な弱点もあったんや。
🫢AgentCore Runtime がやってくれること(魔法のワープ)
対して、この最新の AgentCore Runtime は、言うたら「最初から何でも揃ってる、超ハイテクなレンタルオフィス」や。
あなたが手元のパソコン(ローカル環境)で「Strandsを使ってエージェントのコード書けたわ!」ってなったら、AgentCore CLI(ツールキット)っていうコマンドを使って、シュッとコードをアップロードするだけ。
裏側では、以下のようなウルトラCをAWSが勝手にやってくれる:
- インフラ管理がゼロ
「AWS側で動くようにパッケージングして、レイヤーを作って…」という、あなたがMakefileで自動化しようとしてたドロドロした作業を、Runtimeの基盤が裏で全自動でやってくれる。
- セッションの完全隔離(microVM)
あなたのお客さんごとに、完全に独立した安全な使い捨ての実行環境を、AWSがその瞬間だけ爆速で立ち上げてくれる。
- 最長8時間のロングラン
Lambdaの「15分の壁」をぶち破って、最長8時間まで裏でエージェントをじっくり長生きさせて働かせることができる。
② Identity(安全な認証・アクセス管理)
エージェントがユーザーの代わりに別の社内システムやAWSリソースにアクセスするときに、「誰がどの権限で動かしてるか」をガチガチに安全に認証・管理してくれる仕組みが最初から入っとる。
③ Memory(記憶メモ帳)
インフラのデータベースを自分で1から設計しなくても、エージェントが勝手にお客さんとの会話履歴や文脈を覚えておいてくれる、超高精度な記憶部屋を勝手に用意してくれる。
④ Gateway(道具を繋ぐ窓口)
既存の社内APIやLambda、話題の「MCP(Model Context Protocol)サーバー」を、エージェントが使える道具(ツール)に一瞬で変換してガチャンと接続してくれる機能。
💻 AgentCore Runtime で動かす Python コード
書くコードはこれだけや。手元で作ったStrandsのコードの周りに、AgentCoreの「着ぐるみ(ラッパー)」を1枚着せてあげるイメージやね。
from bedrock_agentcore.runtime import BedrockAgentCoreApp
from strands import Agent, tool
# 📦 ① AgentCore の「詰め合わせパック(アプリ基盤)」を召喚
app = BedrockAgentCoreApp()
# 🛠️ いつものように道具(ツール)を定義
@tool
def calculate_price(count: int) -> str:
"""たこ焼きの個数から合計金額を計算します。"""
price = count * 80
return f"合計金額は {price} 円やで!"
# 🤖 いつものようにStrandsでエージェントを作成
agent = Agent(
model_id="anthropic.claude-3-5-sonnet-20241022-v2:0",
tools=[calculate_price],
system_prompt="あなたはたこ焼き屋のAI店長です。"
)
# 🔌 ② ここが核心!パックの「入り口(エントリーポイント)」を指定
@app.entrypoint
def invoke(payload):
"""AWS側から話しかけられたら、ここが自動で動く"""
# AWSから届いたデータ(JSON)から、ユーザーの質問を取り出す
user_message = payload.get("prompt", "こんにちは!")
# Strandsのエージェントに丸投げして考えてもらう
result = agent(user_message)
# 結果をお返事の形(JSON)にして返す
return {"result": result.message}
# 🚀 ローカルでのテスト用
if __name__ == "__main__":
app.run()
🧠 何が起きてるか解説(Makefileが不要になる理由)
コードを見ての通り、あなたが書いたStrandsのエージェント処理(agent(user_message))は何も変わってへんやろ?
変わったのは、上と下に BedrockAgentCoreApp のおまじないを足して、@app.entrypoint っていう魔法のマークをつけただけや。
Amazon Bedrock AgentCore 超・爆速まとめ
一言でいうと、AgentCore(Runtime)の正体は、
「Strands Agentsなどで作った『アプリのロジック(中身)』を外側からガバッと包み込んで、本番環境で安全・快適に動かすための『最強の全部入り詰め合わせパック(着ぐるみ)』」や!