Skip to content

在 OpenClaw 中使用 Amazon Bedrock 模型不需要 API Key,而是通过 AWS SDK 默认凭据链(环境变量、~/.aws/credentials、EC2 实例角色)认证。配置 provider: "amazon-bedrock"api: "bedrock-converse-stream" 即可调用 Claude 等模型。自动模型发现默认只检测到环境标记才启用,EC2/IMDS 环境下需显式设置 discovery.enabled: true。也支持跨区域推理配置文件、服务层级(flex/priority/reserved)、Guardrails 以及 Bedrock 嵌入(用于 memory search)。关键命令:openclaw models list 验证发现结果。

OpenClaw 配置 Amazon Bedrock:AWS 凭据、自动模型发现与 Guardrails 接入步骤

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

属性
Provideramazon-bedrock
APIbedrock-converse-stream
认证AWS 凭据(环境变量、共享配置、EC2 实例角色或 SSO)
区域AWS_REGIONAWS_DEFAULT_REGION(默认:us-east-1

怎么配置 Amazon Bedrock(凭据 + 模型)

方式一:环境变量(开发机、CI)

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 专用令牌)
export AWS_BEARER_TOKEN_BEDROCK="..."

然后配置 provider,不需要 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" },
    },
  },
}

验证模型可用:

bash
openclaw models list

只要设置了 AWS_ACCESS_KEY_IDAWS_PROFILEAWS_BEARER_TOKEN_BEDROCK 之一的 env marker,OpenClaw 会自动启用隐式 Bedrock provider 进行模型发现,无需额外配置。

方式二:EC2 实例角色(IMDS)

在附有 IAM 角色的 EC2 实例上,AWS SDK 能通过实例元数据服务(IMDS)自动获取临时凭据。但 OpenClaw 的自动模式(auto mode)默认不会因为 IMDS 而启用,需要显式开启发现:

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

如果你想为 openclaw status 等表面也启用 env marker 自动检测,可以额外导出:

bash
export AWS_PROFILE=default
export AWS_REGION=us-east-1

不需要伪造 API Key。

EC2 实例角色所需 IAM 权限

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

或直接附加托管策略 AmazonBedrockFullAccess

快速建好 IAM 角色并附加

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

aws iam create-instance-profile --instance-profile-name EC2-Bedrock-Access
aws iam add-role-to-instance-profile \
  --instance-profile-name EC2-Bedrock-Access \
  --role-name EC2-Bedrock-Access

# 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

# 4. 可选:添加 env marker 让自动模式也工作
echo 'export AWS_PROFILE=default' >> ~/.bashrc
echo 'export AWS_REGION=us-east-1' >> ~/.bashrc
source ~/.bashrc

# 5. 验证发现
openclaw models list

自动模型发现

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

隐式 provider 启用逻辑

  • 如果 plugins.entries.amazon-bedrock.config.discovery.enabled 设为 true,即使没有 AWS env marker 也会尝试发现。
  • 如果该字段未设置(自动模式),OpenClaw 只在检测到以下 env marker 之一时自动添加隐式 Bedrock provider:AWS_BEARER_TOKEN_BEDROCKAWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY、或 AWS_PROFILE
  • 实际 Bedrock runtime 认证路径始终使用 AWS SDK 默认链,所以共享配置、SSO、IMDS 实例角色仍然可以工作——即使发现需要 enabled: true 来跳出自动模式。

发现配置选项

配置放在 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,
          },
        },
      },
    },
  },
}
选项默认值描述
enabledauto自动模式下只在检测到 AWS env marker 时启用。设为 true 强制发现。
regionAWS_REGION / AWS_DEFAULT_REGION / us-east-1用于发现 API 调用的区域。
providerFilter(全部)匹配 Bedrock provider 名称,例如 anthropicamazon
refreshInterval3600缓存秒数,设为 0 禁用缓存。
defaultContextWindow32000发现模型的默认上下文窗口大小(已知模型限制时请覆盖)。
defaultMaxTokens4096发现模型的默认最大输出 token 数(已知模型限制时请覆盖)。

推理配置文件

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

  • 区域推理配置文件 ID 示例:us.anthropic.claude-opus-4-6-v1:0
  • 全局推理配置文件 ID 示例:anthropic.claude-opus-4-6-v1:0

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

可选高级配置

服务层级(Service Tier)

某些 Bedrock 模型支持 service_tier 参数来优化成本或延迟。可用的层级:

层级描述
default标准 Bedrock 层级
flex折扣处理(适用于能容忍较长延迟的工作负载)
priority优先处理(低延迟敏感)
reserved预留容量(稳定工作负载)

通过 agents.defaults.params 或每个模型 agents.defaults.models["<model-key>"].params 设置:

json5
{
  agents: {
    defaults: {
      params: {
        serviceTier: "flex", // 对所有模型生效
      },
      models: {
        "amazon-bedrock/mistral.mistral-large-3-675b-instruct": {
          params: {
            serviceTier: "priority", // 单模型覆盖
          },
        },
      },
    },
  },
}

无效的层级会导致 Bedrock 返回验证错误,错误信息可能显示“The provided model identifier is invalid”,实际原因是该模型不支持该 tier。检查模型文档确认支持哪些 tier。

Guardrails(内容护栏)

你可以对所有 Bedrock 模型调用应用 Amazon Bedrock Guardrails,实现内容过滤、话题拒绝、敏感信息过滤等。配置在 amazon-bedrock 插件下:

json5
{
  plugins: {
    entries: {
      "amazon-bedrock": {
        config: {
          guardrail: {
            guardrailIdentifier: "abc123", // Guardrail ID 或完整 ARN
            guardrailVersion: "1", // 版本号或 "DRAFT"
            streamProcessingMode: "sync", // 可选:"sync" 或 "async"
            trace: "enabled", // 可选:调试时设为 "enabled" 或 "enabled_full"
          },
        },
      },
    },
  },
}
选项必需描述
guardrailIdentifierGuardrail ID(如 abc123)或完整 ARN(arn:aws:bedrock:us-east-1:123456789012:guardrail/abc123)。
guardrailVersion已发布版本号,或 "DRAFT" 表示工作草稿。
streamProcessingMode"sync""async",流式评估时的 guardrail 模式。
trace"enabled""enabled_full" 用于调试;生产环境省略或设为 "disabled"

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

Claude Opus 4.7 temperature 自动省略

Bedrock 拒绝为 Claude Opus 4.7 传递 temperature 参数。OpenClaw 会自动从请求中移除 temperature(包括 inferenceConfig 字段),适用于所有 Opus 4.7 的 Bedrock 引用:基础模型 ID、命名推理配置文件、应用程序推理配置文件(解析后为 Opus 4.7),以及带区域前缀的点号变体(us.eu.ap.apac.au.jp.global.)。无需手动配置。

内存搜索嵌入(Bedrock)

Bedrock 也可以作为内存搜索的嵌入提供方。配置在 agents.defaults.memorySearch 下:

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

Bedrock 嵌入使用同样的 AWS SDK 凭据链(实例角色、SSO、访问密钥、共享配置、Web Identity)。无需 API Key。当 provider 设为 "auto" 时,如果凭据链能解析,会自动选择 Bedrock。

支持的嵌入模型包括 Amazon Titan Embed(v1, v2)、Amazon Nova Embed、Cohere Embed(v3, v4)和 TwelveLabs Marengo。详见内存配置参考——Bedrock

注意事项

  • Bedrock 需要在你的 AWS 账户/区域中启用模型访问(在 AWS 控制台 Model Access 中申请)。
  • 自动发现需要 IAM 主体拥有 bedrock:ListFoundationModelsbedrock:ListInferenceProfiles 权限。
  • 如果使用自动模式,在 gateway 主机上设置一个支持的 AWS auth env marker。如果偏好 IMDS/共享配置且无需 env marker,设置 discovery.enabled: true
  • OpenClaw 解析凭据源的顺序:AWS_BEARER_TOKEN_BEDROCKAWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEYAWS_PROFILE → 默认 AWS SDK 链。
  • 推理支持取决于模型,请查看 Bedrock 模型卡当前能力。
  • 如果你更希望使用托管密钥流程,也可以在 Bedrock 前放置一个兼容 OpenAI 的代理,然后将其配置为 OpenAI provider。

常见问题

Amazon Bedrock 拿不到模型,openclaw models list 为空怎么办?

先确认 IAM 主体有 bedrock:ListFoundationModelsbedrock:ListInferenceProfiles 权限(附加 AmazonBedrockFullAccess 最直接)。如果是 EC2 实例角色,要显式设置 discovery.enabled: true(自动模式不会主动检测 IMDS)。另外检查 AWS 区域是否已启用该模型的访问。

使用 EC2 实例角色时,为什么不能自动发现 Bedrock 模型?

因为自动模式只在检测到 AWS_BEARER_TOKEN_BEDROCKAWS_ACCESS_KEY_IDAWS_PROFILE 等环境变量时才启用。IMDS 不暴露环境变量,所以必须手动执行:

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

之后 openclaw models list 应能显示发现的模型。

Guardrails 配置后报 “The provided model identifier is invalid” 错误?

这个错误通常指服务层级(service tier)不受支持或 Guardrails 配置错误,而不是模型 ID 无效。检查 serviceTier 是否选了对该模型有效的值(defaultflexpriorityreserved),并确认 IAM 主体有 bedrock:ApplyGuardrail 权限。如果只配了 Guardrails 而未设置 service tier,可先移除 service tier 相关配置再试。