Skip to content

本页介绍如何在 OpenClaw 中配置 Amazon Bedrock 作为 LLM 提供商。Bedrock 使用 AWS SDK 默认凭据链(环境变量、~/.aws/credentials、IAM 实例角色),无需 API Key。自动模型发现通过 bedrock:ListFoundationModelsbedrock:ListInferenceProfiles 实现,支持跨区域 Claude 推理配置文件(如 us.anthropic.claude-opus-4-6-v1:0)。也支持 Guardrails 内容过滤和 Bedrock Titan/Nova 作为内存搜索嵌入提供商。

Amazon Bedrock

OpenClaw 通过 pi-ai 的 Bedrock Converse 流式提供商使用 Amazon Bedrock 模型。Bedrock 认证使用 AWS SDK 默认凭据链,不需要 API Key。

  • Provider:amazon-bedrock
  • API:bedrock-converse-stream
  • 认证:AWS 凭据(环境变量、共享配置或实例角色)
  • 区域:AWS_REGIONAWS_DEFAULT_REGION(默认:us-east-1

自动模型发现

OpenClaw 可以自动发现支持流式传输文本输出的 Bedrock 模型。发现使用 bedrock:ListFoundationModelsbedrock:ListInferenceProfiles,结果缓存(默认:1 小时)。

隐式提供商启用逻辑:

  • 如果 plugins.entries.amazon-bedrock.config.discovery.enabledtrue,即使没有 AWS 环境标记也会尝试发现
  • 如果未设置,只有检测到以下 AWS 认证标记之一时才自动添加隐式 Bedrock 提供商:AWS_BEARER_TOKEN_BEDROCKAWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY,或 AWS_PROFILE

发现配置选项(在 plugins.entries.amazon-bedrock.config.discovery 下):

json5
{
  plugins: {
    entries: {
      "amazon-bedrock": {
        config: {
          discovery: {
            enabled: true,
            region: "us-east-1",
            providerFilter: ["anthropic", "amazon"],
            refreshInterval: 3600,
            defaultContextWindow: 32000,
            defaultMaxTokens: 4096,
          },
        },
      },
    },
  },
}
  • enabled:默认为自动模式(检测到 AWS 环境标记才启用)
  • region:默认读取 AWS_REGIONAWS_DEFAULT_REGION,再回退到 us-east-1
  • providerFilter:匹配 Bedrock 提供商名称(如 anthropic
  • refreshInterval:秒数;设为 0 禁用缓存
  • defaultContextWindow(默认 32000)和 defaultMaxTokens(默认 4096)用于发现的模型

上手配置

1. 确保 AWS 凭据在 gateway 主机上可用

bash
export AWS_ACCESS_KEY_ID="AKIA..."
export AWS_SECRET_ACCESS_KEY="..."
export AWS_REGION="us-east-1"
# 可选:
export AWS_SESSION_TOKEN="..."
export AWS_PROFILE="your-profile"
# 可选(Bedrock API 令牌):
export AWS_BEARER_TOKEN_BEDROCK="..."

2. 添加 Bedrock 提供商和模型(无需 apiKey)

json5
{
  models: {
    providers: {
      "amazon-bedrock": {
        baseUrl: "https://bedrock-runtime.us-east-1.amazonaws.com",
        api: "bedrock-converse-stream",
        auth: "aws-sdk",
        models: [
          {
            id: "us.anthropic.claude-opus-4-6-v1:0",
            name: "Claude Opus 4.6 (Bedrock)",
            reasoning: true,
            input: ["text", "image"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 200000,
            maxTokens: 8192,
          },
        ],
      },
    },
  },
  agents: {
    defaults: {
      model: { primary: "amazon-bedrock/us.anthropic.claude-opus-4-6-v1:0" },
    },
  },
}

EC2 实例角色

在附有 IAM 角色的 EC2 实例上运行 OpenClaw 时,AWS SDK 可以使用实例元数据服务(IMDS)进行认证。

推荐设置(IMDS 主机):

  • 设置 plugins.entries.amazon-bedrock.config.discovery.enabled: true
  • 设置 plugins.entries.amazon-bedrock.config.discovery.region(或导出 AWS_REGION
  • 不需要假 API Key
  • 只有在需要环境标记用于自动模式或状态面时才需要 AWS_PROFILE=default
bash
# 推荐:显式启用发现 + 区域
openclaw config set plugins.entries.amazon-bedrock.config.discovery.enabled true
openclaw config set plugins.entries.amazon-bedrock.config.discovery.region us-east-1

EC2 实例角色所需 IAM 权限

  • bedrock:InvokeModel
  • bedrock:InvokeModelWithResponseStream
  • bedrock:ListFoundationModels(自动发现)
  • bedrock:ListInferenceProfiles(推理配置文件发现)

或直接附加托管策略 AmazonBedrockFullAccess

快速设置(AWS 路径)

bash
# 1. 创建 IAM 角色和实例配置文件
aws iam create-role --role-name EC2-Bedrock-Access \
  --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"ec2.amazonaws.com"},"Action":"sts:AssumeRole"}]}'

aws iam attach-role-policy --role-name EC2-Bedrock-Access \
  --policy-arn arn:aws:iam::aws:policy/AmazonBedrockFullAccess

# 2. 附加到 EC2 实例
aws ec2 associate-iam-instance-profile \
  --instance-id i-xxxxx \
  --iam-instance-profile Name=EC2-Bedrock-Access

# 3. 在 EC2 实例上启用发现
openclaw config set plugins.entries.amazon-bedrock.config.discovery.enabled true
openclaw config set plugins.entries.amazon-bedrock.config.discovery.region us-east-1

推理配置文件

OpenClaw 与基础模型一起发现区域和全局推理配置文件。当配置文件映射到已知基础模型时,配置文件继承该模型的全部能力(上下文窗口、最大 token、推理、视觉),且自动注入正确的 Bedrock 请求区域。

配置文件 ID 格式:

  • 区域:us.anthropic.claude-opus-4-6-v1:0
  • 全局:anthropic.claude-opus-4-6-v1:0

无需额外配置——只要发现已启用且 IAM 主体有 bedrock:ListInferenceProfiles 权限,配置文件就会出现在 openclaw models list 中。

Guardrails

在所有 Bedrock 模型调用上应用 Amazon Bedrock Guardrails

json5
{
  plugins: {
    entries: {
      "amazon-bedrock": {
        config: {
          guardrail: {
            guardrailIdentifier: "abc123", // 护栏 ID 或完整 ARN
            guardrailVersion: "1",         // 版本号或 "DRAFT"
            streamProcessingMode: "sync",  // 可选:"sync" 或 "async"
            trace: "enabled",              // 可选:调试用
          },
        },
      },
    },
  },
}

使用 Guardrails 的 IAM 主体还需要 bedrock:ApplyGuardrail 权限。

内存搜索嵌入

Bedrock 也可以作为内存搜索的嵌入提供商:

json5
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "bedrock",
        model: "amazon.titan-embed-text-v2:0", // 默认
      },
    },
  },
}

支持的嵌入模型包括 Amazon Titan Embed(v1、v2)、Amazon Nova Embed、Cohere Embed(v3、v4)和 TwelveLabs Marengo。

注意事项

  • Bedrock 需要在你的 AWS 账户/区域中启用模型访问
  • 自动发现需要 bedrock:ListFoundationModelsbedrock:ListInferenceProfiles 权限
  • 如果使用自动模式,在 gateway 主机上设置支持的 AWS 认证环境标记。如果偏向 IMDS/共享配置认证且没有环境标记,设置 discovery.enabled: true
  • 推理支持取决于模型,请查看 Bedrock 模型卡确认当前能力

常见问题

Q: 用 IMDS 实例角色认证时,模型发现为什么没有自动启用?

A: 默认的"自动模式"只在检测到 AWS_BEARER_TOKEN_BEDROCKAWS_ACCESS_KEY_IDAWS_PROFILE 等环境变量时才自动启用。IMDS 角色不通过环境变量暴露,所以需要显式设置 plugins.entries.amazon-bedrock.config.discovery.enabled: true,才能让 OpenClaw 在 IMDS 环境下自动发现模型。

Q: 跨区域 Claude 推理配置文件(如 us.anthropic.claude-opus-4-6-v1:0)和普通基础模型有什么区别?

A: 跨区域推理配置文件可以在多个 AWS 区域间路由请求,提高可用性并减少限流。当发现的配置文件映射到已知基础模型时,OpenClaw 自动继承其完整能力元数据,并注入正确的请求区域——无需手动覆盖 provider 配置。

Q: Guardrails 会影响所有模型调用吗,还是只影响特定模型?

A: 配置在 plugins.entries.amazon-bedrock.config.guardrail 下的 Guardrails 会应用到所有 Bedrock 模型调用,无法按模型单独配置。如果只想对某些模型启用 Guardrails,目前需要用不同的 provider 配置项分开管理。