結論: AWS Bedrock AgentCoreは、エンタープライズAIエージェントの「実行基盤」を丸ごと提供するAWSのフルマネージドプラットフォームです。Runtime・Memory・Identity・Gateway・Browser・Code Interpreter・Observabilityの7コンポーネントを使い、LangGraph・CrewAI・Strands SDKなど任意のフレームワークで構築したエージェントを本番スケールで安全に運用できます。
この記事の要点:
- 要点1: Bedrock AgentCoreは2025年10月にGA(一般提供開始)。2026年3月にはPolicyがGA、5月にはSão Pauloリージョン追加と継続拡大中
- 要点2: Bedrock AgentsとAgentCoreは「設定ベースの完全マネージド型」vs「インフラ基盤の提供型」という明確な役割分担がある
- 要点3: Microsoft Copilot Studio・Google Vertex AI Agent Builderとの3社比較で、フレームワーク柔軟性はAWSが最強、M365統合はMicrosoft、データ分析はGoogleに軍配
対象読者: AWS環境にAIエージェントを本番導入したい開発者・DX推進担当者・CTOクラスの意思決定者
読了後にできること: IAMロール作成からStrands SDK/boto3による基本エージェント構築・デプロイまで、今日から着手できる
「AWSのAIエージェント基盤って、結局どれを使えばいいんだろう…?」
AWS re:InventやAWS Summitのセッションを見ていると、Bedrock Agents、AgentCore、Strands SDK、Q Developer Agentと次々と新しい名称が登場して混乱した方も多いのではないでしょうか。企業向けAI研修の現場でも、「Bedrockは触ったけどAgentCoreは別物ですか?」という質問を最近よく受けます。
正直に言うと、AWSのエージェント製品群はここ1年で急速に整理されてきており、2025年10月のAgentCore GAを境に「開発フレームワーク」と「実行基盤」の役割分担が明確になってきました。この区別さえ理解できれば、どのコンポーネントをどう組み合わせるかの判断が格段に楽になります。
この記事では、AWS Bedrock AgentCoreの全コンポーネントを技術的に解説し、boto3・Strands SDK両方の実装コードを公開します。さらにMicrosoft Copilot Studio・Google Vertex AI Agent Builderとの3社比較まで行いますので、自社のエージェント基盤選定の判断材料として活用してください。
AIエージェントの基本概念や導入ステップについては、AIエージェント導入完全ガイドで体系的にまとめています。
AWS Bedrock AgentCoreとは — Bedrock Agentsとの決定的な違い
2行で理解する位置づけ
まず最も重要な概念整理から始めます。
- Bedrock Agents: AWSが「オーケストレーション全体」を管理する完全マネージド型エージェントサービス。設定ベースで動かせる代わりに、AWS Bedrockホスト上のモデルしか使えない
- Bedrock AgentCore: 任意のフレームワーク・任意のモデル(外部含む)で構築したエージェントを「本番運用するためのインフラ基盤」。Runtime、Memory、Gateway…の7サービスをモジュラーに提供する
実は、Bedrock AgentsはAgentCoreの上に構築されています。AgentCoreが「エンジンルーム」、Bedrock Agentsが「コックピット(簡単操作UI)」と考えるとわかりやすいです。
AgentCoreが解決する本番運用の課題
LangGraphやCrewAIでプロトタイプを作ったことがある方なら、本番環境への持ち込みで以下の壁にぶつかった経験があるのではないでしょうか。
- セッション管理をどう実装するか(複数ユーザーの会話を分離したい)
- 長期記憶をどこに保存し、どう取得するか
- 外部APIへの認証情報をエージェントにどう安全に渡すか
- エージェントの実行ログをどう収集・可視化するか
- ウェブブラウザ操作やコード実行を安全なサンドボックスで行いたい
AgentCoreはこれらを「数ヶ月のカスタム実装なしに」解決するサービス群です。AWS公式ブログには「エンタープライズグレードのセッション管理、アイデンティティ制御、メモリシステム、オブザーバビリティを月単位の開発なしに提供する」と明記されています。
AgentCoreの歴史(2025〜2026)
| 時期 | イベント |
|---|---|
| 2025年7月16日 | Amazon Bedrock AgentCore プレビュー開始(AWS公式発表) |
| 2025年10月13日 | 一般提供(GA)開始。N.Virginia、Oregon、Sydney、Frankfurtの4リージョン |
| 2026年2月 | Browserにブラウザプロファイル機能追加 |
| 2026年3月3日 | AgentCore Policy がGA |
| 2026年3月31日 | AgentCore Evaluations がGA |
| 2026年4月9日 | AWS Agent Registry がプレビュー開始 |
| 2026年5月 | São Paulo(南米)リージョンに追加展開 |
主要コンポーネント詳解 — 7つのサービスと役割
1. Runtime — サーバーレス実行基盤
AgentCore Runtimeは、エージェントをサーバーレスでデプロイ・スケールするための実行環境です。コンテナイメージをECRにプッシュすれば、あとはAWSがスケーリング・セッション分離・コールドスタート最適化を管理します。
主な特徴:
- 高速コールドスタート(リアルタイムインタラクション向け)
- 非同期エージェント向けの拡張実行サポート
- セッション間の完全なアイソレーション
- CrewAI、LangGraph、LlamaIndex、Google ADK、OpenAI Agents SDK、Strands Agentsすべてに対応
- モデル非依存(Claude、GPT-4o、Gemini、Nova、Llama、Mistral…なんでも使える)
対応プロトコル: MCP(Model Context Protocol)、A2A(Agent-to-Agent)
2. Memory — 短期・長期記憶管理
AgentCore Memoryは、会話の文脈(短期記憶)とセッションをまたいだ記憶(長期記憶)を管理するサービスです。
- 短期記憶(Working Memory): マルチターン会話内の文脈保持。セッションIDで自動管理
- 長期記憶(Long-term Memory): セッション終了後も永続するユーザー固有の情報。ファクト・要約・ユーザー設定の3種類の戦略が使える
LangGraph、LangChain、Strands、LlamaIndexとネイティブ統合済み。
3. Gateway — APIをMCPツールに変換
既存のLambda関数・OpenAPI仕様・既存のMCPサーバーを、エージェントが呼び出せるMCPツールに数行のコードで変換します。Salesforce、Zoom、JIRA、Slackなどとのプリセット統合も提供。
4. Identity — エージェントのアイデンティティ管理
エージェントが外部サービスや内部AWSリソースにアクセスする際の認証・認可を管理。Amazon Cognito、Okta、Microsoft Azure Entra ID、Auth0など既存のIdPと統合でき、ユーザー移行や認証フローの再構築は不要。RuntimeやGateway経由で利用する場合は追加料金なし。
5. Browser — マネージドWebブラウザ
エージェントがウェブアプリを操作・フォーム入力・情報抽出するためのクラウドホストブラウザ。Playwright、BrowserUseとも連携。2026年2月にブラウザプロファイル、3月にChrome policiesとカスタムroot CA、4月にOS level interaction機能が追加されました。
6. Code Interpreter — 安全なコード実行サンドボックス
エージェントが生成したコードを隔離された環境で安全に実行する機能。Python、JavaScript、TypeScriptに対応。データ分析・グラフ生成・複雑な数値計算をエージェントが自律実行できるようになります。
7. Observability — エージェント実行の可視化
エージェントのワークフロー内の各ステップを追跡・デバッグ・監視するための統合ビュー。OpenTelemetry(OTEL)互換形式でテレメトリデータを出力。CloudWatchとネイティブ統合されており、既存の監視スタックへの組み込みも容易です。
追加コンポーネント(2026年新機能)
- Evaluations(2026年3月GA): エージェントの品質評価を自動化。タスク実行精度・エッジケース対応・出力信頼性を定量評価
- Policy(2026年3月GA): 自然言語またはCedar(AWSオープンソースポリシー言語)でエージェントの行動境界を定義。どのツールにアクセスできるか・どんな条件下でのみ動作するかを決定論的に制御
- Registry(2026年4月プレビュー): エージェント・MCPサーバー・ツール・スキルの組織横断カタログ。セマンティック+キーワードハイブリッド検索で発見性を確保
課金体系 — コンポーネント別の料金設計
AgentCoreの課金はすべて消費ベース(Consumption-based)で、アップフロントコストや最低利用料金なし。各コンポーネントを独立して使えます。
| コンポーネント | 課金単位 | 単価 |
|---|---|---|
| Runtime | vCPU-hour(アクティブ消費分のみ) | $0.0895/vCPU-hour |
| Runtime | GB-hour(ピーク消費分のみ) | $0.00945/GB-hour |
| Memory(短期) | 新規イベント | $0.25/1,000イベント |
| Memory(長期・組み込みストレージ) | 月次レコード保存 | $0.75/1,000レコード/月 |
| Memory(長期・セルフ管理) | 月次レコード保存 | $0.25/1,000レコード/月 |
| Memory(取得) | レコード取得 | $0.50/1,000レコード取得 |
| Gateway | API呼び出し(ListTools/InvokeTool/Ping) | $0.005/1,000呼び出し |
| Gateway(検索API) | Search API呼び出し | $0.025/1,000呼び出し |
| Gateway(ツールインデックス) | 月次インデックス | $0.02/100ツール/月 |
| Identity(スタンドアロン) | トークン/APIキーリクエスト | $0.010/1,000リクエスト |
| Browser | vCPU-hour / GB-hour | Runtimeと同額 |
| Code Interpreter | vCPU-hour / GB-hour | Runtimeと同額 |
| Observability | CloudWatch標準料金 | Span/ログ/メトリクス課金 |
コスト試算例(Runtime): 2vCPU・4GBメモリのエージェントが2分間実行、うちI/O待機60%(アクティブ=48秒)の場合:
- CPU: 48秒 × 2vCPU × ($0.0895/3600) = $0.0024
- メモリ: 120秒 × 4GB × ($0.00945/3600) = $0.0013
- 合計: 約$0.0037/セッション(I/O待機中のCPU課金なし)
注意点: 上記はAgentCore本体の料金。LLM API(Bedrockモデル推論)・CloudWatch・S3・Lambda等の利用料金は別途かかります。
環境構築 — IAMロール作成とBedrock model access設定
前提条件チェック
AgentCoreを使うために必要なセットアップを整理します。
- AWS CLIインストール済み(v2.x推奨)
- Python 3.11以上(Strands SDK推奨)
- Dockerインストール済み(RuntimeへのコンテナデプロイにECRを使う場合)
- 対象リージョン: us-east-1、us-west-2、ap-southeast-2、eu-central-1(2026年5月時点)
必要なIAMポリシーのセットアップ
# AgentCore Runtime用のIAM実行ロール作成
import boto3
import json
iam_client = boto3.client('iam', region_name='us-east-1')
# トラストポリシー: bedrock-agentcoreサービスがこのロールを引き受けられる
trust_policy = {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "bedrock-agentcore.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "YOUR_ACCOUNT_ID"
}
}
}
]
}
# ロール作成
role = iam_client.create_role(
RoleName='BedrockAgentCoreExecutionRole',
AssumeRolePolicyDocument=json.dumps(trust_policy),
Description='IAM role for Bedrock AgentCore Runtime'
)
# Bedrockモデル呼び出し権限をアタッチ
iam_client.attach_role_policy(
RoleName='BedrockAgentCoreExecutionRole',
PolicyArn='arn:aws:iam::aws:policy/AmazonBedrockAgentCoreMemoryBedrockModelInferenceExecutionRolePolicy'
)
print(f"Role ARN: {role['Role']['Arn']}")
Bedrock model accessの有効化
# マネジメントコンソールでの操作手順(AWS CLI版)
# 1. AWSコンソールにログイン → Amazon Bedrock → Model access
# 2. 使用するモデルにアクセスリクエストを送る(Claude 3.7 Sonnet推奨)
# CLI確認コマンド
aws bedrock list-foundation-models
--by-provider Anthropic
--region us-east-1
--query 'modelSummaries[*].{modelId:modelId,modelName:modelName,inferenceTypesSupported:inferenceTypesSupported}'
--output table
SDKのインストール
# Strands SDK + AgentCore SDK(Python)
pip install strands-agents bedrock-agentcore
# boto3(AWS SDK)
pip install boto3 --upgrade
# AgentCore CLIツール(オプション)
pip install bedrock-agentcore-starter-toolkit
基本エージェント作成 — Strands SDK vs boto3
方法A: Strands SDKによる実装(推奨)
Strands Agentsは、AWSがオープンソースで提供するエージェントフレームワークで、AgentCoreとの統合が最も深いです。
# app.py — Strands SDK + AgentCore Runtimeの基本パターン
from bedrock_agentcore.runtime import BedrockAgentCoreApp
from strands import Agent
from strands.models import BedrockModel
app = BedrockAgentCoreApp()
# Claudeモデルを使ったエージェント定義
agent = Agent(
model=BedrockModel(
model_id="anthropic.claude-3-7-sonnet-20250219-v1:0",
region_name="us-east-1"
),
system_prompt="""あなたは企業のDX推進を支援するビジネスアナリストです。
ユーザーの業務課題を明確にし、AI活用の具体的な提案をしてください。
不足している情報があれば、最初に質問してから作業を開始してください。"""
)
@app.entrypoint
def invoke(payload):
"""エージェントへのリクエストを処理"""
user_message = payload.get("prompt", "")
session_id = payload.get("sessionId", "")
result = agent(user_message)
return {
"result": str(result),
"sessionId": session_id
}
if __name__ == "__main__":
app.run()
方法B: boto3によるデプロイ制御
# deploy.py — boto3でRuntime作成・エージェントデプロイ
import boto3
import json
REGION = "us-east-1"
ACCOUNT_ID = "123456789012" # 実際のアカウントIDに変更
ROLE_ARN = f"arn:aws:iam::{ACCOUNT_ID}:role/BedrockAgentCoreExecutionRole"
ECR_IMAGE = f"{ACCOUNT_ID}.dkr.ecr.{REGION}.amazonaws.com/my-agent:latest"
# AgentCore Control Planeクライアント
control_client = boto3.client('bedrock-agentcore-control', region_name=REGION)
# Runtimeの作成
response = control_client.create_agent_runtime(
agentRuntimeName='business-analyst-agent',
description='企業DX推進支援エージェント',
agentRuntimeArtifact={
'containerConfiguration': {
'containerUri': ECR_IMAGE
}
},
networkConfiguration={
'networkMode': 'PUBLIC'
},
roleArn=ROLE_ARN
)
agent_runtime_arn = response['agentRuntimeArn']
print(f"Agent Runtime ARN: {agent_runtime_arn}")
# エージェントの呼び出し
data_client = boto3.client('bedrock-agentcore', region_name=REGION)
invoke_response = data_client.invoke_agent_runtime(
agentRuntimeArn=agent_runtime_arn,
runtimeSessionId='session-001-unique-identifier-minimum-33chars',
payload=json.dumps({
"prompt": "当社のカスタマーサポート業務にAIを導入する方法を教えてください"
}),
qualifier="DEFAULT"
)
print(f"Response: {invoke_response}")
Memory層 — Long-term / Working Memoryの実装
短期記憶(Working Memory)の設定
# メモリストアの作成と短期記憶の利用
import boto3
agentcore_client = boto3.client('bedrock-agentcore', region_name='us-east-1')
agentcore_control = boto3.client('bedrock-agentcore-control', region_name='us-east-1')
# メモリストアの作成
memory_response = agentcore_control.create_memory(
name='business-agent-memory',
description='ビジネスアシスタントエージェントのメモリストア',
encryptionKeyArn='arn:aws:kms:us-east-1:123456789012:key/your-kms-key-id',
# 長期記憶の戦略設定
memoryStrategies=[
{
'summaryMemoryStrategy': {
'name': 'conversation-summary',
'description': '会話の要約を長期記憶として保存'
}
},
{
'semanticMemoryStrategy': {
'name': 'user-facts',
'description': 'ユーザーに関する事実情報を意味的に保存'
}
}
]
)
memory_id = memory_response['memoryId']
print(f"Memory ID: {memory_id}")
# セッションへのメモリ登録(会話ターンの保存)
# セッションIDは最低33文字必要
SESSION_ID = "enterprise-session-user001-20260506-001"
agentcore_client.create_event(
memoryId=memory_id,
sessionId=SESSION_ID,
memoryStrategies=[{'memoryStrategyId': 'conversation-summary'}],
messages=[
{
'role': 'USER',
'content': [{'text': 'Claude Codeを社内導入したいのですが、どこから始めれば良いですか?'}]
},
{
'role': 'ASSISTANT',
'content': [{'text': 'まず利用方針とセキュリティガイドラインの策定から始めることをお勧めします。'}]
}
]
)
長期記憶の取得と活用
# 長期記憶の取得(次のセッションでの文脈利用)
import boto3
agentcore_client = boto3.client('bedrock-agentcore', region_name='us-east-1')
# ユーザーに関連する長期記憶を検索
memories = agentcore_client.retrieve_memory_records(
memoryId=memory_id,
namespace='user-001', # ユーザーごとのネームスペース
searchCriteria={
'searchQuery': 'Claude Code 社内導入',
'topK': 5
}
)
for record in memories.get('memoryRecords', []):
print(f"Memory: {record['content']}")
print(f"Timestamp: {record['createdAt']}")
print("---")
Tools統合 — Lambda / OpenAPI / MCPの接続
Gateway経由でのLambda関数登録
# Gateway設定: 既存LambdaをMCPツールとして公開
import boto3
gateway_client = boto3.client('bedrock-agentcore-control', region_name='us-east-1')
# GatewayエンドポイントをOpenAPI仕様で定義
gateway_response = gateway_client.create_gateway(
name='enterprise-tools-gateway',
description='社内APIをエージェント向けMCPツールとして公開',
roleArn=ROLE_ARN,
gatewayExecutionRoleArn=ROLE_ARN,
authorizerType='NONE', # IAM認証を使う場合は'IAM'
protocolConfiguration={
'type': 'MCP'
}
)
gateway_id = gateway_response['gatewayId']
# Lambda関数をツールとして登録
target_response = gateway_client.create_gateway_target(
gatewayId=gateway_id,
name='customer-data-tool',
description='顧客データベース検索ツール',
targetConfiguration={
'lambda': {
'lambdaArn': 'arn:aws:lambda:us-east-1:123456789012:function:CustomerDataSearch',
'toolSchema': {
'inlinePayload': [
{
'name': 'search_customer',
'description': '顧客情報をIDまたは会社名で検索する',
'inputSchema': {
'json': {
'type': 'object',
'properties': {
'query': {
'type': 'string',
'description': '検索クエリ(顧客ID または 会社名)'
}
},
'required': ['query']
}
}
}
]
}
}
}
)
print(f"Gateway Target ARN: {target_response['targetArn']}")
外部MCPサーバーへの接続
# 既存MCPサーバー(例: Notion MCP)をGateway経由でエージェントに接続
external_mcp_response = gateway_client.create_gateway_target(
gatewayId=gateway_id,
name='notion-mcp-connector',
description='Notion MCPサーバーへの接続',
targetConfiguration={
'mcpServer': {
'serverUrl': 'https://your-notion-mcp-server.example.com/mcp',
'serverAuthConfig': {
'apiKey': {
'secretArn': 'arn:aws:secretsmanager:us-east-1:123456789012:secret:notion-api-key'
}
}
}
}
)
Identity層 — IAM Role / Service Accountの連携
# Identity設定: エージェントが外部サービスにアクセスするためのOAuth設定
import boto3
agentcore_control = boto3.client('bedrock-agentcore-control', region_name='us-east-1')
# OAuth 2.0によるSalesforce連携の設定例
identity_response = agentcore_control.create_agent_runtime(
agentRuntimeName='crm-agent',
agentRuntimeArtifact={
'containerConfiguration': {
'containerUri': ECR_IMAGE
}
},
networkConfiguration={'networkMode': 'PUBLIC'},
roleArn=ROLE_ARN,
# Runtimeカスタムヘッダー経由でユーザーIDをメモリにナムスペース化
runtimeConfiguration={
'customRequestHeaders': {
'allowList': ['X-Amzn-Bedrock-AgentCore-Runtime-Custom-Actor-Id']
}
}
)
# IAMポリシー: AgentCoreが特定のSecretsManagerシークレットにアクセスできるよう設定
iam_policy_document = {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue"
],
"Resource": [
"arn:aws:secretsmanager:us-east-1:123456789012:secret:salesforce-oauth-*",
"arn:aws:secretsmanager:us-east-1:123456789012:secret:slack-api-key-*"
]
}
]
}
Browser ツール統合
# Browser: Strands SDK経由でウェブ情報収集エージェントを構築
from bedrock_agentcore.runtime import BedrockAgentCoreApp
from strands import Agent
from strands.tools import browser_use # AgentCore Browserと連携
app = BedrockAgentCoreApp()
# Browserツールを持つエージェント
agent = Agent(
tools=[browser_use],
system_prompt="""あなたはウェブリサーチ専門のエージェントです。
指定されたURLを訪問し、必要な情報を正確に抽出してください。
数字と固有名詞は必ず根拠(出典)を添えてください。"""
)
@app.entrypoint
def invoke(payload):
task = payload.get("task", "")
result = agent(task)
return {"result": str(result)}
if __name__ == "__main__":
app.run()
Browserの主なユースケース:
- 競合他社の料金ページの定期収集・比較
- 規制・法令ページの変更監視
- 社内WebシステムへのRPA的なデータ入力・取得
- マーケットインテリジェンスの自動収集
Code Interpreter統合
# Code Interpreter: データ分析エージェントの構築
from bedrock_agentcore.runtime import BedrockAgentCoreApp
from strands import Agent
from strands.tools import code_interpreter # AgentCore Code Interpreterと連携
app = BedrockAgentCoreApp()
# データ分析能力を持つエージェント
data_analyst = Agent(
tools=[code_interpreter],
system_prompt="""あなたはデータ分析専門のエージェントです。
CSVデータや数値データを受け取り、Pythonコードで分析・可視化を行います。
仮定した点は必ず"仮定"と明記してください。
数字と固有名詞は根拠(計算式)を添えてください。"""
)
@app.entrypoint
def invoke(payload):
data_request = payload.get("request", "")
data = payload.get("data", "")
full_prompt = f"""
以下のデータを分析してください:
{data}
リクエスト: {data_request}
"""
result = data_analyst(full_prompt)
return {"analysis": str(result)}
if __name__ == "__main__":
app.run()
Code Interpreterの活用例:
- 月次売上データの自動分析・グラフ生成
- 在庫データの異常値検出
- 財務モデルの計算・シミュレーション
- 統計的仮説検定の実行
Observability — CloudWatch / Bedrock監査ログの設定
# CloudWatchへのOpenTelemetryログ設定
import boto3
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.trace.export import BatchSpanProcessor
# TracerProviderの設定(OTEL → CloudWatch)
provider = TracerProvider()
otlp_exporter = OTLPSpanExporter(
endpoint="https://xray.us-east-1.amazonaws.com",
headers={
"x-aws-region": "us-east-1"
}
)
provider.add_span_processor(BatchSpanProcessor(otlp_exporter))
trace.set_tracer_provider(provider)
tracer = trace.get_tracer("bedrock-agentcore-agent")
# エージェント実行の手動トレーシング
with tracer.start_as_current_span("agent-invocation") as span:
span.set_attribute("session.id", SESSION_ID)
span.set_attribute("agent.name", "business-analyst")
span.set_attribute("user.query", "AIエージェント導入について")
# エージェント実行
result = agent("AIエージェント導入について教えてください")
span.set_attribute("response.length", len(str(result)))
span.set_attribute("execution.success", True)
CloudWatchダッシュボードで確認できる項目:
- エージェント実行ステップの可視化(どのツールを呼び、どんな結果を得たか)
- レイテンシ分析(どのステップで時間がかかっているか)
- エラー率・失敗ステップの特定
- メモリ取得の頻度・コスト分析
Bedrock監査ログの有効化
# S3へのBedrock監査ログ設定
bedrock_client = boto3.client('bedrock', region_name='us-east-1')
bedrock_client.put_model_invocation_logging_configuration(
loggingConfig={
's3Config': {
'bucketName': 'your-audit-logs-bucket',
'keyPrefix': 'bedrock-agentcore-audit/'
},
'cloudWatchConfig': {
'logGroupName': '/aws/bedrock/agentcore/audit',
'roleArn': 'arn:aws:iam::123456789012:role/BedrockLoggingRole'
},
'textDataDeliveryEnabled': True,
'imageDataDeliveryEnabled': False
}
)
Microsoft Copilot Studio / Google Vertex AI Agent Builder との3社比較
「どのクラウドのエージェント基盤を使うべきか」という判断は、既存のインフラ環境・組織の技術スタック・用途によって大きく変わります。3社の特徴を整理します。
Copilot StudioについてはCopilot Studio完全ガイド2026、Vertex AI Agent BuilderについてはGoogle Vertex AI Agent Builder完全ガイド2026もあわせてご参照ください。
| 評価軸 | AWS Bedrock AgentCore | Microsoft Copilot Studio | Google Vertex AI Agent Builder |
|---|---|---|---|
| 対象ユーザー | エンジニア・開発者中心 | ビジネスユーザー〜開発者 | エンジニア・データサイエンティスト |
| フレームワーク柔軟性 | ★★★★★ 任意のOSSフレームワーク | ★★☆☆☆ Power Platform依存 | ★★★★☆ ADK中心(外部FW可) |
| M365/Office統合 | ★★☆☆☆ 要カスタム連携 | ★★★★★ ネイティブ統合 | ★★☆☆☆ 要カスタム連携 |
| データ分析・BigQuery | ★★★☆☆ S3/Redshift連携 | ★★☆☆☆ Fabric経由 | ★★★★★ BigQueryネイティブ |
| モデル選択肢 | ★★★★★ Bedrock外含む全モデル | ★★★★☆ GPT-4o/Phi優先 | ★★★★☆ Gemini中心 |
| セキュリティ・コンプライアンス | ★★★★★ IAM/KMS完全統合 | ★★★★★ Entra/Purview統合 | ★★★★☆ IAM/VPC Service Controls |
| ローコード環境 | ★★☆☆☆ コード必須 | ★★★★★ GUI完結 | ★★★☆☆ ADKはコード必須 |
| コスト透明性 | ★★★★★ コンポーネント別明細 | ★★★☆☆ ライセンス費込み | ★★★★☆ 使用量ベース |
| MCP対応 | ★★★★★ Gateway経由 | ★★★☆☆ コネクター経由 | ★★★★☆ ADK統合 |
| 2026年の注目点 | Policy/Evaluations GA | Supply Chain Copilot追加 | ADK Q2リリース |
選択指針
- AWS Bedrock AgentCoreが最適なケース: 既存インフラがAWS中心、任意フレームワークで複雑なエージェントを本番運用したい、コンポーネント単位での細かいコスト管理が必要
- Microsoft Copilot Studioが最適なケース: Microsoft 365をすでに全社で使っている、非エンジニアがエージェントを作りたい、Teams/SharePoint/Outlookとの深い統合が必要
- Google Vertex AI Agent Builderが最適なケース: BigQueryやGoogle Workspaceが中心、データ分析エージェントを本格的に動かしたい、クラウドネイティブなGCP環境
【要注意】失敗パターン4選 — 導入でつまずきやすいポイント
失敗1: Bedrock AgentsとAgentCoreを混同してアーキテクチャ設計をミスする
❌ よくある間違い: 「AgentCoreはBedrock Agentsの新バージョンだ」と思って、既存のBedrock Agentsをそのまま「AgentCoreに移行」しようとする
⭕ 正しい理解: AgentCoreは「インフラ基盤レイヤー」であり、Bedrock Agentsと競合するものではない。Bedrock AgentsをそのままにしてAgentCoreのMemory・ObservabilityだけをAddOnする使い方も有効
なぜ重要か: 誤解したまま設計を進めると、既存のBedrock Agentsの設定を全部作り直す工数が発生します。企業向け研修の現場でも、この混乱が最も多かったです。
失敗2: セッションIDを短くしてMemoryが機能しない
❌ よくある間違い: `sessionId: “user-001″` のように短いIDを使う
⭕ 正しいアプローチ: セッションIDは最低33文字以上必要。`session-user001-YYYYMMDD-HHMMSS-randomstr` のようなフォーマットで生成する
なぜ重要か: 短いセッションIDだとMemoryサービスがリクエストを拒否し、会話履歴が保存されません。エラーメッセージが不明瞭なため原因特定に時間がかかります。
失敗3: IAMポリシーの権限設定が過剰または不足
❌ よくある間違い: とりあえずAdministratorAccessをつけてプロトタイプを作り、本番でもそのまま使う。または逆に権限を絞りすぎてPermission deniedが多発する
⭕ 正しいアプローチ: 最小権限原則を守る。RuntimeロールはBedrockモデル呼び出し・MemoryストアへのアクセスのみをAllow。Gatewayで呼ぶLambdaへの権限は別ロールで管理
参考コード: AWSが提供するマネージドポリシー `AmazonBedrockAgentCoreMemoryBedrockModelInferenceExecutionRolePolicy` を起点に、必要な権限だけを追加する形が安全です
失敗4: Observabilityを後付けにしてトラブルシューティングが困難になる
❌ よくある間違い: プロトタイプ段階ではObservabilityを設定せず、本番でエラーが発生してから慌てて調査する
⭕ 正しいアプローチ: 開発段階からCloudWatchログとOTELトレーシングを設定しておく。AgentCoreのObservabilityはエージェントワークフローの各ステップを自動キャプチャするため、設定コストは低い
なぜ重要か: エージェントは非決定論的に動作するため、通常のアプリのデバッグ手法では原因特定が困難です。ステップ実行の可視化なしで本番運用するのは、航空機をレーダーなしで飛ばすようなものです。
まとめ: 今日から始める3つのアクション
- 今日やること: AWSコンソールで
bedrock-agentcore-starter-toolkitをインストールし、Runtime Quickstartを実行してみる。所要時間は30分程度で最小限のエージェントが動く状態になります - 今週中: 自社の既存Lambda関数・社内APIをGateway経由でMCPツールとして公開する構成を設計する。既存のBedrock Agentsがある場合は、Memoryだけを先にAgentCoreに移行してみる
- 今月中: Observabilityを本番相当環境に設定し、CloudWatchダッシュボードでエージェントの実行ログを可視化した状態にする。PolicyとEvaluationsを使って、エージェントの行動境界の定義と品質測定の仕組みを整備する
参考・出典
- Introducing Amazon Bedrock AgentCore — AWS News Blog(参照日: 2026-05-06)
- What is Amazon Bedrock AgentCore — AWS公式ドキュメント(参照日: 2026-05-06)
- Amazon Bedrock AgentCore Pricing — AWS公式(参照日: 2026-05-06)
- bedrock-agentcore-sdk-python — GitHub / AWS(参照日: 2026-05-06)
- Strands Agents SDK — strandsagents.com(参照日: 2026-05-06)
- Amazon Bedrock AgentCore Policy Reaches General Availability — AWS Insider(参照日: 2026-05-06)
著者: 佐藤傑(さとう・すぐる)
株式会社Uravation代表取締役。早稲田大学法学部在学中に生成AIの可能性に魅了され、X(旧Twitter)で活用法を発信(@SuguruKun_ai、フォロワー約10万人)。100社以上の企業向けAI研修・導入支援を展開。著書『AIエージェント仕事術』(SBクリエイティブ)。SoftBank IT連載7回執筆(NewsPicks最大1,125ピックス)。
ご質問・ご相談は お問い合わせフォーム からお気軽にどうぞ。








