#!/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 ""