Appearance
本页介绍如何在 OpenClaw 中配置 Amazon Bedrock 作为 LLM 提供商。Bedrock 使用 AWS SDK 默认凭据链(环境变量、~/.aws/credentials、IAM 实例角色),无需 API Key。自动模型发现通过 bedrock:ListFoundationModels 和 bedrock: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_REGION或AWS_DEFAULT_REGION(默认:us-east-1)
自动模型发现
OpenClaw 可以自动发现支持流式传输和文本输出的 Bedrock 模型。发现使用 bedrock:ListFoundationModels 和 bedrock:ListInferenceProfiles,结果缓存(默认:1 小时)。
隐式提供商启用逻辑:
- 如果
plugins.entries.amazon-bedrock.config.discovery.enabled为true,即使没有 AWS 环境标记也会尝试发现 - 如果未设置,只有检测到以下 AWS 认证标记之一时才自动添加隐式 Bedrock 提供商:
AWS_BEARER_TOKEN_BEDROCK、AWS_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_REGION或AWS_DEFAULT_REGION,再回退到us-east-1providerFilter:匹配 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-1EC2 实例角色所需 IAM 权限:
bedrock:InvokeModelbedrock:InvokeModelWithResponseStreambedrock: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:ListFoundationModels和bedrock:ListInferenceProfiles权限 - 如果使用自动模式,在 gateway 主机上设置支持的 AWS 认证环境标记。如果偏向 IMDS/共享配置认证且没有环境标记,设置
discovery.enabled: true - 推理支持取决于模型,请查看 Bedrock 模型卡确认当前能力
常见问题
Q: 用 IMDS 实例角色认证时,模型发现为什么没有自动启用?
A: 默认的"自动模式"只在检测到 AWS_BEARER_TOKEN_BEDROCK、AWS_ACCESS_KEY_ID 或 AWS_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 配置项分开管理。