概要
Bedrock AgentCore Gatewayでは、インバウンド認証(Inbound Auth)にIAMまたはJWTを選択できます。AWS公式のハンズオンではJWT(Cognito)が使われているため、IAMの実装例は多くありません。
というわけで、この記事ではローカルのエージェントからAgentCore Gatewayへの接続をIAMで試してみます。
なお、Inbound Authを含むGatewayの概念は以下の記事でわかりやすく解説されているので、こちらを参考にいただければと思います。
前提・準備
環境
- macOS 14.5
- Python 3.11.9
- mcp 1.19.0
- strands-agents 1.13.0
AgentCore Gateway の作成
AgentCore Gateway のコンソールからGatewayを作成します。
- インバウンド認証設定は『IAM許可』を選択
- ターゲットには、AWS Knowledge MCP Server を設定
- MCPエンドポイントには
https://knowledge-mcp.global.api.awsを設定 - アウトバウンド認証は『No authorization』
- MCPエンドポイントには
- 以外の設定はデフォルト
ベースになるコード
リモートMCPとして AWS Knowledge MCP Server を利用するエージェントアプリケーションです。このリモートMCPを AgentCore Gateway 経由で利用するように修正します。
Strands Agents の公式ドキュメントを参考にしましたが、AWSの認証はログインセッションを利用するようにしています。
pip install mcp strands-agents
import boto3
from mcp.client.streamable_http import streamablehttp_client
from strands import Agent
from strands.models import BedrockModel
from strands.tools.mcp.mcp_client import MCPClient
# Knowledge MCP エンドポイント
KNOWLEDGE_MCP_ENDPOINT = "https://knowledge-mcp.global.api.aws"
# Boto3 セッション
session = boto3.Session(
region_name="ap-northeast-1",
profile_name="xxxx", # プロファイル名
)
bedrock_model = BedrockModel(
model_id="jp.anthropic.claude-sonnet-4-5-20250929-v1:0",
boto_session=session,
)
streamable_http_mcp_client = MCPClient(
lambda: streamablehttp_client(KNOWLEDGE_MCP_ENDPOINT)
)
# Create an agent with MCP tools
with streamable_http_mcp_client:
tools = streamable_http_mcp_client.list_tools_sync()
agent = Agent(
model=bedrock_model,
system_prompt="あなたは優秀なアシスタントです。必要に応じてツールを使ってください。",
tools=tools,
)
agent("AgentCore Gateway が提供されているリージョンを調べて")
このエージェントを実行した結果はこちら
AgentCore Gatewayの提供リージョンを調べます。まず、このサービスに関する情報を検索してみます。
Tool #1: aws___search_documentation
AgentCore Gatewayについて分かりました。これはAmazon Bedrock AgentCore Gatewayというサービスです。それでは、このサービスが利用可能なAWSリージョンを確認してみます。
Tool #2: aws___list_regions
それでは、主要なリージョンでAgentCore Gatewayの利用可能性を確認します。まず、ドキュメントでリージョン情報を確認してみます。
Tool #3: aws___read_documentation
このページにはリージョン情報がないようです。別のページを確認してみます。
Tool #4: aws___search_documentation
完璧です!リージョン情報が見つかりました。詳細を確認します。
Tool #5: aws___read_documentation
Tool #6: aws___read_documentation
完璧です!Amazon Bedrock AgentCore Gateway が提供されているリージョンの情報を取得できました。まとめます。
## Amazon Bedrock AgentCore Gateway が提供されているリージョン
Amazon Bedrock AgentCore Gateway は、以下の **9つのAWSリージョン** で利用可能です:
### 米国リージョン
1. **US East (N. Virginia)** - us-east-1
2. **US East (Ohio)** - us-east-2
3. **US West (Oregon)** - us-west-2
### ヨーロッパリージョン
4. **Europe (Frankfurt)** - eu-central-1
5. **Europe (Ireland)** - eu-west-1
### アジア太平洋リージョン
6. **Asia Pacific (Tokyo)** - ap-northeast-1
7. **Asia Pacific (Mumbai)** - ap-south-1
8. **Asia Pacific (Singapore)** - ap-southeast-1
9. **Asia Pacific (Sydney)** - ap-southeast-2
### エンドポイント形式
各リージョンのGatewayエンドポイントは以下の形式になります:
{gatewayId}.gateway.bedrock-agentcore.{region}.amazonaws.com
### 補足情報
- Amazon Bedrock AgentCore Gateway は、2025年9月16日まで無料プレビュー期間中です
- 2025年9月17日から課金が開始されます
- このサービスは現在プレビュー段階にあります
日本のお客様は **東京リージョン (ap-northeast-1)** でご利用いただけます。
※ Qiita のコードブロックが崩れるため、出力結果を一部加工しています。
AgentCore Gateway をIAMで試してみる
AgentCore GatewayをIAMで利用するには、AWSSignature Version 4 (SigV4) により署名されたリクエストを送る必要があります。
また、リモートMCPを Streamable HTTP で利用したい場合、MCP ライブラリが提供する streamablehttp_client を使うのが一般的です。 ただし、この streamablehttp_client をそのまま使うだけでは、SigV4に対応したリクエストを送ることができません。
そこで、awslabs で公開されている以下のリポジトリを利用します。このリポジトリに含まれている streamablehttp_client_with_sigv4 を使うことで、SigV4に対応した Streamable HTTP のリクエストが可能となります。
pip install run-mcp-servers-with-aws-lambda
import boto3
from botocore.credentials import Credentials
from mcp_lambda.client.streamable_http_sigv4 import streamablehttp_client_with_sigv4
from strands import Agent
from strands.models import BedrockModel
from strands.tools.mcp import MCPClient
# AgentCore Gateway エンドポイント(ゲートウェイリソース URL)
AGENTCORE_ENDPOINT = "https://xxxx.gateway.bedrock-agentcore.ap-northeast-1.amazonaws.com/mcp"
# Boto3 セッション
session = boto3.Session(
region_name="ap-northeast-1",
profile_name="xxxx", # プロファイル名
)
bedrock_model = BedrockModel(
model_id="jp.anthropic.claude-sonnet-4-5-20250929-v1:0",
boto_session=session,
)
# 認証情報をセッションから取得する関数
def get_credentials_sync():
creds = session.get_credentials()
return Credentials(
access_key=creds.access_key, secret_key=creds.secret_key, token=creds.token
)
# MCP クライアント(SigV4 認証付き)
streamable_http_mcp_client_with_sigv4 = MCPClient(
lambda: streamablehttp_client_with_sigv4(
url=AGENTCORE_ENDPOINT,
credentials=get_credentials_sync(),
service="bedrock-agentcore",
)
)
with streamable_http_mcp_client_with_sigv4:
agent = Agent(
model=bedrock_model,
system_prompt="あなたは優秀なアシスタントです。必要に応じてツールを使ってください。",
tools=streamable_http_mcp_client_with_sigv4.list_tools_sync(),
)
agent("AgentCore Gateway が提供されているリージョンを調べて")
AgentCore Gatewayが提供されているリージョンを調べます。まず、どのAWSリージョンが存在するかを確認し、その後いくつかの主要なリージョンでAgentCore Gatewayの利用可能性をチェックします。
Tool #1: aws-knowledge-mcp___aws___list_regions
Tool #2: aws-knowledge-mcp___aws___search_documentation
ドキュメントから、AgentCore GatewayはAmazon Bedrockのサービスの一部であることがわかりました。次に、主要なリージョンでBedrockのAgentCore関連のAPIの利用可能性を確認します。
Tool #3: aws-knowledge-mcp___aws___get_regional_availability
Tool #4: aws-knowledge-mcp___aws___get_regional_availability
Tool #5: aws-knowledge-mcp___aws___get_regional_availability
Tool #6: aws-knowledge-mcp___aws___get_regional_availability
Tool #7: aws-knowledge-mcp___aws___get_regional_availability
正確なサービス名を確認するため、ドキュメントをもう少し詳しく読んでみます。
Tool #8: aws-knowledge-mcp___aws___read_documentation
リージョンの情報を確認するため、ドキュメントをさらに調べます。
Tool #9: aws-knowledge-mcp___aws___search_documentation
素晴らしい情報が見つかりました!詳細を確認するために、リージョン情報のドキュメントを読みます。
Tool #10: aws-knowledge-mcp___aws___read_documentation
Tool #11: aws-knowledge-mcp___aws___read_documentation
完璧です!Amazon Bedrock AgentCore Gatewayが提供されているリージョンの情報を取得できました。
## Amazon Bedrock AgentCore Gateway が提供されているリージョン
Amazon Bedrock AgentCore Gateway は、以下の **9つのAWSリージョン** で利用可能です:
### 米国リージョン
- **US East (N. Virginia)** - us-east-1
- **US East (Ohio)** - us-east-2
- **US West (Oregon)** - us-west-2
### アジアパシフィックリージョン
- **Asia Pacific (Tokyo)** - ap-northeast-1
- **Asia Pacific (Mumbai)** - ap-south-1
- **Asia Pacific (Singapore)** - ap-southeast-1
- **Asia Pacific (Sydney)** - ap-southeast-2
### ヨーロッパリージョン
- **Europe (Ireland)** - eu-west-1
- **Europe (Frankfurt)** - eu-central-1
### エンドポイント形式
各リージョンでのGatewayエンドポイントは以下の形式になります:
{gatewayId}.gateway.bedrock-agentcore.{region}.amazonaws.com
例えば、us-east-1リージョンの場合:
{gatewayId}.gateway.bedrock-agentcore.us-east-1.amazonaws.com
### 補足
- AgentCore Gateway はプレビューサービスです
- すべてのエンドポイントはHTTPSプロトコルを使用します
- 各リージョンには、コントロールプレーンAPIとデータプレーンAPIの両方のエンドポイントが用意されています
※ Qiita のコードブロックが崩れるため、出力結果を一部加工しています。
無事、AgentCore GatewayをIAMで利用できました。


