模型请求
发往你账号中的 Amazon Bedrock
每个请求的提示词、工具和图片发往你所配置区域的 Bedrock。日志记录模型、token 数、缓存命中和耗时,从不记录提示词、回答或密钥。
一个 Rust 二进制文件,用你自己的 AWS 账号调用 Bedrock,响应 OpenAI 的 Chat Completions、Responses、Completions 和 Embeddings 请求。OpenAI SDK 或 Agent 只需配置一个基础 URL 和一个密钥,其余一切保持不变。
export BGW=http://localhost:8080/api/v1curl -s $BGW/chat/completions \ -H "Authorization: Bearer $API_KEY" --json '{ "model": "us.amazon.nova-2-lite-v1:0", "messages": [{"role": "user", "content": "Reply with exactly: BEDROCK_OK"}]}' | jq -r '.choices[0].message.content'BEDROCK_OKcurl -s $BGW/responses \ -H "Authorization: Bearer $API_KEY" --json '{ "model": "us.amazon.nova-2-lite-v1:0", "input": "Reply with exactly: BEDROCK_OK"}' | jq -r '.output[-1].content[0].text'BEDROCK_OK网关配置好客户端密钥和 AWS 凭据后,下列功能即可使用;GPT-5.x 和 gpt-oss 还需要 Bedrock API 密钥。Chat Completions 上的“跨工具调用保留推理”和 OpenTelemetry 导出默认关闭,需要你自行开启。
流式与非流式对话,支持工具、图片、JSON 输出和推理强度。
Codex CLI 使用的 Responses API,支持流式与非流式,请求之间不保存状态。
旧版文本补全路由,供编辑预测功能仍在使用它的编辑器调用。
通过 OpenAI 的 embeddings 请求使用 Cohere、Titan 和 Nova 嵌入模型。
GET /api/v1/models 列出你的账号可以调用的模型和推理配置文件,内容从 Bedrock 读取,并在网关运行期间定期刷新。
Sonnet、Opus、Haiku 和 Fable,通过 Bedrock 模型 ID 和跨区域推理配置文件调用。
GPT-5.x、GPT-6.x 和 gpt-oss,使用 gpt-5.6-sol、gpt-6.1-sol 这样的简称调用。
Amazon Nova、DeepSeek 以及你账号模型目录中的任何模型。支持新模型只需添加一个配置条目,不需要发布新版本。
二进制文件、Docker 镜像、负载均衡器后面运行在 Fargate 上的 ECS,或者使用函数 URL 的 Lambda。
客户端密钥可以来自 SSM Parameter Store 或 Secrets Manager,而不是环境变量。
每个请求一行日志,记录模型、token 数、缓存命中和耗时,从不记录提示词或密钥。OpenTelemetry 导出是一个构建选项。
docker pull sunerpy/bedrock-gateway-rust
也可以从 GitHub Releases 下载适合你平台的二进制文件,或者用 cargo 安装。
export API_KEY=sk-replace-with-a-private-random-key
每个客户端都要发送这个密钥。它由你自己决定,不是 AWS 凭据。
docker run -p 8080:8080 -e API_KEY -e AWS_REGION=us-east-1 -e AWS_BEARER_TOKEN_BEDROCK sunerpy/bedrock-gateway-rust
AWS_BEARER_TOKEN_BEDROCK 是 Bedrock API 密钥。没有它时,网关使用标准 AWS 凭据链。
http://localhost:8080/api/v1
这是 OpenAI SDK、Codex CLI 和其他 OpenAI 兼容客户端使用的基础 URL。
每个路由都接收 OpenAI 客户端发送的请求,并以同样的格式返回,流式响应也是如此。Bedrock 独有的功能(例如 1 小时提示缓存)放在一个 extra_body 对象中,OpenAI SDK 可以在任何请求中加入这个对象。
| 路由 | 协议 | 说明 |
|---|---|---|
POST /api/v1/chat/completions | OpenAI Chat Completions | 流式与非流式 |
POST /api/v1/responses | OpenAI Responses | 无状态 |
POST /api/v1/completions | OpenAI Completions | 旧版文本补全 |
POST /api/v1/embeddings | OpenAI Embeddings | Cohere、Titan 和 Nova |
GET /api/v1/models | 模型列表 | 从 Bedrock 读取 |
GET /api/v1/health | 存活检查 | 无需密钥 |
除 /health 外,每个路由都要求提供你的 API_KEY,放在 Authorization Bearer 中发送。用 API_ROUTE_PREFIX 可以修改 /api/v1 这个前缀。
OpenAI SDK 把网关设为基础 URL 即可。Codex CLI 把它配置为一个使用 Responses 的自定义 model provider。支持 OpenAI 兼容 provider 的编辑器和 Agent 只需填写基础 URL、密钥和模型 ID,不需要插件,也不需要修改客户端。
| 客户端 | 接口 | 配置方式 |
|---|---|---|
| OpenAI Python 和 Node SDK | Chat Completions 或 Responses | 一个基础 URL 和一个 API 密钥 |
| Codex CLI | Responses | config.toml 中的 model_provider |
| 编辑器与 Agent | Chat Completions 或 Completions | 一个 OpenAI 兼容的 provider |
| curl 和脚本 | 任意路由 | Authorization 请求头 |
Claude、Bedrock 上的 OpenAI GPT 模型、Amazon Nova、DeepSeek 以及你模型目录中的其他所有模型,调用方式都相同。每个模型的特殊之处,例如接受哪些采样参数、如何推理,都记录在配置文件中,因此支持一个新模型只需在其中添加一个条目,不需要发布新版本。
| 模型系列 | 模型 ID | 提供方式 |
|---|---|---|
| Claude | global.anthropic.claude-sonnet-5-5 us.anthropic.claude-opus-5-5 global.anthropic.claude-fable-5-1 | Bedrock Converse |
| GPT-5.x | gpt-5.4 gpt-5.5 gpt-5.6-sol gpt-5.6-terra gpt-5.6-luna | Bedrock 的 OpenAI 兼容端点 |
| GPT-6.x | gpt-6.1-sol gpt-6-sol gpt-6-luna gpt-6-astra | Bedrock Converse |
| gpt-oss | gpt-oss-120b gpt-oss-20b | Bedrock 的 OpenAI 兼容端点 |
| Amazon Nova | us.amazon.nova-2-lite-v1:0 us.amazon.nova-pro-v1:0 | Bedrock Converse |
DeepSeek 和你模型目录中的其他所有模型都以同样的方式调用。模型列表会显示你的账号在网关所在区域可以调用的 ID。
每个版本都为下列平台各提供一个二进制文件,在 Docker Hub 和 Amazon ECR Public 上发布多架构镜像,并在 crates.io 上发布 crate。
| 平台 | 发布文件 | 容器镜像 |
|---|---|---|
| Linux x64已发布 | x86_64-unknown-linux-musl | linux/amd64 |
| Linux ARM64已发布 | aarch64-unknown-linux-musl | linux/arm64 |
| macOS Intel已发布 | x86_64-apple-darwin | 无 |
| macOS Apple Silicon已发布 | aarch64-apple-darwin | 无 |
| Windows x64已发布 | x86_64-pc-windows-msvc | 无 |
Linux 二进制文件是静态链接的;镜像基于 distroless,只包含二进制文件和它的配置。
bedrock-gateway 位于你的客户端和你的 AWS 账号之间。除了客户端发来的图片 URL 和你配置的 OpenTelemetry 收集器,它只与 AWS 通信。
发往你账号中的 Amazon Bedrock
每个请求的提示词、工具和图片发往你所配置区域的 Bedrock。日志记录模型、token 数、缓存命中和耗时,从不记录提示词、回答或密钥。
发往Bedrock 控制面
网关在启动时以及之后定期列出你的账号可以调用的基础模型和推理配置文件。
发往URL 中的主机
消息中带有 http 或 https 图片 URL 时,网关会下载图片,再把图片数据发给 Bedrock。data URL 在网关内解码。
发往SSM 或 Secrets Manager(如果你使用它们)
密钥来自 Parameter Store 或 Secrets Manager 时,网关在启动时从那里读取一次;否则密钥只存在于环境变量中。
curl -fsSL https://raw.githubusercontent.com/sunerpy/bedrock-gateway-rust/main/scripts/install.sh | shdocker run -p 8080:8080 -e API_KEY -e AWS_REGION=us-east-1 -e AWS_BEARER_TOKEN_BEDROCK sunerpy/bedrock-gateway-rustgh release download --repo sunerpy/bedrock-gateway-rust --pattern '*-x86_64-unknown-linux-musl.tar.gz'
tar -xzf bedrock-gateway-*-x86_64-unknown-linux-musl.tar.gzcargo install bedrock-gateway-rust安装指南介绍了所有平台、镜像标签以及如何从源码构建。
问题报告和功能建议请提交到 GitHub Issues。bedrock-gateway 以 MIT-0 许可证发布,不是 AWS 的产品。