使用 VSCode Claude Code 扩展配合 Bedrock 和 Claude Sonnet 4.5
Source: Dev.to

很多人使用 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 模型,我们需要完成以下任务:
- 设置 AWS IAM 权限,以允许使用 Bedrock
- 安装并配置 Claude Code VSCode 扩展
- 集成 AWS 凭证 并配置扩展
- 测试 以确保我们的设置正常工作
我们将使用 Terraform 来创建 AWS IAM 用户和策略(也可以通过 AWS 控制台完成此操作)。随后将所有内容连接起来,并验证其按预期运行。
不幸的缺失功能以及 Claude Code 扩展的 Bug/回归
AWS Bedrock 通过其 SDK 支持生成短期 API 令牌。[2]
Claude Code 支持两种自动刷新 AWS 凭证的方法,但 Bedrock API 令牌并不在其支持范围内。
如果它支持此功能,从安全角度来看将是最佳方案。 令牌将在 12 小时后过期,扩展会在需要时自动刷新它们。
实际上,Claude Code 只支持:
| 刷新方式 | 实际支持的内容 |
|---|---|
awsAuthRefresh | AWS SSO(AWS 身份中心) |
awsCredentialsExport | 导出的 IAM 凭证 |
此遗漏是 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 文件。
-
为刚刚创建的 IAM 用户 创建访问密钥(通过 AWS 控制台 → 安全凭证 → 创建访问密钥)。

-
将访问密钥 ID 和秘密访问密钥 复制到安全的地方(例如密码管理器)。
-
向
~/.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 # 或你计划使用的区域 -
(可选)验证配置文件是否可用:
aws sts get-caller-identity --profile bedrock-profile你应该会看到一个与已创建的
bedrock-user匹配的 ARN。
Source: …
安装并配置 Claude Code VSCode 扩展
-
安装扩展
- 打开 VSCode → 扩展 (
Ctrl+Shift+X) → 搜索 Claude Code → 点击 Install。
- 打开 VSCode → 扩展 (
-
打开 VSCode 设置 UI(
File → Preferences → Settings或Ctrl+,)。 -
搜索 “Claude Code” 以显示扩展的配置选项。
-
填写必填字段(根据实际情况替换相应值):
设置项 值 claude.apiProviderbedrockclaude.bedrockModelIdanthropic.claude-3-5-sonnet-20240620-v1:0(或您想使用的确切模型 ID)claude.awsProfilebedrock-profileclaude.awsRegionus-east-1(或您选择的区域)claude.awsAuthRefresh(留空 – 我们不使用 SSO) claude.awsCredentialsExport(留空 – 暂未实现功能) 注意: 该扩展还会查找
~/.claude/settings.json文件,但根据我的经验该文件会被忽略。所有配置必须通过 VSCode 的设置 UI 或settings.json完成。 -
保存设置 并重新加载 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
- 创建一个具有 Bedrock 权限的 IAM 用户(使用 Terraform 或控制台)。
- 生成访问密钥并将其添加到
~/.aws/credentials中的某个配置文件(例如bedrock-profile)。 - 在 VSCode 中安装 Claude Code 并配置为使用
bedrock提供程序、所需的模型 ID,以及你刚创建的配置文件。 - 重新加载 VSCode 并测试提示——现在应该能通过 AWS Bedrock 获得 Claude Sonnet 4.5 的响应。
在 Claude Code 为短期 Bedrock 令牌提供适当支持或修复
awsCredentialsExport刷新方法之前,使用静态 AWS 配置文件是唯一可行的方案。请定期轮换凭证以降低安全风险。
配置 AWS 凭证
通过运行以下命令创建(或编辑)~/.aws/credentials 文件:
aws configure --profile YOUR_AWS_PROFILE_NAME
系统会提示输入 AWS Access Key 和 Secret Access Key。这些值会存储在你指定的配置文件名称下(请谨慎选择!)。
启用 Bedrock Claude Sonnet 4.5 并验证访问
- 在创建 IAM 用户和策略并设置配置文件后,登录 AWS 控制台。
- 选择您通常使用的 AWS 区域。注意: Bedrock 基础模型并非在所有区域均可用。
- 已测试的区域:
us-west-2、us-east-1、us-east-2。
- 已测试的区域:
- Anthropic 要求首次使用的客户在调用模型前提交用例详情(每个账户或每个组织的管理账户一次)。请参阅 AWS Bedrock 模型访问文档。
- 在 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
}
它工作了吗?
- 如果 VS Code 已经在运行,请重新启动。
- 打开 Claude 窗口,输入问题或请求,你应该会看到类似下面截图的成功响应:
结论
我们已经让它工作了!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!
