本サイトでは、文章の一部の生成系AIを活用しています。また、一部の記事にはアフィリエイトリンクを設定しています。
はじめに
AWS Bedrockでは、ClaudeだけでなくOpenAIのGPTモデルも利用できます。 本記事では、BedrockのClaude・GPTモデルを呼び出すときに知っておきたい2つのエンドポイントの違い、必要なIAM権限、そしてPythonのサンプルコードを紹介します。
1. Bedrockの2つのエンドポイント
Bedrockには2つのエンドポイントがあります。
- 通常のBedrock:
bedrock-runtime - Bedrock Mantle:
bedrock-mantle
Bedrock Mantleとは
Amazon Bedrock Mantleは、OpenAIやAnthropic互換のAPIを利用して最新モデルをスムーズに実行できるよう最適化された、Amazon Bedrockの分散推論エンジンおよび専用コンソール体験です。
従来のBedrockとの最大の違いは、AWS固有の仕様から解放され、OpenAIやAnthropicのコードをそのまま持ち込めるようになった点です。 従来はAWS独自の仕様に合わせるため、boto3などを使って複雑なレスポンスのパース処理(JSONの解析など)を書く必要がありました。
- OpenAI/Anthropic互換APIの利用: 既存のOpenAI SDKやAnthropic SDKのコードから、ベースURLとAPIキーを書き換えるだけで、そのままBedrock上のモデルを呼び出せる
モデルID指定の違い
Mantleでは、global.openai.gpt-6-luna の global. 部分を外し、openai.gpt-6-luna のようにモデルIDを指定する必要があります。
この点が通常のBedrockと異なります。
2. IAMに付与すべき権限
ユーザーグループを作成し、対象のユーザーグループにBedrockのAPIを実行する権限を付与します。 必要な権限は、以下の組み込みポリシーです。
| ポリシー | 用途 |
|---|---|
AmazonBedrockLimitedAccess |
通常のBedrockを採用する場合に必要。Bedrockへの限定的なアクセス権で、一般的なAPI呼び出し(bedrock:InvokeModel)やモデル一覧取得などが許可されますが、利用可能なモデルや機能は制限される場合があります |
AmazonBedrockMantleInferenceAccess |
Mantleを使用する場合に必要 |
AmazonBedrockMarketplaceAccess |
AWS Marketplace経由で提供されるモデルのサブスクリプション関連の権限。GPTなどMarketplaceモデルを使う場合、初回に必要 |
3. 設定手順
ユーザーグループにポリシーを付与する
ユーザーグループを作成し、アプリが使用する上記の組み込みポリシーを付与します。

ユーザーを作成しアクセスキーを発行する
ユーザーグループ内にユーザーを作成し、作成したユーザーのアクセスキーを作成します。

発行されたアクセスキーIDとシークレットアクセスキーをコピーし、環境変数AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY に設定します。
アクセスキーは漏えいすると不正利用されるため、ソースコードへの直書きやGitへのコミットは避けてください。
4. サンプルコード
GPTモデルをBedrock-Mantleで使用する
Bedrockの bedrock-mantle エンドポイントはOpenAI互換のため、OpenAI SDKをそのまま使えます。
認証は次の2通りです。
A. Bedrock APIキーを使う場合(最小構成)
OpenAI SDKをインストールします。
pip install -U openai
認証用の環境変数を設定します。
export OPENAI_BASE_URL="https://bedrock-mantle.us-east-2.api.aws/openai/v1"
export OPENAI_API_KEY="<BEDROCK_API_KEY>"
export BEDROCK_OPENAI_MODEL_ID="openai.gpt-5.5"
BedrockのGPT-5.5モデルを呼び出すPythonのサンプルコードです。
import os
from openai import OpenAI
client = OpenAI(
base_url=os.environ["OPENAI_BASE_URL"],
api_key=os.environ["OPENAI_API_KEY"],
)
response = client.responses.create(
model=os.environ["BEDROCK_OPENAI_MODEL_ID"],
input=[
{
"role": "developer",
"content": "You are a software engineer with excellent AWS cloud knowledge. Be concise and practical.",
},
{
"role": "user",
"content": "Design a distributed architecture on AWS in Python that should support 100k requests per second across multiple geographic regions.",
},
],
reasoning={"effort": "medium"},
text={"verbosity": "low"},
)
print(response.output_text)
ClaudeモデルをBedrock-runtimeで使用する
Anthropic SDKのBedrock対応版をインストールします。
pip install anthropic[bedrock]
認証はキーをコードに明示せず、AWSの標準認証情報チェーンに任せます。
環境変数(AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_SESSION_TOKEN)、AWS_PROFILE、IAMロールなどが使えます。
MODEL_ID の global.anthropic.claude-sonnet-5 はBedrockの推論プロファイルIDです。
非ストリーミング
import asyncio
from anthropic import AsyncAnthropicBedrock
REGION = "us-east-2"
MODEL_ID = "global.anthropic.claude-sonnet-5" # Bedrock のモデルID(推論プロファイル)
async def main() -> None:
client = AsyncAnthropicBedrock(aws_region=REGION)
response = await client.beta.messages.create(
model=MODEL_ID,
max_tokens=1000,
system="あなたは親切なアシスタントです。",
messages=[
{"role": "user", "content": [{"type": "text", "text": "こんにちは"}]},
],
)
print(response.content[0].text)
print(response.usage) # input_tokens / output_tokens など
asyncio.run(main())
ストリーミング
stream=True を渡し、返ってきたイベントを async for で処理します。
stream = await client.beta.messages.create(
model=MODEL_ID,
max_tokens=1000,
messages=[{"role": "user", "content": [{"type": "text", "text": "こんにちは"}]}],
stream=True,
)
async for event in stream:
if event.type == "content_block_delta" and event.delta.type == "text_delta":
print(event.delta.text, end="", flush=True)
まとめ
- Bedrockには通常の
bedrock-runtimeと、OpenAI/Anthropic互換のbedrock-mantleの2つのエンドポイントがある - Mantleでは既存のOpenAI SDK・Anthropic SDKのコードを、ベースURLと認証情報の変更だけで流用できる
- MantleのモデルIDは
global.を外して指定する - IAMには、利用するエンドポイントに応じて
AmazonBedrockLimitedAccess/AmazonBedrockMantleInferenceAccessを、GPTなどMarketplaceモデルの初回利用時はAmazonBedrockMarketplaceAccessを付与する