diff --git a/configure-aws-bedrock.sh b/configure-aws-bedrock.sh new file mode 100755 index 0000000..4d6062a --- /dev/null +++ b/configure-aws-bedrock.sh @@ -0,0 +1,304 @@ +#!/usr/bin/env bash +set -euo pipefail + +# ───────────────────────────────────────────── +# OpenClaw AWS Bedrock 配置脚本 +# ───────────────────────────────────────────── + +# 颜色 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +BOLD='\033[1m' +NC='\033[0m' # 无颜色 + +info() { echo -e "${BLUE}[信息]${NC} $*"; } +success() { echo -e "${GREEN}[完成]${NC} $*"; } +warn() { echo -e "${YELLOW}[警告]${NC} $*"; } +error() { echo -e "${RED}[错误]${NC} $*"; exit 1; } + +header() { + echo "" + echo -e "${BOLD}========================================${NC}" + echo -e "${BOLD} OpenClaw AWS Bedrock 配置器${NC}" + echo -e "${BOLD}========================================${NC}" + echo "" +} + +header + +# ───────────────────────────────────────────── +# 检查是否已配置 +# ───────────────────────────────────────────── +SKIP_INPUT=false + +if [[ -f ~/.openclaw/.env ]] && grep -q "AWS_ACCESS_KEY_ID" ~/.openclaw/.env 2>/dev/null; then + warn "检测到已存在 AWS 凭证配置" + echo -e "${YELLOW}是否使用现有凭证? [Y/n]${NC}" + read -r USE_EXISTING + + if [[ "$USE_EXISTING" != "n" && "$USE_EXISTING" != "N" ]]; then + SKIP_INPUT=true + # 加载现有凭证 + source ~/.openclaw/.env + success "使用现有凭证 (Access Key: ${AWS_ACCESS_KEY_ID:0:20}...)" + fi +fi + +# ───────────────────────────────────────────── +# 步骤 1: 获取 AWS 访问密钥 +# ───────────────────────────────────────────── +if [[ "$SKIP_INPUT" == false ]]; then + info "请输入你的 AWS Access Key ID:" + echo -e "${YELLOW}(从 https://console.aws.amazon.com/bedrock/home#/api-keys 获取)${NC}" + read -r AWS_ACCESS_KEY_ID + + if [[ -z "$AWS_ACCESS_KEY_ID" ]]; then + error "AWS Access Key ID 不能为空" + fi + + info "请输入你的 AWS Secret Access Key:" + read -sr AWS_SECRET_ACCESS_KEY + echo "" + + if [[ -z "$AWS_SECRET_ACCESS_KEY" ]]; then + error "AWS Secret Access Key 不能为空" + fi + + info "请输入 AWS 区域 (默认: us-west-2):" + read -r AWS_REGION + AWS_REGION=${AWS_REGION:-us-west-2} + + success "已获取 AWS 凭证" +fi + +# ───────────────────────────────────────────── +# 步骤 1.5: 创建环境变量文件 +# ───────────────────────────────────────────── +if [[ "$SKIP_INPUT" == false ]]; then + info "正在创建 ~/.openclaw/.env 文件..." + + mkdir -p ~/.openclaw + + # 备份现有的 .env 文件 + if [[ -f ~/.openclaw/.env ]]; then + cp ~/.openclaw/.env ~/.openclaw/.env.backup.$(date +%s) + warn "已备份现有 .env 文件" + fi + + cat > ~/.openclaw/.env < ~/.openclaw/openclaw.json </dev/null; then + success "Gateway 已重启" +else + warn "Gateway 重启失败,请手动运行: ${BLUE}openclaw gateway restart${NC}" +fi + +echo "" + +# ───────────────────────────────────────────── +# 步骤 5: 测试连接 +# ───────────────────────────────────────────── +info "正在测试 AWS Bedrock 连接..." + +# 等待 gateway 完全启动 +sleep 2 + +# 检查 gateway 健康状态 +if openclaw gateway health --timeout 5000 >/dev/null 2>&1; then + success "Gateway 运行正常" +else + warn "Gateway 健康检查失败" +fi + +# 列出配置的模型 +info "检查已配置的 AWS Bedrock 模型..." +echo "" +openclaw models list --provider amazon-bedrock 2>/dev/null || warn "无法列出模型,请检查配置" + +echo "" + +# 测试实际连接 +info "测试实际连接到 AWS Bedrock..." +echo "" +if openclaw agent --session-id test --message "Say OK" --local 2>/dev/null; then + echo "" + success "AWS Bedrock 连接测试成功!" +else + warn "AWS Bedrock 连接测试失败,请检查:" + echo -e " • AWS 凭证是否正确" + echo -e " • AWS Bedrock 模型访问是否已启用" + echo -e " • IAM 权限是否配置正确" +fi + +echo "" +echo -e "${GREEN}${BOLD}✓ 测试完成${NC}" +echo ""