8
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS re:Invent 2025の4日目、こんなアップデートがしれっと出ていました。

Bedrockのモデルは通常、Converse APIを介して呼び出しますが、OpenAI API形式での呼び出しにも対応したとのこと。ドキュメントは以下です。

ただし、ドキュメント通りに実施してもうまく動かなかったので、試行錯誤して分かったポイントを共有します。

今回のアプデの詳細

OpenAI API形式のうち、最新のステートフルなResponses APIと、従来型のChat Completions APIがBedrockで使えるようになりました。

対応するモデルは、GPT-OSSやDeepSeekをはじめとするオープンウェイトの26種類。
そのうちResponses APIに対応するのは現在GPT-OSS 20/120Bのみ(Safeguard系は非対応)。
他はChat Completionsのみの対応です。

つまずきポイント

ドキュメント通りにAPIを叩くと、いくつか躓くポイントがあります。

ポイント1: Bedrock APIキー発行後にIAM権限追加が必要

BedrockのAPIキーを発行すると、IAM認証情報が発行されます。
例えば長期APIキーの場合、それに紐づくIAMユーザーが自動作成されますが、今回呼び出すBedrock Mantle(分散推論エンジン)のAPIを呼び出す権限がありません。

User: BedrockAPIKey-XXXX is not authorized to perform: bedrock-mantle:XXXXXXXX というエラーが表示されます。

そのため、以下のIAMポリシーを自分で追加する必要があります。

{
    "Effect": "Allow",
    "Action": "bedrock-mantle:*",
    "Resource": "*"
}

ポイント2: APIのベースURLは末尾に /v1 が必要

ドキュメントを見ると、APIリクエスト時に環境変数として、APIキーの他に OPENAI_BASE_URL の指定が必要と記載されています。例は https://bedrock-mantle.us-east-1.api.aws となっています。

ただし、実際のエンドポイントには末尾に /v1 を付与する必要があります。

実行手順まとめ

  1. Bedrock APIキーを発行する
  2. 環境変数に以下の2件をexportする
    • OPENAI_API_KEY: Bedrock APIキーの値を設定
    • OPENAI_BASE_URLhttps://bedrock-mantle.<リージョン>.api.aws/v1
  3. 以下のようなコードを実行
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="openai.gpt-oss-120b",
    input=[{
        "role": "user",
        "content": "Xで話題の驚き屋って何?"
    }]
)

print(response.output[0].content[0].text)

ベースURLは、環境変数ではなくクライアント定義に含めてもいいと思います。

client = OpenAI(
    base_url="https://bedrock-mantle.us-east-1.api.aws/v1"
)
8
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?