跳转到内容

AWS Bedrock

如果你的公司在 AWS 上深耕多年,账号体系、SSO、审计、成本都跑在 AWS——那让 Claude Code 走 AWS Bedrock 是最顺的:模型调用不离开 AWS 账号,认证复用 AWS Identity Center,CI 里用 OIDC 短期凭证,账单和现有 Bedrock 用量一起出。

这一篇讲清楚 Bedrock 模式怎么开、怎么认证、怎么跳过认证接网关、怎么在 GitHub Actions 里跑。

Terminal window
export CLAUDE_CODE_USE_BEDROCK=1

设上这个环境变量,Claude Code 就把模型调用切到 Bedrock,不再走 Anthropic 公网 API。剩下的工作就是让 Claude Code 能认证到 Bedrock

Bedrock 模式下,认证方式按场景分四种:

方式 适用 关键配置
AWS SSO + awsAuthRefresh 脚本 开发者本机日常 AWS_BEARER_TOKEN_BEDROCK + awsAuthRefresh
awsCredentialExport 脚本 脚本/自动化 awsCredentialExport 输出 JSON 凭证
跳过认证(接 LLM 网关) 走企业网关统一管控 CLAUDE_CODE_SKIP_BEDROCK_AUTH=1
GitHub Actions OIDC CI id-token: write + aws-actions/configure-aws-credentials

最贴近开发者日常。awsAuthRefresh 是一个刷新 token 的小脚本,Claude Code 启动时调它,让它跑 aws sso login --profile myprofile 把 bearer token 拿到手。

settings.json 里这样配:

{
"env": {
"CLAUDE_CODE_USE_BEDROCK": "1",
"AWS_BEARER_TOKEN_BEDROCK": "1",
"awsAuthRefresh": "aws sso login --profile myprofile"
}
}

读这段配置:

  • CLAUDE_CODE_USE_BEDROCK=1:切到 Bedrock。
  • AWS_BEARER_TOKEN_BEDROCK=1:告诉 Claude Code 用 bearer token 认证。
  • awsAuthRefresh:刷新脚本,Claude Code 会调它,它跑 aws sso login --profile myprofile,输出新的 token。

效果:开发者打开 Claude Code,自动走 AWS SSO 登录,token 过期自动刷新,全程不用管 AWS 凭证。

适合脚本/自动化场景。awsCredentialExport 是一个导出凭证 JSON 的小脚本,Claude Code 调它,它返回形如下面的 JSON:

{
"accessKeyId": "AKIA...",
"secretAccessKey": "...",
"sessionToken": "...",
"expiration": "2026-07-01T12:00:00Z"
}

settings.json

{
"env": {
"CLAUDE_CODE_USE_BEDROCK": "1",
"awsCredentialExport": "/usr/local/bin/export-aws-creds.sh"
}
}

/usr/local/bin/export-aws-creds.sh 自己写,比如从 vault、SSO、AssumeRole 拿临时凭证,按上面 JSON 格式输出。Claude Code 凭证快过期时再调一次脚本刷新。

如果你的公司搭了统一 LLM 网关(自建或第三方),所有模型调用都走网关、由网关自己认证 Bedrock——那 Claude Code 这一层就不必再认证一次

Terminal window
export CLAUDE_CODE_SKIP_BEDROCK_AUTH=1

配上 CLAUDE_CODE_SKIP_BEDROCK_AUTH=1,Claude Code 跳过 Bedrock 自身的认证步骤,把请求直接送到你配置的网关端点。详见 网络与 LLM 网关

CI 里跑 Claude Code,不要把长期 AWS 凭证塞进 secret——用 OIDC 短期凭证更安全。GitHub Actions 支持 id-token: write 权限,配合 aws-actions/configure-aws-credentials action,从 GitHub 直接 assume 一个 AWS Role。

.github/workflows/claude-bedrock.yml

name: Claude Code on Bedrock
on:
pull_request:
types: [opened, synchronize]
permissions:
id-token: write # 关键:让 GitHub 发 OIDC token
contents: read
pull-requests: write
jobs:
claude:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Configure AWS credentials via OIDC
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::123456789012:role/claude-code-ci
aws-region: us-west-2
- name: Run Claude Code
env:
CLAUDE_CODE_USE_BEDROCK: "1"
run: |
claude -p "审查这个 PR 的改动,给出改进建议" --output-format json

注意几个要点:

  • permissions.id-token: write 让 GitHub 给你的 job 发 OIDC token。
  • AWS 那边的 Role 要配信任策略,信任 GitHub OIDC provider(token.actions.githubusercontent.com),并按 repo / branch 限定。
  • Role 的权限策略要包含 Bedrock 的 bedrock:InvokeModel
  • CLAUDE_CODE_USE_BEDROCK=1 一开,Claude Code 自动用 configure-aws-credentials 注入的环境变量认证,不需要 awsAuthRefreshawsCredentialExport

OIDC 的好处是没有长期凭证可泄——每次 job 拿到的是几小时甚至几分钟的短期 token,job 结束就失效。

Claude Code 内部除了主模型,还会调一个小快模型做轻量任务(比如对话总结、命令建议)。这个小模型默认也走 Bedrock,但可以单独指定 Region:

Terminal window
export ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION=us-west-2

设上之后,小模型的调用走你指定的 Region。适合那种「主模型 Region 没开小模型权限、想挪到另一个 Region」的场景。

想做的事 设这个
切到 Bedrock CLAUDE_CODE_USE_BEDROCK=1
本机走 AWS SSO AWS_BEARER_TOKEN_BEDROCK=1 + awsAuthRefresh
脚本导出凭证 awsCredentialExport
跳过认证接网关 CLAUDE_CODE_SKIP_BEDROCK_AUTH=1
小模型换 Region ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION=us-west-2
CI 用 OIDC permissions.id-token: write + configure-aws-credentials
  • Region 没开模型访问:Bedrock 默认要手动开模型访问,去 Bedrock console → Model access 启用 Claude。
  • SSO token 过期没刷awsAuthRefresh 脚本必须能正确刷新,否则 Claude Code 会卡在认证失败。
  • OIDC Role 信任策略写错:GitHub OIDC 的 subject 长这样 repo:owner/repo:ref:refs/heads/main,配 trust policy 时要 match 上。
  • 小模型权限缺失:主模型能用但小模型报错,多半是小模型所在 Region 没开权限,配 ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION 挪到开了的 Region。

Bedrock 模式下,你的 Claude Code 依然跑得飞快,只是数据没出 AWS 账号、认证复用了你已有的体系。下一站:GCP Vertex AI