# 学完 Claude Bedrock 课程，先别急着向 AWS 客户承诺

> 基础知识可以直接用，但服务端工具、MCP 连接器和批处理在 Amazon Bedrock 上并不相同。

原文: https://fdetimes.net/zh/books-courses/claude-amazon-bedrock-course-limits/

Anthropic 做这门课，并不是为初学者准备的。Anthropic Academy 上 **Claude with Amazon Bedrock** 的课程主页（anthropic.skilljar.com/claude-in-amazon-bedrock）写明，课程出自一个专为 AWS 设立的认证项目，是面向 AWS 员工的首个同类培训。

换句话说，这门课首先是为 AWS 内部人员设计的。

不过这里有个陷阱。Anthropic 自己的文档承认，通过 Bedrock 调用 Claude 与直接调用 Claude API 存在一些差异。如果学完课程却不清楚差异在哪里，很容易向客户承诺一个对方环境里根本没有的功能。

## 谁该学，按什么顺序学？

课程页面要求熟练使用 Python，并对 AWS 服务和 Amazon Bedrock 有基本了解。如果从没打开过 AWS 控制台，不要从这门课入手。Academy 现在位于 academy.claude.com，主推 Anthropic 教育团队制作的免费课程，可以先在那里学好 Claude 的基础知识。

课程页面没有给出发布日期；页脚的 2026 版权行只是页面年份，并不能说明课程何时上线。

由于无法确定课程的编写时间，其内容可能沿用的是旧版 Bedrock 文档，而 Anthropic 此后又增加了新的集成路径。

比较合理的顺序是：先通过课程学会用 boto3 调用、工具调用、Agent、MCP 和提示缓存。

然后阅读 Anthropic 的“Claude on Amazon Bedrock”页面，以及 AWS Bedrock User Guide 中的 Messages API 指南，弄清哪些部分的行为并不完全一致。

## 课上讲的工具，客户账号里未必有

在课程中，工具调用、Agent 和 MCP 都属于通用的 Claude 知识。对于旧版 Bedrock 集成（InvokeModel/Converse），Anthropic 文档列出了大量不可用的功能：代码执行、网页搜索、网页抓取等服务端工具；Agent Skills、MCP 连接器、程序化工具调用等 Agent 基础设施；以及 Message Batches、Models、Admin、Usage and Cost 等端点。

设想一个保险客户，想要一个能读取案卷、搜索网页并运行计算代码的 Agent。在 Claude API 上，网页搜索和代码执行都是现成的服务端工具，当然 Agent 本身仍要自己设计并仔细测试。

在旧版 Bedrock 上，这两项都得自己写成客户端工具，批处理也必须走 Bedrock 自己的机制，工作量估算可能因此严重失准。

提示缓存也类似。Bedrock 支持缓存，但不支持通过顶层 `cache_control` 字段开启的自动模式，必须显式设置缓存断点。

**要点:** 学会一个 Claude 功能还不够，还要知道客户的平台是否支持它。

## 模型 ID 和区域是架构决策

Bedrock 上的新模型通常要通过推理配置文件（inference profile，即跨区域推理）调用，而不是用基础模型 ID。这是 AWS 特有的运维细节，把演示迁移到客户账号时应首先检查。

区域也不只是技术问题。需要数据驻留的客户必须使用区域端点，而 Anthropic 文档写明，区域端点比全球端点贵 10%。如果客户是一家必须把数据留在单一区域的银行，应当从一开始就把这个数字写进方案，而不是等到账单出来。

## AWS 文档里的运维陷阱

课程教的是通过 boto3 调用，但 AWS 推荐用 Converse API 处理消息，而不是直接用 InvokeModel。客户代码里两种写法都会遇到，所以两种都要能读懂。

最值得记住的陷阱是：AWS SDK 客户端默认 1 分钟超时，而一次长推理最长可以运行 60 分钟。直接后果是，在默认配置下，任何运行超过 1 分钟的请求都等不到结果；AWS 建议调高读取超时。

下面的代码展示了同一个调用在迁移到 Bedrock 前后的写法。ID 均为占位符，实际工作中应从客户的 AWS 账号获取。

```python
# 迁移前：直接调用 Claude API
import anthropic

client = anthropic.Anthropic()
resp = client.messages.create(
    model="<model-id>",
    max_tokens=1024,
    messages=[{"role": "user", "content": "总结这份案卷"}],
)

# 迁移后：通过 Bedrock 使用 Converse API 调用
import boto3
from botocore.config import Config

bedrock = boto3.client(
    "bedrock-runtime",
    config=Config(read_timeout=3600),  # 从默认的 1 分钟调高到 60 分钟
)
resp = bedrock.converse(
    modelId="<inference-profile-id>",  # 使用推理配置文件，而不是基础模型 ID
    messages=[{"role": "user", "content": [{"text": "总结这份案卷"}]}],
    inferenceConfig={"maxTokens": 1024},
)
```

需要留意的三处是：`Config(read_timeout=...)`、指向推理配置文件的 `modelId`，以及 Converse 列表形式的 `content` 结构。从第一天起就把这三处写进项目模板。

Anthropic 还指出了另外两条路径：新的“Claude in Amazon Bedrock”Messages API 端点，以及“Claude Platform on AWS”。后者由 Anthropic 运营，通过 AWS Marketplace 计费，新功能通常在发布当天就能用上。旧版文档页标注为“Opus 4.6 and earlier”。确定架构之前，先问清客户用的是哪条路径。

## 把课程变成求职优势

在简历上，课程名称远不如实际工作有说服力。比如这样一句：“通过 Converse API 将 Claude 应用从直接调用 API 迁移到 Bedrock，使用推理配置文件，为长推理配置读取超时，并用客户端工具替换服务端工具”，就能说明你碰过真正的难点。

如果应聘的岗位服务的是运行在 AWS 上的客户，面试时就带上这个例子，逐一讲清你做过的每一处改动。

课程让你能和客户的 AWS 团队说同一种语言；而那份讲差异的文档页，能让你在第一次会议上不做错误承诺。

**本周动手试试:**

- 拿一个基于 Claude API 做的 Claude 演示，用 Converse API 和推理配置文件迁移到 Bedrock，记录下每一处必须做的改动。
- 为 AWS 客户写一页五列检查清单：客户想要的功能、Bedrock 是否支持、替代方案、区域、超时。
- 分别用默认读取超时和调高后的超时发送一个长推理请求，亲眼看看错误是怎样出现的。

## 信源

- [Claude with Amazon Bedrock – Anthropic Academy](https://anthropic.skilljar.com/claude-in-amazon-bedrock)

- [Claude Academy](https://academy.claude.com/)

- [Claude on Amazon Bedrock (Opus 4.6 and earlier)](https://platform.claude.com/docs/en/build-with-claude/claude-on-amazon-bedrock-legacy)

- [Anthropic Claude Messages API – Amazon Bedrock User Guide](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-anthropic-claude-messages.html)
