跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Go / GolangSaaSAI

AWS Kiro 账号池管理系统:Amazon Q Developer 转 OpenAI 兼容代理

本项目是一个基于 Go 语言开发的 AWS Kiro 账号池管理系统,旨在将 Amazon Q Developer API 转换为 OpenAI 兼容格式。系统支持多账号池管理、OIDC 自动认证、令牌自动刷新及智能负载均衡。提供现代化的 Vue.js 3 Web 管理控制台,具备账号监控、在线测试、请求日志及 IP 限流等企业级功能。支持 Linux、macOS、Windows 多平台部署,可通过 Systemd、Nginx 或 PM2 进行服务管理。适用于需要将 Amazon Q 接入现有 OpenAI 生态的场景。

FlinkHero发布于 2026/4/5更新于 2026/5/2325 浏览
AWS Kiro 账号池管理系统:Amazon Q Developer 转 OpenAI 兼容代理

AWS Kiro 账号池管理系统

AWS Kiro 账号池管理系统 - 将 Amazon Q Developer (Kiro) API 转换为 OpenAI 兼容格式的企业级 Go 代理服务。支持多账号池管理、OIDC 自动认证、令牌自动刷新、流式响应、完整的 Web 管理控制台。

系统界面

系统界面

系统界面

系统界面

系统界面

核心特性

AWS Kiro 账号池管理

  • 多账号池: 支持最多 100 个 AWS Kiro (Amazon Q Developer) 账号统一管理
  • OIDC 自动认证: 完整的 AWS OIDC 设备授权流程,无需手动获取令牌
  • 智能负载均衡: 自动选择可用账号,均衡分配请求负载
  • 令牌自动刷新: 后台自动检测并刷新过期的 AWS 令牌,保持账号池持续可用
  • 账号状态监控: 实时监控每个 Kiro 账号的健康状态、使用次数、最后使用时间
  • 批量导入导出: 支持批量添加、导入、导出 AWS Kiro 账号配置

API 格式转换

  • OpenAI 兼容: 完全兼容 OpenAI Chat Completions API 格式
  • Claude 支持: 支持 Claude Messages API 格式
  • 流式响应: SSE (Server-Sent Events) 流式输出
  • 工具调用: 完整支持 Function Calling / Tool Use
  • 模型映射: Claude 4.5 Opus、Sonnet 4.5、Sonnet 3.5 自动映射到 Amazon Q

企业级安全

  • API Key 认证: 自定义 API Key 保护服务访问
  • 密码保护: 管理控制台密码保护
  • IP 黑名单: 支持封禁/解封特定 IP 地址
  • 频率限制: 可配置的 IP 和 API Key 双重限流

Web 管理控制台

  • 现代化界面: Vue.js 3 驱动的响应式 Web 控制台
  • 账号池监控: 实时查看所有 AWS Kiro 账号状态、令牌有效期、使用统计
  • 在线测试: 内置聊天测试界面,支持流式对话
  • 请求日志: 完整的 API 请求日志、统计图表、错误追踪
  • 批量操作: 批量添加、删除、刷新 Kiro 账号
  • 系统设置: 可视化配置 API Key、限流规则、日志保留策略

快速开始

方式一:下载预编译版本(推荐)

从 GitHub Releases 下载对应平台的压缩包:

# Linux AMD64
wget https://github.com/kkddytd/claude-api/releases/latest/download/claude-server-linux-amd64.tar.gz
tar -xzf claude-server-linux-amd64.tar.gz ./claude-server

# macOS (Apple Silicon)
wget https://github.com/kkddytd/claude-api/releases/latest/download/claude-server-darwin-arm64.tar.gz
tar -xzf claude-server-darwin-arm64.tar.gz ./claude-server

# Windows
# 下载 claude-server-windows-amd64.zip 并解压
# 双击运行 claude-server.exe

方式二:从源码编译

# 克隆仓库
git clone https://github.com/kkddytd/claude-api.git
cd claude-api

# 安装 Go 依赖
go mod download

# 编译
go build -o claude-server main.go

# 运行
./claude-server

首次使用:

  1. 访问控制台:http://localhost:62311
  2. 默认密码:admin(首次登录后请立即修改)
  3. 添加 AWS Kiro 账号:点击"账号管理" → '添加账号' → 完成 OIDC 授权
  4. 配置 API Key:点击"系统设置" → 设置自定义 API Key
  5. 开始使用:使用 OpenAI SDK 连接到 http://localhost:62311/v1

编译构建

构建脚本

项目提供了强大的 build.sh 脚本,支持多平台编译:

# 构建当前平台(server + desktop)
./build.sh

# 仅构建后端服务
./build.sh server

# 仅构建桌面应用(macOS + Windows)
./build.sh desktop

# 构建所有平台
./build.sh all

# 清理构建产物
./build.sh clean

# 指定版本构建
./build.sh server -v v1.2.0

# 指定平台构建
./build.sh server -p linux/amd64

# 构建选项
./build.sh --no-cache       # 禁用构建缓存
./build.sh --verbose       # 显示详细日志
./build.sh -h              # 显示帮助信息

支持的平台

服务端:

  • Linux: amd64, arm64
  • macOS: amd64, arm64
  • Windows: amd64, arm64

桌面应用:

  • macOS: Universal (需要 Wails v2)
  • Windows: amd64 (需要 Wails v2)

构建产物

dist/
├── server/
│   ├── claude-server-linux-amd64.tar.gz
│   ├── claude-server-linux-arm64.tar.gz
│   ├── claude-server-darwin-amd64.tar.gz
│   ├── claude-server-darwin-arm64.tar.gz
│   ├── claude-server-windows-amd64.zip
│   └── claude-server-windows-arm64.zip
└── desktop/
    ├── Claude-API-Server-macOS.zip
    └── Claude-API-Server-Windows.zip

手动编译

# 当前平台
go build -o claude-server main.go

# 带版本号
go build -ldflags="-X main.Version=v1.0.0" -o claude-server main.go

# 跨平台编译
GOOS=linux GOARCH=amd64 go build -o claude-server-linux-amd64 main.go
GOOS=darwin GOARCH=arm64 go build -o claude-server-darwin-arm64 main.go
GOOS=windows GOARCH=amd64 go build -o claude-server-windows-amd64.exe main.go

部署指南

Linux Systemd 服务

创建服务文件 /etc/systemd/system/claude-api.service:

[Unit]
Description=Claude API Server
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/claude-api
ExecStart=/opt/claude-api/claude-server
Restart=on-failure
RestartSec=5s
Environment="PORT=62311"

[Install]
WantedBy=multi-user.target

启动服务:

sudo mkdir -p /opt/claude-api
sudo cp claude-server /opt/claude-api/
sudo chown -R www-data:www-data /opt/claude-api

sudo systemctl daemon-reload
sudo systemctl enable claude-api
sudo systemctl start claude-api

sudo systemctl status claude-api
sudo journalctl -u claude-api -f

Nginx 反向代理

server {
    listen 80;
    server_name api.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name api.example.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://127.0.0.1:62311;
        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_buffering off;
        proxy_cache_bypass $http_upgrade;
        proxy_read_timeout 300s;
        proxy_connect_timeout 75s;
    }
}

重载 Nginx:

sudo nginx -t
sudo systemctl reload nginx

进程管理器(PM2)

npm install -g pm2

cat > ecosystem.config.js <<'EOF'
module.exports = {
  apps: [{
    name: 'claude-api',
    script: './claude-server',
    cwd: '/opt/claude-api',
    instances: 1,
    autorestart: true,
    watch: false,
    max_memory_restart: '500M',
    env: { PORT: 62311 }
  }]
}
EOF

pm2 start ecosystem.config.js
pm2 status
pm2 logs claude-api
pm2 startup
pm2 save

环境变量配置

支持的环境变量:

export PORT=62311
export DATA_DIR=/path/to/data
export NO_BROWSER=true

数据备份

# 备份数据库
cp data.sqlite3 data.sqlite3.backup.$(date +%Y%m%d_%H%M%S)

# 定时备份(crontab)
0 2 * * * cd /opt/claude-api && cp data.sqlite3 backups/data.sqlite3.$(date +\%Y\%m\%d)
0 3 * * * find /opt/claude-api/backups -name "data.sqlite3.*" -mtime +7 -delete

使用示例

Python (OpenAI SDK)

from openai import OpenAI

client = OpenAI(
    api_key="your-api-key",
    base_url="http://localhost:62311/v1"
)

# 普通对话
response = client.chat.completions.create(
    model="claude-sonnet-4.5",
    messages=[{"role":"user","content":"你好"}]
)
print(response.choices[0].message.content)

# 流式对话
stream = client.chat.completions.create(
    model="claude-sonnet-4.5",
    messages=[{"role":"user","content":"写一首诗"}],
    stream=True
)
for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

Node.js (OpenAI SDK)

import OpenAI from 'openai';

const client = new OpenAI({
    apiKey: 'your-api-key',
    baseURL: 'http://localhost:62311/v1'
});

// 普通对话
const response = await client.chat.completions.create({
    model: 'claude-sonnet-4.5',
    messages: [{role:'user', content:'你好'}]
});
console.log(response.choices[0].message.content);

// 流式对话
const stream = await client.chat.completions.create({
    model: 'claude-sonnet-4.5',
    messages: [{role:'user', content:'写一首诗'}],
    stream: true
});
for await (const chunk of stream) {
    if (chunk.choices[0]?.delta?.content) {
        process.stdout.write(chunk.choices[0].delta.content);
    }
}

cURL

# 普通请求
curl -X POST http://localhost:62311/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-api-key" \
  -d '{ "model": "claude-sonnet-4.5", "messages": [ {"role": "user", "content": "你好"} ] }'

# 流式请求
curl -X POST http://localhost:62311/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-api-key" \
  -d '{ "model": "claude-sonnet-4.5", "messages": [ {"role": "user", "content": "你好"} ], "stream": true }'

配置说明

config.yaml

database:
  type: sqlite # 或 mysql
  sqlite:
    path: data.sqlite3
  mysql:
    host: localhost
    port: 3306
    user: root
    password: ""
    database: claude-api
    charset: utf8mb4

server:
  host: 0.0.0.0
  port: 62311

debug: false
test: false

系统设置(存储在数据库)

设置项说明默认值
apiKeyOpenAI API Key空
adminPassword管理员密码admin
debugLog调试日志false
enableRequestLog请求日志true
logRetentionDays日志保留天数30
enableIPRateLimitIP 频率限制false
ipRateLimitWindow限制时间窗口(分钟)1
ipRateLimitMax窗口内最大请求数100

API 文档

OpenAI 兼容端点

POST /v1/chat/completions
Content-Type: application/json
Authorization: Bearer YOUR_API_KEY

{
  "model": "claude-sonnet-4.5",
  "messages": [{"role": "user", "content": "你好"}],
  "stream": true
}

支持的模型:

  • claude-4.5-opus-high - Claude 4.5 Opus (高性能)
  • claude-4.5-opus-low - Claude 4.5 Opus (低成本)
  • claude-sonnet-4.5 - Claude Sonnet 4.5
  • claude-sonnet-3.5 - Claude Sonnet 3.5

管理端点

GET /v2/accounts          # 列出账号
POST /v2/accounts         # 创建账号
POST /v2/accounts/feed    # 批量添加
POST /v2/accounts/import  # 导入账号
GET /v2/accounts/export   # 导出账号
DELETE /v2/accounts/:id   # 删除账号

GET /v2/settings          # 获取设置
PUT /v2/settings          # 更新设置

GET /v2/logs              # 获取日志
GET /v2/logs/stats        # 统计数据
POST /v2/logs/cleanup     # 清理日志

GET /v2/ips/blocked       # 被封禁的 IP
POST /v2/ips/block        # 封禁 IP
POST /v2/ips/unblock      # 解封 IP

技术架构

技术栈

  • 后端: Go 1.24+, Gin
  • 数据库: SQLite (glebarez/sqlite - 纯 Go,无需 CGO) / MySQL
  • 前端: Vue.js 3
  • Token 计数: anthropic-tokenizer-go

项目结构

claude-api/
├── main.go               # 程序入口
├── build.sh              # 构建脚本
├── config.yaml           # 配置文件
├── internal/             # 内部包
│   ├── api/              # API 服务器
│   ├── amazonq/          # Amazon Q 客户端
│   ├── auth/             # 认证模块
│   ├── claude/           # 格式转换
│   ├── stream/           # 流处理
│   ├── database/         # 数据库
│   ├── models/           # 数据模型
│   ├── config/           # 配置管理
│   ├── logger/           # 日志系统
│   ├── tokenizer/        # Token 计数
│   └── sync/             # 同步客户端
├── frontend/             # Web 前端
│   ├── index.html
│   ├── js/
│   └── css/
└── dist/                 # 编译产物

数据流

客户端 → Gin Router → 认证中间件 → 账号选择器 → 格式转换器 → Amazon Q API
↓
客户端 ← OpenAI 格式 ← 流解析器 ← SSE 流 ← Amazon Q 响应

故障排查

常见问题

1. 令牌刷新失败

错误:failed to refresh token
解决:检查 refreshToken 是否有效,尝试重新授权

2. 连接超时

错误:context deadline exceeded
解决:检查网络连接,考虑配置 HTTP_PROXY

3. 数据库锁定

错误:database is locked
解决:确保没有其他进程使用数据库,或重启服务器

健康检查

curl http://localhost:62311/healthz
# 预期响应:{"status":"ok"}

日志位置

  • 控制台日志: 直接输出到终端
  • 请求日志: 存储在数据库 request_logs 表
  • 调试日志: 启用调试模式后在控制台输出

安全建议

  1. 修改默认密码: 首次启动后立即修改管理员密码
  2. 使用 HTTPS: 生产环境使用 Nginx 反向代理并配置 SSL
  3. 限制访问: 使用防火墙限制管理控制台访问
  4. 定期备份: 定期备份 data.sqlite3 数据库
  5. 监控日志: 定期查看请求日志,发现异常及时处理

目录

  1. AWS Kiro 账号池管理系统
  2. 核心特性
  3. AWS Kiro 账号池管理
  4. API 格式转换
  5. 企业级安全
  6. Web 管理控制台
  7. 快速开始
  8. 方式一:下载预编译版本(推荐)
  9. Linux AMD64
  10. macOS (Apple Silicon)
  11. Windows
  12. 下载 claude-server-windows-amd64.zip 并解压
  13. 双击运行 claude-server.exe
  14. 方式二:从源码编译
  15. 克隆仓库
  16. 安装 Go 依赖
  17. 编译
  18. 运行
  19. 编译构建
  20. 构建脚本
  21. 构建当前平台(server + desktop)
  22. 仅构建后端服务
  23. 仅构建桌面应用(macOS + Windows)
  24. 构建所有平台
  25. 清理构建产物
  26. 指定版本构建
  27. 指定平台构建
  28. 构建选项
  29. 支持的平台
  30. 构建产物
  31. 手动编译
  32. 当前平台
  33. 带版本号
  34. 跨平台编译
  35. 部署指南
  36. Linux Systemd 服务
  37. Nginx 反向代理
  38. 进程管理器(PM2)
  39. 环境变量配置
  40. 数据备份
  41. 备份数据库
  42. 定时备份(crontab)
  43. 使用示例
  44. Python (OpenAI SDK)
  45. 普通对话
  46. 流式对话
  47. Node.js (OpenAI SDK)
  48. cURL
  49. 普通请求
  50. 流式请求
  51. 配置说明
  52. config.yaml
  53. 系统设置(存储在数据库)
  54. API 文档
  55. OpenAI 兼容端点
  56. 管理端点
  57. 技术架构
  58. 技术栈
  59. 项目结构
  60. 数据流
  61. 故障排查
  62. 常见问题
  63. 健康检查
  64. 预期响应:{"status":"ok"}
  65. 日志位置
  66. 安全建议
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • C++ STL 算法实战指南
  • 强化学习与 DeepSeek-R1 训练原理详解
  • MCP 工具速成:npx 与 uvx 全流程安装指南
  • Stable Diffusion XL 1.0 实战:低显存 GPU 环境下的本地部署与优化
  • UG NX 逆向工程:STL 导入与曲面重构流程
  • llama-cpp-python 完整安装与配置指南
  • MCP 协议详解:与 Function Call 的区别及 Python 使用指南
  • Git 版本管理:Checkout 回溯备份与标签管理
  • 网络安全零基础如何入门 CTF 夺旗赛
  • 瑞芯微 RK3588 嵌入式 Linux 人脸门禁与 IPC 智能安防系统实战
  • 基于 FPGA 的 CLAHE 自适应限制对比度直方图均衡算法硬件实现
  • FPGA 实现 MIPI 协议全解析与完整时序规范
  • FPGA 自适应滤波指南:LMS 到 RLS 算法实现与 Verilog 代码
  • 大模型零基础入门指南:从定义到应用详解
  • OpenClaw 与本地千问模型搭建电脑 AI 助理
  • RTX 50 系显卡与 CUDA、PyTorch 及 Python 版本对应关系
  • Ubuntu 22.04 配置和启用 SSH 实现安全远程访问
  • Python 语言优势与核心应用场景解析
  • FLUX.1 镜像免配置部署:内置中文界面与中英双语 Web UI
  • 10 个开源免费的大模型学习资料推荐

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online