
「Amazon Bedrock AgentCoreを使ってみよう!〜各種機能のポイントを解説〜」というタイトルでDevelopersIO 2025 Osakaに登壇しました! #devio2025
こんにちは、コンサルティング部の神野です!
2025年9月3日(水)に開催されたDevelopersIO 2025 Osakaに「Amazon Bedrock AgentCoreを使ってみよう! 〜各種機能のポイントを解説〜」というタイトルで登壇しました!
今回の発表では、2025年7月にパブリックプレビューとしてリリースされたAmazon Bedrock AgentCoreの魅力的な機能について、実際に触ってみた経験を踏まえてご紹介しました。
ありがたいことに結構な人数の方が聞いてくださって緊張しつつもAgentCoreの魅力を少しでも伝えられたら何よりだと思っています!
登壇資料
熱量が故に勢い余って、20分の登壇に対してスライドを81枚も作ってしまいました。
発表内容のポイント
Amazon Bedrock AgentCoreとは
Amazon Bedrock AgentCoreは、AIエージェントを展開・運用するために最適なマネージドサービスです。
多種多様なマネージド機能が存在しており、下記がその機能の種類です
- Runtime
- ホスティング機能
- Identity
- 認証機能
- Gateway
- 外部処理のTool化機能
- Memory
- 記憶機能
- Built in tools
- Code Interpreter:コード実行環境
- Browser:ブラウザ実行環境
機能大盛りですね・・・!!これらの機能をどのように連携して使うのかというとざっくりと下記のように連携可能です。
ここから1つずつのサービスを確認していきます。
Runtime
RuntimeはAIエージェントをホスティングするためのマネージドサービスとなります。
ホスティング環境ですので、エージェントフレームワーク・LLMは下記のように自由に選択可能です。
ベンダーロックインされないのは嬉しいポイントですよね。
デプロイ
agentcore configure
コマンドを実行することでIAMやECRの設定などをどうするか聞かれ、自動作成も可能です。簡単で良いですね。
agentcore configure
コマンドを実行後は、agentcore launch
でデプロイできます。簡単!
簡単な一方でどういったプロセスでデプロイされるのかも見てみます。
configure
コマンドで作成したファイルを使ってコンテナイメージをビルドして、ECRにプッシュして、AgentCore RuntimeはそのイメージをPullする形となります。
呼び出しもシンプルで、agentcore invoke
で作成したエージェントを呼び出せます。
呼び出すと結果は下記のように返却されます。response
にAIエージェントのメッセージが記載されていますね!
agentcore invoke '{"prompt": "Hello"}'
Payload:
{
"prompt": "Hello"
}
Invoking BedrockAgentCore agent 'agent' via cloud endpoint
Session ID: c4dbea7b-7c51-471c-b631-330f991d5893
Response:
{
"ResponseMetadata": {
"RequestId": "c796b751-caf4-4d44-a450-dbde138546dd",
"HTTPStatusCode": 200,
"HTTPHeaders": {
"date": "Fri, 05 Sep 2025 22:47:24 GMT",
"content-type": "application/json",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"x-amzn-requestid": "c796b751-caf4-4d44-a450-dbde138546dd",
"baggage":
"Self=1-68bb6874-5e56d29a3edd9d1103a57630,session.id=c4dbea7b-7c51-471c-b631-330f991d5893",
"x-amzn-bedrock-agentcore-runtime-session-id": "c4dbea7b-7c51-471c-b631-330f991d5893",
"x-amzn-trace-id":
"Root=1-68bb6874-56784cc51d5370ab108fd780;Self=1-68bb6874-5e56d29a3edd9d1103a57630"
},
"RetryAttempts": 0
},
"runtimeSessionId": "c4dbea7b-7c51-471c-b631-330f991d5893",
"traceId":
"Root=1-68bb6874-56784cc51d5370ab108fd780;Self=1-68bb6874-5e56d29a3edd9d1103a57630",
"baggage":
"Self=1-68bb6874-5e56d29a3edd9d1103a57630,session.id=c4dbea7b-7c51-471c-b631-330f991d5893",
"contentType": "application/json",
"statusCode": 200,
"response": [
"b'{\"role\": \"assistant\", \"content\": [{\"text\": \"Hi there! How are you doing today?
Is there anything I can help you with?\"}]}'"
]
}
ブログ
実際に試されたブログもありますのでこちらもご参照ください!
Identity
AIエージェントの認証機能を実現するマネージドサービスです。Inbound AuthとOutbound Authの2つ種類が存在します。
Inbound AuthはAIエージェント自体に対する認証機能です。CognitoなどのIdPと連携して認証を実現可能です。
Outbound AuthはAIエージェントが外部サービスを呼び出すための認証機能です。APIキーやOAuth認証情報をマネージドに管理して、自動で取得可能になります。
例えばAPI Keyの場合でしたら下記のようなフローで取得可能ですし、取得ロジックもデコレータを付与するだけで取得できるので良きですね。
@requires_api_key(
provider_name="azure-openai-key"
)
async def need_api_key(*, api_key: str):
ブログ
詳細は下記ブログにもまとめているのでこちらもご参照ください!
Memory
MemoryはAIエージェントに「記憶」を持たせるためのマネージドサービスとなります。Short-term MemoryとLong-term Memoryの2種類の記憶が存在します。
Short-term Memoryはセッション中の会話履歴を保持する仕組みです。会話履歴をマネージドなサービスで保持できるのは嬉しいですよね。記憶保持や取得ロジックもそれほど難しくなく、実装可能です。
データ構造はユーザー毎にactor_id
、セッション毎にsession_id
といったビルトインの属性で管理することが可能で難しいことを考える必要がありません。ChatGPTやClaudeなどの会話履歴タブがイメージしやすいかと思います。
一方でLong-term MemoryはShort-term Memoryから自動的に重要な情報を抽出・統合する機能です。
抽出されたデータはベクトルとして保存され、セマンティック検索で関連性の高い記憶を抽出可能にしています。
Short-term MemoryからLong-term Memoryへの設定はどのように行うのか気になりますが、
Strategyといった設定を行い、抽出可能にします。ビルトインで3つStrategyがございます。用途に分けてどういった抽出を選択するのかを考える感じですね。
ブログ
詳細は下記ブログにもまとめているのでこちらもご参照ください!
Gateway
GatewayはAPI、Lambda関数、各種サービスをMCP(Model Context Protocol)互換のツールに変換して、AIエージェントから簡単に呼び出せるようにしてくれるサービスです。
AIエージェントがAPIやLambda関数をToolとして扱いたいなどのケースで便利そうですね。
今回はLambda関数のTool化について確認していきます。
GatewayがLambda関数をMCPプロトコル対応ツールとして、エージェントから呼び出し可能するための準備を行います。具体的にはGatewayにLambda関数を呼び出せる権限を付与したり、Tool SchemaでLambda関数とToolのマッピングを登録する形となります。
# ツールスキーマの定義
tool_schemas = [
{
"name": "get_order_tool",
"description": "注文情報を取得します",
"inputSchema": {
"type": "object",
"properties": {
"orderId": {
"type": "string",
"description": "注文ID"
}
},
"required": ["orderId"]
}
},
{
"name": "update_order_tool",
"description": "注文情報を更新します",
"inputSchema": {
"type": "object",
"properties": {
"orderId": {
"type": "string",
"description": "注文ID"
}
},
"required": ["orderId"]
}
}
]
# ターゲット設定
target_config = {
"mcp": {
"lambda": {
"lambdaArn": lambda_arn,
"toolSchema": {
"inlinePayload": tool_schemas
}
}
}
}
# 認証情報プロバイダー(Lambda呼び出しにはGatewayのIAMロールを使用)
credential_config = [
{
"credentialProviderType": "GATEWAY_IAM_ROLE"
}
]
こういった準備を踏まえてLambda関数をToolとして呼び出すと下記のように使用できます。
エージェントがTool化したLambdaの取得結果を使ってユーザーに返却するようなことも可能です。
ブログ
詳細は下記ブログにもまとめているのでこちらもご参照ください!
Observability
ObservabilityはAIエージェントの各種メトリクス、トレース、ログを可視化することが可能なマネージドサービスです。
事前に行う作業があります。エージェントの実行フローを可視化できるトランザクション検索機能があり、アカウントごとに1回だけ有効化すれば使えるようになります。
後はaws-opentelemetry-distro
が依存関係に含まれている必要があります。ただAgentCoreのstarter toolkitを使ってデプロイする場合は自動的にDockerfileに含まれて有効化されます。嬉しいポイントですね。
統合ダッシュボード
CloudWatchでGenAI Observabilityという統合ダッシュボードが提供されていて、エージェントの挙動を一目で確認できます。
セッション数、エラー率、トークン使用量などが可視化されていて、パフォーマンスの監視や問題の早期発見に役立ちそうです。
タイムライン上でAIエージェントの動きを確認できる点は良いなと思いました。どのツールをいつ使ったか、どこがボトルネックになっているかが視覚的に分かるのはデバッグに非常に便利だと思いました。
トレース、スパンやセッションなどの言葉が出てきましたが、関係性は下記のような形となります。
ブログ
詳細は下記ブログにもまとめているのでこちらもご参照ください!
Built-in Tools
Built-in ToolsはCode InterpreterとBrowserという2つの便利な機能を提供しています。
どちらもマネージドで提供されているため、セキュリティや環境構築を気にせず使えるのは良い点ですね。
Code Interpreter
Code Interpreterは生成AIが作成したコードを外部の安全な環境で実行するための機能です。
完全に隔離されたサンドボックス環境でコード実行されるため、エージェント本体の環境に影響を与えることなく、安全にコードを実行できます。Python、JavaScript、TypeScriptに対応していて、pandas、numpy、matplotlibなどのデータサイエンス系ライブラリも利用可能です。
ブログ
詳細は下記ブログにもまとめているのでこちらもご参照ください!
Browser
Browserは生成AIがブラウザを操作するための実行環境を提供するサービスです。
PlaywrightやBrowser-useなどを活用して、実際のWebブラウザを操作できます。情報収集や画面操作の自動化などに活用できそうですね。
ただし、検索エンジンを使うとCAPTCHAに引っかかる可能性があるという注意点もあります。公式ドキュメントでは、一般的な検索にはブラウザ以外のMCPツール(Tavilyなど)の利用が推奨されていました。
ブログ
詳細は下記ブログにもまとめているのでこちらもご参照ください!
まとめ
AgentCoreはAIエージェント開発に必要な機能が揃ったマネージドサービスです。必要な機能を組み合わせてAIエージェントを構築してみましょう!!
おわりに
以上が「Amazon Bedrock AgentCoreを使ってみよう! 〜各種機能のポイントを解説〜」の登壇ブログでした!
プレビュー期間中は無料で使えるということもあり、ぜひ皆さんにも触っていただきたいサービスです。私も今後さらに深く触っていき、実践的な使い方やTipsをブログで共有していければと思っています!
ぜひ少しでも興味を持ってもらって触っていただけると嬉しいです!ガンガン便利なAIエージェントを作っていきましょうー!!
最後までご覧いただきありがとうございました!