Appearance
Claude Code on Amazon Bedrock
本文说明如何在 Amazon Bedrock 上配置和使用 Claude Code。支持登录向导(/setup-bedrock)快速配置,也支持通过环境变量手动设置(适合 CI 和企业批量部署)。关键步骤包括:提交使用场景、配置 AWS 凭据(支持 CLI/环境变量/SSO/Bedrock API Key)、启用 CLAUDE_CODE_USE_BEDROCK、固定模型版本。还介绍了 AWS Guardrails 内容过滤和新增的 Mantle 端点。
向整个组织批量部署 Claude Code?请联系销售团队了解企业计划、SSO 和集中计费。
前提条件
开始前确保:
- 已启用 Bedrock 访问的 AWS 账户
- 已在 Bedrock 中启用所需 Claude 模型(如 Claude Sonnet 4.6)的访问权限
- 已安装并配置 AWS CLI(可选,如有其他凭据获取方式则不需要)
- 适当的 IAM 权限
使用登录向导
如果已有 AWS 凭据,可以通过登录向导快速完成 Bedrock 配置。AWS 侧前提条件每个账户只需完成一次,向导负责处理 Claude Code 侧配置。
完成配置后,随时运行 /setup-bedrock 重新打开向导,修改凭据、区域或模型固定设置。
手动设置
通过环境变量配置 Bedrock,适合 CI 环境或企业批量部署。
1. 提交使用场景说明
首次使用 Anthropic 模型需提交使用场景(每个 AWS 账户只需一次):
- 确保有正确的 IAM 权限
- 导航到 Amazon Bedrock 控制台
- 在 Model catalog 中选择 Anthropic 模型
- 填写使用场景表单,提交后立即获得访问权限
如果使用 AWS Organizations,可以通过管理账户调用 PutUseCaseForModelAccess API(需要 bedrock:PutUseCaseForModelAccess IAM 权限),批准自动扩展到子账户。
2. 配置 AWS 凭据
Claude Code 使用 AWS SDK 默认凭据链,支持多种配置方式:
选项 A:AWS CLI 配置
bash
aws configure选项 B:环境变量(访问密钥)
bash
export AWS_ACCESS_KEY_ID=your-access-key-id
export AWS_SECRET_ACCESS_KEY=your-secret-access-key
export AWS_SESSION_TOKEN=your-session-token选项 C:环境变量(SSO 配置)
bash
aws sso login --profile=<your-profile-name>
export AWS_PROFILE=your-profile-name选项 D:AWS Management Console 凭据
bash
aws login选项 E:Bedrock API Keys
bash
export AWS_BEARER_TOKEN_BEDROCK=your-bedrock-api-keyBedrock API Keys 提供更简单的认证方式,无需完整的 AWS 凭据。
高级凭据配置(自动刷新)
Claude Code 支持 AWS SSO 和企业身份提供商的自动凭据刷新。当检测到凭据过期(本地时间戳判断或 Bedrock 返回凭据错误),Claude Code 会自动运行配置的命令获取新凭据后重试。
在 Claude Code 设置文件中添加:
json
{
"awsAuthRefresh": "aws sso login --profile myprofile",
"env": {
"AWS_PROFILE": "myprofile"
}
}awsAuthRefresh:修改.aws目录的命令(更新凭据、SSO 缓存等),输出会显示给用户,不支持交互式输入。适合浏览器 SSO 流程(CLI 显示 URL 或验证码,用户在浏览器完成认证)。awsCredentialExport:直接返回凭据的命令(当无法修改.aws时使用),输出静默捕获,必须输出以下 JSON:
json
{
"Credentials": {
"AccessKeyId": "value",
"SecretAccessKey": "value",
"SessionToken": "value"
}
}3. 配置 Claude Code
设置以下环境变量启用 Bedrock:
bash
# 启用 Bedrock 集成
export CLAUDE_CODE_USE_BEDROCK=1
export AWS_REGION=us-east-1 # 或你偏好的区域
# 可选:覆盖小型/快速模型(Haiku)的区域(也适用于 Bedrock Mantle)
export ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION=us-west-2
# 可选:覆盖自定义端点或网关的 Bedrock 端点 URL
# export ANTHROPIC_BEDROCK_BASE_URL=https://bedrock-runtime.us-east-1.amazonaws.com注意:
AWS_REGION是必填环境变量,Claude Code 不从.aws配置文件读取此设置。使用 Bedrock 时,/login和/logout命令被禁用,认证通过 AWS 凭据处理。
4. 固定模型版本
bash
export ANTHROPIC_DEFAULT_OPUS_MODEL='us.anthropic.claude-opus-4-7'
export ANTHROPIC_DEFAULT_SONNET_MODEL='us.anthropic.claude-sonnet-4-6'
export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'这些变量使用跨区域推理配置文件 ID(带 us. 前缀)。不设置 ANTHROPIC_DEFAULT_OPUS_MODEL 时,Bedrock 上的 opus 别名会解析为 Opus 4.6。将其设置为 Opus 4.7 ID 即可使用最新模型。如果使用不同区域前缀或应用推理配置文件,请相应调整。当前模型 ID 和历史 ID 参见 Models overview。
未设置固定变量时的默认模型:
| 模型类型 | 默认值 |
|---|---|
| 主模型 | us.anthropic.claude-sonnet-4-5-20250929-v1:0 |
| 小型/快速模型 | us.anthropic.claude-haiku-4-5-20251001-v1:0 |
自定义模型设置:
bash
# 使用推理配置文件 ID
export ANTHROPIC_MODEL='global.anthropic.claude-sonnet-4-6'
export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'
# 使用应用推理配置文件 ARN
export ANTHROPIC_MODEL='arn:aws:bedrock:us-east-2:your-account-id:application-inference-profile/your-model-id'
# 可选:禁用提示词缓存
export DISABLE_PROMPT_CACHING=1将多个模型版本映射到推理配置文件
如果组织需要在 /model 选择器中暴露同一模型家族的多个版本(各自路由到独立的应用推理配置文件 ARN),使用设置文件的 modelOverrides:这个例子将四个 Opus 版本映射到独立的 ARN,让用户可以在不同版本间切换,而不会绕过组织的应用推理配置文件:
json
{
"modelOverrides": {
"claude-opus-4-7": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-47-prod",
"claude-opus-4-6": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-46-prod",
"claude-opus-4-5-20251101": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-45-prod",
"claude-opus-4-1-20250805": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-41-prod"
}
}启动模型检查
Claude Code v2.1.94+ 在 Bedrock 配置下启动时,会验证目标模型是否可在你的账户中访问:
- 如果固定的版本比当前默认版本旧,且你的账户可以调用新版本,Claude Code 会提示更新固定——确认后写入用户设置文件并重启
- 如果未固定模型且当前默认版本不可用,当前会话回退到上一版本并显示提示(不持久保存)
- 指向应用推理配置文件 ARN 的固定跳过此检查(由管理员管理)
IAM 配置
为 Claude Code 创建包含必要权限的 IAM 策略:
json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowModelAndInferenceProfileAccess",
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock:InvokeModelWithResponseStream",
"bedrock:ListInferenceProfiles"
],
"Resource": [
"arn:aws:bedrock:*:*:inference-profile/*",
"arn:aws:bedrock:*:*:application-inference-profile/*",
"arn:aws:bedrock:*:*:foundation-model/*"
]
},
{
"Sid": "AllowMarketplaceSubscription",
"Effect": "Allow",
"Action": [
"aws-marketplace:ViewSubscriptions",
"aws-marketplace:Subscribe"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:CalledViaLast": "bedrock.amazonaws.com"
}
}
}
]
}如需更严格的权限控制,可将 Resource 限制为特定推理配置文件 ARN。详情参见 Bedrock IAM 文档。
1M Token 上下文窗口
Claude Opus 4.7、Opus 4.6 和 Sonnet 4.6 在 Amazon Bedrock 上支持 1M token 上下文窗口。Claude Code 选中 1M 模型变体时自动启用扩展上下文。登录向导(/setup-bedrock)在固定模型时提供 1M 上下文选项。要为手动固定的模型启用 1M 上下文,在模型 ID 后追加 [1m]。详情参见模型配置。
AWS Guardrails
通过 Amazon Bedrock Guardrails 为 Claude Code 实施内容过滤。在控制台创建 Guardrail 并发布版本后,在设置文件中添加 Guardrail 请求头:
json
{
"env": {
"ANTHROPIC_CUSTOM_HEADERS": "X-Amzn-Bedrock-GuardrailIdentifier: your-guardrail-id\nX-Amzn-Bedrock-GuardrailVersion: 1"
}
}如果使用跨区域推理配置文件,需在 Guardrail 上启用 Cross-Region inference。
Mantle 端点
Mantle 是通过原生 Anthropic API 形状而非 Bedrock Invoke API 服务 Claude 模型的 Amazon Bedrock 端点,使用相同的 AWS 凭据和 IAM 权限。
启用 Mantle
凭据配置完成后,设置 CLAUDE_CODE_USE_MANTLE 路由请求到 Mantle 端点:
bash
export CLAUDE_CODE_USE_MANTLE=1
export AWS_REGION=us-east-1Claude Code 根据 AWS_REGION 构建端点 URL。如需覆盖(自定义端点或网关),设置 ANTHROPIC_BEDROCK_MANTLE_BASE_URL。在 Claude Code 内运行 /status 确认——provider 行显示 Amazon Bedrock (Mantle) 表示 Mantle 已激活。
选择 Mantle 模型
Mantle 使用 anthropic. 前缀且无版本后缀的模型 ID,例如 anthropic.claude-haiku-4-5。可用模型取决于你的账户权限。联系 AWS 账户团队申请访问白名单模型。
bash
claude --model anthropic.claude-haiku-4-5同时运行 Mantle 和 Invoke API
同时设置 CLAUDE_CODE_USE_BEDROCK 和 CLAUDE_CODE_USE_MANTLE 可让同一会话调用两个端点——anthropic. 格式的模型 ID 路由到 Mantle,其他 ID 走 Bedrock Invoke API:
bash
export CLAUDE_CODE_USE_BEDROCK=1
export CLAUDE_CODE_USE_MANTLE=1在设置文件的 availableModels 中列出 Mantle 模型,使其出现在 /model 选择器中:
json
{
"availableModels": ["opus", "sonnet", "haiku", "anthropic.claude-haiku-4-5"]
}两端点同时激活时,/status 显示 Amazon Bedrock + Amazon Bedrock (Mantle)。
通过网关路由 Mantle
如果组织通过集中 LLM 网关路由模型流量(服务端注入 AWS 凭据),可禁用客户端认证,让 Claude Code 发送请求时不带 SigV4 签名或 x-api-key 头:
bash
export CLAUDE_CODE_USE_MANTLE=1
export CLAUDE_CODE_SKIP_MANTLE_AUTH=1
export ANTHROPIC_BEDROCK_MANTLE_BASE_URL=https://your-gateway.example.comMantle 环境变量
| 变量 | 说明 |
|---|---|
CLAUDE_CODE_USE_MANTLE | 启用 Mantle 端点(设为 1 或 true) |
ANTHROPIC_BEDROCK_MANTLE_BASE_URL | 覆盖默认 Mantle 端点 URL |
CLAUDE_CODE_SKIP_MANTLE_AUTH | 跳过客户端认证(代理场景) |
ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION | 覆盖 Haiku 类模型的 AWS 区域(与 Bedrock 共用) |
故障排查
使用 SSO 和企业代理时的认证循环
如果使用 AWS SSO 时浏览器标签页反复弹出,从设置文件中删除 awsAuthRefresh 设置。这通常由企业 VPN 或 TLS 检查代理中断 SSO 浏览器流程引起,导致 Claude Code 不断重试。在此类网络环境中,建议在启动 Claude Code 前手动运行 aws sso login,而不是依赖 awsAuthRefresh。
区域问题
- 检查模型可用性:
aws bedrock list-inference-profiles --region your-region - 切换到支持的区域:
export AWS_REGION=us-east-1 - 考虑使用推理配置文件实现跨区域访问
如果遇到 "on-demand throughput isn't supported" 错误,将模型指定为推理配置文件 ID。
Claude Code 使用 Bedrock Invoke API,不支持 Converse API。
Mantle 端点错误
/status没有显示Amazon Bedrock (Mantle):确认变量已在启动claude的 Shell 中导出,或在设置文件的env块中设置403错误且凭据有效:账户没有访问所请求模型的权限,联系 AWS 账户团队申请400错误且包含模型 ID:该模型不在 Mantle 上提供(Mantle 有独立的模型列表,推理配置文件 ID 如us.anthropic.claude-sonnet-4-6在 Mantle 不适用)
相关资源
- Bedrock 文档
- Bedrock 定价
- Bedrock 推理配置文件
- 模型配置 — 环境变量完整列表
- 环境变量 — 完整参考
常见问题
Q: Claude Code 使用 Bedrock 时需要哪些最低 IAM 权限?
至少需要 bedrock:InvokeModel、bedrock:InvokeModelWithResponseStream 和 bedrock:ListInferenceProfiles,Resource 指向 inference-profile/*、application-inference-profile/* 和 foundation-model/*。
Q: 为什么要固定 Bedrock 模型版本?
如果使用模型别名(sonnet/opus/haiku)而不固定具体版本,Anthropic 发布新模型时 Claude Code 可能尝试调用 Bedrock 账户中尚未启用的新版本,导致用户出错。部署给多人使用时必须固定版本。
Q: Mantle 和标准 Bedrock Invoke API 有什么区别?
Mantle 通过原生 Anthropic API 形状服务模型(与直接调用 Anthropic API 格式相同),而 Bedrock Invoke API 使用 Bedrock 特有的 API 形状。两者可以同时启用,Claude Code 根据模型 ID 格式自动路由。