AWS Bedrock
AWS Bedrock
Section titled “AWS Bedrock”如果你的公司在 AWS 上深耕多年,账号体系、SSO、审计、成本都跑在 AWS——那让 Claude Code 走 AWS Bedrock 是最顺的:模型调用不离开 AWS 账号,认证复用 AWS Identity Center,CI 里用 OIDC 短期凭证,账单和现有 Bedrock 用量一起出。
这一篇讲清楚 Bedrock 模式怎么开、怎么认证、怎么跳过认证接网关、怎么在 GitHub Actions 里跑。
一句话开启 Bedrock
Section titled “一句话开启 Bedrock”export CLAUDE_CODE_USE_BEDROCK=1设上这个环境变量,Claude Code 就把模型调用切到 Bedrock,不再走 Anthropic 公网 API。剩下的工作就是让 Claude Code 能认证到 Bedrock。
AWS 认证:四种走法
Section titled “AWS 认证:四种走法”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 |
方式一:AWS SSO + awsAuthRefresh
Section titled “方式一:AWS SSO + awsAuthRefresh”最贴近开发者日常。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 脚本
Section titled “方式二:awsCredentialExport 脚本”适合脚本/自动化场景。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 网关
Section titled “方式三:跳过认证接 LLM 网关”如果你的公司搭了统一 LLM 网关(自建或第三方),所有模型调用都走网关、由网关自己认证 Bedrock——那 Claude Code 这一层就不必再认证一次:
export CLAUDE_CODE_SKIP_BEDROCK_AUTH=1配上 CLAUDE_CODE_SKIP_BEDROCK_AUTH=1,Claude Code 跳过 Bedrock 自身的认证步骤,把请求直接送到你配置的网关端点。详见 网络与 LLM 网关。
方式四:GitHub Actions OIDC
Section titled “方式四:GitHub Actions OIDC”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 Bedrockon: 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注入的环境变量认证,不需要awsAuthRefresh或awsCredentialExport。
OIDC 的好处是没有长期凭证可泄——每次 job 拿到的是几小时甚至几分钟的短期 token,job 结束就失效。
小模型走哪个 Region
Section titled “小模型走哪个 Region”Claude Code 内部除了主模型,还会调一个小快模型做轻量任务(比如对话总结、命令建议)。这个小模型默认也走 Bedrock,但可以单独指定 Region:
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。