Amazon BedrockのOpenAI互換API:ベースURL・認証・モデル・コード(2026年)
はい、Amazon BedrockにはOpenAI互換APIがあります。OpenAI SDKの接続先を https://bedrock-runtime.{region}.amazonaws.com/openai/v1 に設定し、BedrockのAPIキー(またはAWS SigV4)で認証して、openai.gpt-oss-120b-1:0 のようなBedrockのモデルIDを指定するだけです。 この方法でChat Completions APIとResponses APIの両方を利用できます。AWSは新規アプリケーションには bedrock-runtime エンドポイントを推奨しており、bedrock-mantle は互換用の選択肢として残しています。注意点として、bedrock-runtime は GET /models を実装していません。本記事の内容はすべて Bedrock公式のChat Completionsドキュメント に基づき、2026年10月20日に確認したものです。
このガイドでは、2つのエンドポイント、2種類のAPIキー、モデルID、curl・Python・Nodeのコード、Guardrails、料金、遭遇しやすいエラー、そしてマルチプロバイダーゲートウェイよりBedrockが向いているケースを解説します。
クイックリファレンス
| 項目 | 値(2026年10月20日時点) |
|---|---|
| 推奨ベースURL | https://bedrock-runtime.{region}.amazonaws.com/openai/v1 |
| 互換用ベースURL | https://bedrock-mantle.{region}.api.aws/v1(一部のモデルは /openai/v1) |
| 対応するOpenAI API | Chat Completions、Responses(モデルによる)、およびAnthropic Messages API |
| 認証 | BedrockのAPIキーを Authorization: Bearer … で送信、またはAWS SigV4 |
| モデルIDの例 | openai.gpt-oss-120b-1:0、openai.gpt-oss-20b-1:0、global.openai.gpt-5.6-sol |
/models でのモデル一覧取得 |
bedrock-mantle のみ。bedrock-runtime では ListFoundationModels を使用 |
| リージョン | キーとエンドポイントはリージョン単位 |
出典:Chat Completions API、推論エンドポイント、クイックスタート。
bedrock-runtimeとbedrock-mantle:どちらのエンドポイントを使うべきか
AWSによると、両エンドポイントは「同じMantle推論エンジンを使用」しています。名前が示すのはエンドポイントの窓口の違いで、エンジン自体は同じです。違いは機能面にあります。
bedrock-runtime(推奨) |
bedrock-mantle(互換用) |
|
|---|---|---|
| ベースURL | bedrock-runtime.{region}.amazonaws.com/openai/v1 |
bedrock-mantle.{region}.api.aws/v1 |
| API | InvokeModel、Converse、Chat Completions、Responses、Messages | Chat Completions、Responses、Messages |
GET /models |
未実装(404 UnknownOperationException) |
対応 |
| Guardrails、インテリジェントプロンプトルーティング、クロスリージョン推論 | 対応 | モデルカードを確認 |
| サーバーサイドツール(Web検索など)、バックグラウンド推論、Projects、Workspaces | 非対応 | 対応 |
| クォータ | このエンドポイント用のモデル別クォータ | 別枠のモデル別クォータ |
AWSの目安: まずは bedrock-runtime を使い、必要なモデルや機能が bedrock-mantle にしかない場合にのみ切り替えます。bedrock-mantle ではパスのプレフィックスがモデルによって異なります。プレフィックスを間違えると "model … isn't supported on this route" というエラーになるので、モデルカードのProgrammatic Access表を確認してください。
認証:BedrockのAPIキーとSigV4
BedrockのAPIキーを使うと、OpenAI SDKはAWS認証情報でリクエストに署名する代わりに、Bearerトークンで認証できます(APIキーのドキュメント、2026年10月20日)。
| キーの種類 | 有効期間 | 権限の元 | AWSの推奨 |
|---|---|---|---|
| 短期キー | 最大12時間(またはセッションの長さ) | キーを生成したIAMプリンシパルの権限 | 本番環境 |
| 長期キー | 設定した有効期限まで | ポリシーを付与した専用IAMユーザー | 検証用のみ |
実務上のポイント:
- 短期キーはコード内で生成します。Pythonなら
pip install aws-bedrock-token-generator、Nodeならnpm install @aws/bedrock-token-generatorを使い、リクエストのたびにプロバイダーを呼び出します。トークンが有効な間はキャッシュ済みのトークンが返されます。 - 長期キーは作成したリージョンでしか使えません。別リージョンへの呼び出しは
Credential should be scoped to a valid regionで失敗します。 - キーの利用範囲はIAMアクション
bedrock:CallWithBearerTokenとbedrock-mantle:CallWithBearerTokenで制限できます。 - API呼び出しはCloudTrailに記録されますが、キー自体は記録されません。
- boto3で
AWS_BEARER_TOKEN_BEDROCK変数を使うには boto3 1.39.0以降 が必要です(クイックスタート)。
コード:OpenAI SDKでBedrockを呼び出す
curl(APIキー)
export OPENAI_API_KEY="<bedrock-api-key>"
curl -X POST "https://bedrock-runtime.us-east-1.amazonaws.com/openai/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{"model": "openai.gpt-oss-120b-1:0",
"messages": [{"role": "user", "content": "Hello from Bedrock"}]}'
curl(SigV4、APIキーなし)
curl -X POST "https://bedrock-runtime.us-east-1.amazonaws.com/openai/v1/chat/completions" \
-H "Content-Type: application/json" \
--aws-sigv4 "aws:amz:us-east-1:bedrock" \
--user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \
-d '{"model": "openai.gpt-oss-120b-1:0", "messages": [{"role": "user", "content": "Hello"}]}'
Python(短期キーを自動更新)
from aws_bedrock_token_generator import provide_token # pip install aws-bedrock-token-generator openai
from openai import OpenAI
REGION = "us-east-1"
def bedrock_client() -> OpenAI:
# provide_token() returns a cached token or mints a fresh short-term key (<= 12h)
return OpenAI(base_url=f"https://bedrock-runtime.{REGION}.amazonaws.com/openai/v1",
api_key=provide_token())
r = bedrock_client().chat.completions.create(
model="openai.gpt-oss-120b-1:0",
messages=[{"role": "user", "content": "Explain Bedrock API keys in one sentence."}],
)
print(r.choices[0].message.content, r.usage)
Node.js
import OpenAI from "openai";
import { getTokenProvider } from "@aws/bedrock-token-generator";
const provideToken = getTokenProvider();
const client = new OpenAI({
baseURL: "https://bedrock-runtime.us-east-1.amazonaws.com/openai/v1",
apiKey: await provideToken(),
});
const r = await client.chat.completions.create({
model: "openai.gpt-oss-20b-1:0",
messages: [{ role: "user", content: "Name two Bedrock endpoints." }],
});
console.log(r.choices[0].message.content);
モデル一覧の取得
bedrock-runtime では client.models.list() が404を返します。aws bedrock list-foundation-models --region us-east-1 を実行するか、SDKの接続先を bedrock-mantle にしてモデル一覧を取得します。
curl -s "https://bedrock-mantle.us-east-1.api.aws/v1/models" -H "Authorization: Bearer $OPENAI_API_KEY"
OpenAI形式のリクエストにBedrock Guardrailを追加する
Guardrailsは追加ヘッダーで指定します。ボディのオプション項目で入力のタグ付けを有効にできます。
r = bedrock_client().chat.completions.create(
model="openai.gpt-oss-20b-1:0",
messages=[{"role": "user", "content": "What is the weather like today?"}],
extra_headers={
"X-Amzn-Bedrock-GuardrailIdentifier": "GR12345",
"X-Amzn-Bedrock-GuardrailVersion": "DRAFT",
"X-Amzn-Bedrock-Trace": "ENABLED",
},
extra_body={"amazon-bedrock-guardrailConfig": {"tagSuffix": "xyz"}},
)
ヘッダー名は 公式のguardrailサンプル に基づいています。
OpenAI互換APIで使えるモデルは?
APIの対応状況はモデルとエンドポイントの両方で異なるため、各モデルカードを確認してください(API互換性表)。2026年10月20日時点のAWSドキュメントからの例:
| モデル | runtimeでのChat Completions | runtimeでのResponses | 備考 |
|---|---|---|---|
openai.gpt-oss-120b-1:0 / -20b-1:0 |
対応 | 非対応(Responsesはmantleのみ) | オープンウェイトのGPT OSS |
global.openai.gpt-5.6-sol |
対応 | 対応 | AWSクイックスタートに掲載、グローバル推論プロファイル |
| GPT-6ファミリー、GPT-5.x | モデルカードによる | モデルカードによる | 互換性表のOpenAIセクションに掲載 |
| Anthropic Claude | Messages API(/anthropic)を使用 |
該当なし | ANTHROPIC_BASE_URL=https://bedrock-runtime.{region}.amazonaws.com/anthropic |
OpenAI互換呼び出しのBedrock料金
料金はそのモデルの通常のBedrockトークン単価です。OpenAI互換インターフェースによる追加料金はありません。Bedrockの料金ページ(2026年10月20日)からの例、100万トークンあたり:
| モデル | リージョン | 入力 | 出力 |
|---|---|---|---|
| gpt-oss-20b | アジアパシフィック(シドニー) | $0.0721 | $0.3090 |
| gpt-oss-120b | アジアパシフィック(シドニー) | $0.1545 | $0.6180 |
| GPT OSS Safeguard 20B | 米国東部/西部 | $0.07 | $0.20 |
| GPT OSS Safeguard 120B | 米国東部/西部 | $0.15 | $0.60 |
料金はリージョンによって異なり、BedrockにはPriority、Flex、Batchの各ティアもあります。正確な料金は料金ページのリージョン選択で確認してください。
よくあるエラーと対処法
| エラー | 原因 | 対処法 |
|---|---|---|
/models で 404 UnknownOperationException |
bedrock-runtime はModels APIを実装していない |
ListFoundationModels を使うか、bedrock-mantle の /models を呼ぶ |
model … isn't supported on this route |
bedrock-mantle のパスプレフィックスの誤り |
モデルカードで /v1 か /openai/v1 かを確認 |
Credential should be scoped to a valid region |
長期キーを作成リージョン外で使用 | 対象リージョンでキーを生成する |
Unable to locate credentials |
1.39.0より古いboto3は AWS_BEARER_TOKEN_BEDROCK を無視する |
pip install --upgrade boto3 |
| GPT OSSでResponses APIが使えない | GPT OSSのResponses対応は bedrock-mantle のみ |
Chat Completionsを使うかエンドポイントを切り替える |
AccessDenied |
モデルアクセスがない、または CallWithBearerToken が拒否されている |
モデルアクセスを有効化し、IAMポリシーを見直す |
Bedrock・OpenAI直接利用・マルチプロバイダーゲートウェイの比較
| 要件 | Bedrock OpenAI互換 | プロバイダーAPIを直接利用 | マルチプロバイダーゲートウェイ(例:Flatkey) |
|---|---|---|---|
| AWSアカウント、IAM、CloudTrailの中で完結させたい | 最適 | 不可 | 不可 |
| AWSクレジットやEnterprise Discount Program(EDP)のコミットを使いたい | 可 | 不可 | 不可 |
| GuardrailsやVPCに近い統制 | 可 | プロバイダー次第 | ゲートウェイ次第 |
| 最新モデルをリリース当日に使いたい | モデルによる | 通常は最速 | 場合による |
| OpenAI、Anthropic、Google、Alibaba、DeepSeek、Moonshot、Zhipuを1つのキーで | Bedrockがホストするモデルのみ | 不可 | 可 |
| リージョンごとのキー管理 | 必要 | 不要 | 不要 |
AWSに全面的に乗っているなら、BedrockのOpenAI互換APIが最もすっきりした選択です。Bedrockがホストしていないモデルも必要なら、同じOpenAI SDKのコードのままベースURLを差し替えましょう。Flatkeyなら、https://router.flatkey.ai/v1 の1つのキーでGPT、Claude、Gemini、Qwen、DeepSeek、Kimi、GLMにアクセスできます。
import os
from openai import OpenAI
ROUTES = {
"bedrock": OpenAI(base_url="https://bedrock-runtime.us-east-1.amazonaws.com/openai/v1",
api_key=os.environ["AWS_BEARER_TOKEN_BEDROCK"]),
"flatkey": OpenAI(base_url="https://router.flatkey.ai/v1",
api_key=os.environ["FLATKEY_API_KEY"]),
}
def ask(route, model, prompt):
r = ROUTES[route].chat.completions.create(model=model, messages=[{"role": "user", "content": prompt}])
return r.choices[0].message.content
print(ask("bedrock", "openai.gpt-oss-120b-1:0", "hi"))
print(ask("flatkey", "qwen3.8-max", "hi")) # same SDK, different provider
print(ask("flatkey", "claude-sonnet-5-5", "hi"))
2026年10月20日時点で、Flatkeyの gpt-6-sol ページには100万トークンあたり入力$1.20、出力$6.00と記載されています。これは定価$2 / $10に対するプロモーション価格です。同じモデルのBedrock料金と比較してみてください。関連記事:OpenAI互換APIのベースURL、プロバイダーとの直接契約とAI APIゲートウェイの比較、エンタープライズ向けAI APIゲートウェイのチェックリスト。
移行チェックリスト:OpenAIアプリからBedrockへ
- リージョンを決め、Bedrockコンソールでモデルアクセスを確認する。
OPENAI_BASE_URLをhttps://bedrock-runtime.{region}.amazonaws.com/openai/v1に置き換える。- キーを短期のBedrock APIキープロバイダーに置き換える。長期キーを本番に持ち込まない。
- モデル名をBedrockのIDに対応付ける(例:
gpt-oss-120b→openai.gpt-oss-120b-1:0)。 client.models.list()の呼び出しを削除するか、bedrock-mantleに移す。- ストリーミング、ツール呼び出し、構造化出力をモデルカードに沿ってテストする。
- ポリシー上必要な箇所にguardrailヘッダーを追加する。
- 選んだエンドポイントのクォータを確認する(レート制限への対処)。
- モデル別・チーム別に支出を追跡する(コストの按分)。
よくある質問
Amazon BedrockはOpenAI APIに対応していますか?
はい。Bedrockは https://bedrock-runtime.{region}.amazonaws.com/openai/v1 でOpenAIのChat Completions APIとResponses APIを実装しているため、既存のOpenAI SDKのコードはベースURL、APIキー、モデルIDを変えるだけで動きます。
BedrockのOpenAI互換ベースURLは何ですか?
推奨URLは https://bedrock-runtime.{region}.amazonaws.com/openai/v1 で、たとえば https://bedrock-runtime.us-east-1.amazonaws.com/openai/v1 です。互換用エンドポイントは https://bedrock-mantle.{region}.api.aws/v1 です。
OpenAI SDKをBedrockで認証するには?
Amazon BedrockのAPIキーを api_key に設定し、Authorization: Bearer として送信します。本番環境では短期キー(最大12時間)が推奨されています。bedrock-runtime ではSigV4署名も使えます。
Bedrockで models.list() が失敗するのはなぜですか?
bedrock-runtime エンドポイントはOpenAIの GET /models 操作を実装しておらず、404 UnknownOperationException を返します。ListFoundationModels を使うか、bedrock-mantle の /models を呼び出してください。
BedrockでGPT OSSをResponses APIで使えますか?
bedrock-runtime では使えません。GPT OSSはそこでChat Completionsに対応しており、GPT OSSのResponses APIは bedrock-mantle でのみ利用できます。
OpenAI互換エンドポイントに追加料金はかかりますか?
AWSはこのインターフェースに別途料金を設定していません。リージョンとティアに応じた、そのモデルの標準的なBedrockトークン料金を支払います。
まとめ
AWSでOpenAI SDKを使うには、ベースURLを bedrock-runtime.{region}.amazonaws.com/openai/v1 にし、短期のBedrock APIキーを使い、モデルIDを対応付けて、models.list() をやめるだけです。Bedrock以外のモデルも必要なら、同じSDKのパターンのまま Flatkeyルーター を通じて1つのキーで利用できます。
最終更新:2026年10月20日 · Flatkey Team。記載内容は本文中でリンクしたAWS公式ドキュメントに基づいています。


