使用 VSCode Claude Code 扩展配合 Bedrock 和 Claude Sonnet 4.5

发布: (2026年1月2日 GMT+8 11:55)
12 min read
原文: Dev.to

Source: Dev.to

Cover image for Using the VSCode Claude Code Extension with Bedrock and Claude Sonnet 4.5

很多人使用 Claude IDE,或 Claude Code VSCode 扩展。遗憾的是,你的提示词和完成内容默认会被用于训练 Claude 模型。[0]

而 AWS Bedrock 则不会使用你的提示词和完成内容来训练任何 AWS 模型,也不会将其提供给第三方。[1]

基于这些原因(隐私、数据主权),我更倾向于在 IDE 中使用 Bedrock 作为大语言模型。今天我们将介绍如何在 VSCode 中设置 Claude Code 扩展并连接 AWS Bedrock,使用 Claude Sonnet 4.5 基础模型。

概览

为了在 VSCode 中使用 Claude Code 扩展配合 Bedrock 和 Claude Sonnet 4.5 模型,我们需要完成以下任务:

  1. 设置 AWS IAM 权限,以允许使用 Bedrock
  2. 安装并配置 Claude Code VSCode 扩展
  3. 集成 AWS 凭证 并配置扩展
  4. 测试 以确保我们的设置正常工作

我们将使用 Terraform 来创建 AWS IAM 用户和策略(也可以通过 AWS 控制台完成此操作)。随后将所有内容连接起来,并验证其按预期运行。

不幸的缺失功能以及 Claude Code 扩展的 Bug/回归

AWS Bedrock 通过其 SDK 支持生成短期 API 令牌。[2]

Claude Code 支持两种自动刷新 AWS 凭证的方法,但 Bedrock API 令牌并不在其支持范围内

如果它支持此功能,从安全角度来看将是最佳方案。 令牌将在 12 小时后过期,扩展会在需要时自动刷新它们。

实际上,Claude Code 只支持:

刷新方式实际支持的内容
awsAuthRefreshAWS SSO(AWS 身份中心)
awsCredentialsExport导出的 IAM 凭证

[3]

此遗漏是 Claude Code 开发团队的一个不佳决定——或至少是一次疏忽。

更为严重的问题是 awsCredentialsExport 刷新方式 在文档中标记为可用,但实际上不可用。无论是回归、Bug 还是从未实现的功能,我在数小时的排查后(包括尝试在使用有效 AWS 配置文件的情况下与 Claude Code VSCode 扩展对话;它也未能提供解决方案)都无法使其工作。

此外,使用 Claude Code 设置文件(~/.claude/settings.json)也无效,我只能通过 VSCode 设置 UI 完成所有配置。

原因如下:

  • 对个人账户使用 AWS 身份中心显得有些大材小用
  • Claude Code 不支持在其中刷新 Bedrock API 令牌
  • awsCredentialsExport 方法已损坏

因此,我只能接受最低限度的方案:在扩展中 使用 AWS 配置文件。这并不理想,因为它依赖于长期有效的 IAM 用户凭证(访问密钥 + 秘密访问密钥),但在当前 Claude Code VSCode 扩展的状态下,这是唯一可行的办法。

创建 IAM 用户和 Bedrock 权限

创建一个 IAM 用户并附加一个授予所需 Bedrock 权限的策略。下面是一个 Terraform 示例,你可以直接应用(或在 AWS 控制台手动创建相同的资源)。

resource "aws_iam_user" "bedrock_user" {
  name = "bedrock-user"
}

resource "aws_iam_access_key" "bedrock" {
  user = aws_iam_user.bedrock_user.name
}

data "aws_iam_policy_document" "bedrock" {
  statement {
    effect = "Allow"
    actions = [
      "bedrock:InvokeModel",
      "bedrock:ListFoundationModels",
      "bedrock:ListInferenceProfiles",
      "bedrock:InvokeModelWithResponseStream",
      # "bedrock:CallWithBearerToken" # required if using Bedrock API token (not used here)
    ]
    resources = ["*"]
  }

  statement {
    effect = "Allow"
    actions = [
      "aws-marketplace:ViewSubscriptions",
      "aws-marketplace:Subscribe"
    ]
    resources = ["*"]
    condition {
      test     = "StringEquals"
      variable = "aws:CalledViaLast"
      values   = ["bedrock.amazonaws.com"]
    }
  }
}

resource "aws_iam_user_policy" "bedrock" {
  name   = "bedrock"
  user   = aws_iam_user.bedrock_user.name
  policy = data.aws_iam_policy_document.bedrock.json
}

设置 AWS 配置文件

我通常使用 aws-vault 来管理短期令牌,但由于 Claude Code 无法刷新 Bedrock 令牌,我们将回退到使用带有长期 IAM 用户的经典 ~/.aws/credentials 文件。

  1. 为刚刚创建的 IAM 用户 创建访问密钥(通过 AWS 控制台 → 安全凭证创建访问密钥)。
    Create access key screenshot

  2. 将访问密钥 ID 和秘密访问密钥 复制到安全的地方(例如密码管理器)。

  3. ~/.aws/credentials(或如果你喜欢可以使用 ~/.aws/config)添加配置文件。用你的实际密钥替换占位符:

    [bedrock-profile]
    aws_access_key_id     = YOUR_ACCESS_KEY_ID
    aws_secret_access_key = YOUR_SECRET_ACCESS_KEY
    region                = us-east-1   # 或你计划使用的区域
  4. (可选)验证配置文件是否可用:

    aws sts get-caller-identity --profile bedrock-profile

    你应该会看到一个与已创建的 bedrock-user 匹配的 ARN。

Source:

安装并配置 Claude Code VSCode 扩展

  1. 安装扩展

    • 打开 VSCode → 扩展 (Ctrl+Shift+X) → 搜索 Claude Code → 点击 Install
  2. 打开 VSCode 设置 UIFile → Preferences → SettingsCtrl+,)。

  3. 搜索 “Claude Code” 以显示扩展的配置选项。

  4. 填写必填字段(根据实际情况替换相应值):

    设置项
    claude.apiProviderbedrock
    claude.bedrockModelIdanthropic.claude-3-5-sonnet-20240620-v1:0 (或您想使用的确切模型 ID)
    claude.awsProfilebedrock-profile
    claude.awsRegionus-east-1(或您选择的区域)
    claude.awsAuthRefresh(留空 – 我们不使用 SSO)
    claude.awsCredentialsExport(留空 – 暂未实现功能)

    注意: 该扩展还会查找 ~/.claude/settings.json 文件,但根据我的经验该文件会被忽略。所有配置必须通过 VSCode 的设置 UI 或 settings.json 完成。

  5. 保存设置 并重新加载 VSCode(Ctrl+Shift+P → Reload Window)。

测试设置

创建一个新文件(例如 test.py),并打开 Claude Code 侧边栏(通常出现在右侧)。尝试一个简单的提示,例如:

Write a Python function that returns the factorial of a given integer.

如果一切配置正确,Claude 应该会返回生成的代码。您还可以通过检查 CloudWatch 日志中的 InvokeModel 调用来验证请求是否已发送到 Bedrock(可选)。

回顾与安全考虑

步骤您的操作安全影响
Created IAM user创建 IAM 用户
仅授予 Bedrock 操作的受限策略
应用了最小权限原则
Stored long‑lived credentials存储长期凭证
将访问密钥/秘密添加到 ~/.aws/credentials
更高风险 – 密钥永不过期
Configured VSCode extension配置 VSCode 扩展
使用静态配置文件,未自动刷新
与上述相同的风险
Tested已测试
确认 Bedrock 模型可用
✅ 功能正常

因为 Claude Code 无法自动刷新 Bedrock API 令牌,你只能依赖长期 IAM 凭证。如果需要更严格的安全性:

  • 定期轮换访问密钥(例如,每 30 天一次)。
  • 使用 AWS IAM 权限边界服务控制策略 进一步限制使用。
  • 考虑创建一个专用的 IAM 角色,与用户建立信任关系,并从扩展中假设该角色(需要自定义脚本,Claude Code 目前不原生支持)。

TL;DR

  1. 创建一个具有 Bedrock 权限的 IAM 用户(使用 Terraform 或控制台)。
  2. 生成访问密钥并将其添加到 ~/.aws/credentials 中的某个配置文件(例如 bedrock-profile)。
  3. 在 VSCode 中安装 Claude Code 并配置为使用 bedrock 提供程序、所需的模型 ID,以及你刚创建的配置文件。
  4. 重新加载 VSCode 并测试提示——现在应该能通过 AWS Bedrock 获得 Claude Sonnet 4.5 的响应。

在 Claude Code 为短期 Bedrock 令牌提供适当支持或修复 awsCredentialsExport 刷新方法之前,使用静态 AWS 配置文件是唯一可行的方案。请定期轮换凭证以降低安全风险。

配置 AWS 凭证

通过运行以下命令创建(或编辑)~/.aws/credentials 文件:

aws configure --profile YOUR_AWS_PROFILE_NAME

系统会提示输入 AWS Access KeySecret Access Key。这些值会存储在你指定的配置文件名称下(请谨慎选择!)。

启用 Bedrock Claude Sonnet 4.5 并验证访问

  1. 在创建 IAM 用户和策略并设置配置文件后,登录 AWS 控制台。
  2. 选择您通常使用的 AWS 区域。注意: Bedrock 基础模型并非在所有区域均可用。
    • 已测试的区域:us-west-2us-east-1us-east-2
  3. Anthropic 要求首次使用的客户在调用模型前提交用例详情(每个账户或每个组织的管理账户一次)。请参阅 AWS Bedrock 模型访问文档
  4. 在 AWS 控制台中,导航至 Bedrock → Chat/Text Playground,选择 Anthropic Claude Sonnet 4.5,并填写对话框以启用该基础模型。

安装并配置 VS Code

通过 CLI 安装扩展

code --install-extension anthropic.claude-code

确认你的推理配置文件 ARN

aws bedrock list-inference-profiles \
    --region us-west-2 \
    --profile YOUR_AWS_PROFILE_NAME \
    --no-cli-pager | jq '.inferenceProfileSummaries
        | .[]
        | select(.inferenceProfileId | match("us.anthropic.claude-sonnet-4-5-20250929-v1:0"))
        | .inferenceProfileArn'

注意: 上述命令假设你使用的是美国地区。请根据需要调整区域和配置文件。

将设置添加到 settings.json

编辑你的 VS Code 用户设置文件(通常位于 ~/.config/Code/User/settings.json),并添加以下配置:

{
  "claudeCode.selectedModel": "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
  "claudeCode.environmentVariables": [
    {
      "name": "AWS_PROFILE",
      "value": "YOUR_AWS_PROFILE_NAME"
    },
    {
      "name": "AWS_REGION",
      "value": "YOUR_AWS_REGION_FROM_ABOVE"
    },
    {
      "name": "BEDROCK_MODEL_ID",
      "value": "INFERENCE_PROFILE_ARN_FROM_ABOVE"
    },
    {
      "name": "CLAUDE_CODE_USE_BEDROCK",
      "value": "1"
    }
  ],
  "claudeCode.disableLoginPrompt": true
}

它工作了吗?

  1. 如果 VS Code 已经在运行,请重新启动。
  2. 打开 Claude 窗口,输入问题或请求,你应该会看到类似下面截图的成功响应:

Claude Code response screenshot

结论

我们已经让它工作了!Claude Code VS Code 扩展在 AWS IAM 凭证处理方面仍有一些粗糙之处,但目前可以使用。当短期凭证得到完全支持时,我会重新审视该扩展并反馈。

资源

  • Vasko Kelkocev, Configuring Claude Code Extension with AWS Bedrock (and How You Can Avoid My Mistakes)Link
    注: 该博客(2025年10月)在我使用时已经过时;我需要添加 bedrock:InvokeModelWithResponseStream 权限并微调一些配置细节。谢谢,Vasko!
Back to Blog

相关文章

阅读更多 »

你需要理解 AI 生成的代码吗?

第3部分,共4部分:Agentforce Vibes 系列 辩论始于我关注的一个 Salesforce 开发者的 Slack 频道。有人请求 Agentforce Vibes 构建一个 tr...

Proteus:AI 原生的多模态创作编辑器

概述:我正在构建 Proteus,一个开源的多模态编辑器,类似 Figma 与 Notion 的结合,从第一天起即为 AI 原生。AI 编写了大部分代码,而我专注于……