AWS Bedrock 调用大模型:API 密钥与 Python 请求示例

AWS Bedrock 没有传统意义上的“API 密钥”输入框,调用权限由 IAM 控制。
你需要先在 Bedrock 控制台为账号开通目标模型的访问权限,再创建具备 bedrock:InvokeModel 权限的 IAM 用户,最后用 boto3 携带访问密钥调用。
本文按这个顺序展开,覆盖开通、配置、调用和排查。

开通模型访问与准备 IAM 用户

进入 AWS 控制台,切换到支持 Bedrock 的区域(例如 us-east-1 或 us-west-2),搜索并打开 Amazon Bedrock。
在左侧导航找到 Model access,点击 Manage model access,勾选需要使用的模型(例如 Anthropic Claude 系列),提交申请。
状态从 Available 变为可调用前,请勿直接发请求。

接着创建调用身份,不建议直接使用根账号密钥:

  1. 打开 IAM 控制台,进入 Users → Create user,填写用户名。
  2. 在权限步骤选择 Attach policies directly,搜索并勾选 AmazonBedrockFullAccess(生产环境应自定义最小权限策略,至少包含 bedrock:InvokeModel)。
  3. 创建完成后进入用户详情,打开 Security credentials → Create access key,用途选 Application running outside AWS,保存 Access key ID 和 Secret access key。

将密钥写入本机环境变量,避免硬编码到代码里:

export AWS_ACCESS_KEY_ID="你的AccessKeyID"
export AWS_SECRET_ACCESS_KEY="你的SecretAccessKey"
export AWS_DEFAULT_REGION="us-east-1"

安装 SDK 并发送第一个请求

Bedrock 的调用入口是 boto3 的 bedrock-runtime 客户端。
先安装依赖:

python3 -m pip install --upgrade boto3

下面以 Anthropic Claude 模型为例,发送一条文本请求。
模型 ID 请以控制台 Model access 中显示的为准,不同模型和版本 ID 不同,不要照抄旧文章里的 ID:

import boto3
import json

client = boto3.client("bedrock-runtime")

body = {
    "anthropic_version": "bedrock-2023-05-31",
    "max_tokens": 256,
    "messages": [
        {"role": "user", "content": "用一句话解释什么是对象存储"}
    ]
}

response = client.invoke_model(
    modelId="替换为控制台显示的模型ID",
    contentType="application/json",
    accept="application/json",
    body=json.dumps(body)
)

result = json.loads(response["body"].read())
print(result["content"][0]["text"])

预期结果是终端打印出模型生成的文本。
如果返回结构不是 content 数组,说明该模型的请求体格式不同,需要按对应模型的请求格式调整 body。

常见报错怎么定位

调用失败时先看异常类型和错误码,再逐项排除:

  • AccessDeniedException:IAM 用户缺少 bedrock:InvokeModel 权限,或密钥属于其他账号。到 IAM 用户权限页确认策略已附加,并检查环境变量是否指向正确密钥。
  • ResourceNotFoundException 或模型不可用:模型 ID 拼写错误,或该模型未在当前区域开通。回到 Bedrock 控制台确认区域和 Model access 状态。
  • ValidationException:请求体字段不符合模型要求,常见于 max_tokens 缺失、messages 格式错误或 anthropic_version 不匹配。对照模型文档调整 JSON。
  • 超时或连接失败:检查本机网络能否访问 bedrock-runtime.<区域>.amazonaws.com,公司网络代理可能需要放行该域名。

另外,区域不一致是最容易被忽略的问题:控制台在 us-east-1 开通了模型,但环境变量写成了 us-west-2,请求就会找不到模型。
保持控制台区域、AWS_DEFAULT_REGION 和客户端区域三者一致。

调用前的检查清单

正式接入业务前,可以按下面几项确认:

  • 模型访问状态为可用,且与调用区域一致。
  • 使用独立 IAM 用户或角色,密钥不写入代码仓库,生产环境优先使用 IAM 角色而非长期密钥。
  • 请求体按目标模型格式构造,先用小 max_tokens 验证通路再调大。
  • 对限流和超时做重试与日志记录,记录 modelId、区域和错误码,便于排查。

如果需要在服务器上长期运行调用脚本,记得把环境变量写入 systemd 服务或密钥管理服务中,而不是放在 shell 历史里。
按以上步骤执行后,多数调用问题都能定位到权限、区域或请求体这三类原因。

分享到:
上一篇
Azure OpenAI 密钥配置与 Python 调用示例
下一篇
Google Vertex AI 使用教程:从启用 API 到 Python 调用与排错
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意