本文面向AWS新用户,系统讲解从AWS账户开户完成后,基于Amazon Bedrock搭建生成式AI应用的全流程,涵盖2026年最新免费额度规则详解、账户安全与权限配置、多场景模型调用实战、轻量化AI应用落地,以及成本管控与故障排查全链路内容。帮助个人开发者、初创团队零门槛上手AWS企业级生成式AI能力,在零成本/低成本前提下完成AI应用的从0到1搭建,全程遵循AWS安全最佳实践与成本最优原则。
第一章 AWS账户开户与前期安全配置
1. 新用户开户全流程与计划选择
AWS 2026年新版免费套餐为新用户提供两种账户计划,开户全程可在AWS官网完成,核心步骤如下:
- 注册入口与基础信息填写:进入AWS全球官网注册页面,输入根用户邮箱与账户名称,完成邮箱验证码验证,设置根用户高强度密码。根用户拥有账户全部权限,仅用于账户管理与高风险操作,日常开发严禁直接使用。
- 账户类型与联系信息填写:选择「个人」或「企业」账户类型,如实填写联系人信息与地址,完成手机号码短信/语音验证。
- 付款方式添加:绑定支持外币支付的信用卡/借记卡,用于账户身份验证;免费计划下,在用户主动升级付费计划前,不会产生任何扣费,所有符合条件的服务消耗优先使用抵扣金抵扣。
- 支持计划选择:默认选择「基本支持计划」(免费),完成注册后等待账户激活,通常数分钟内即可完成,激活成功会收到邮件通知。
- 计划选择核心建议:纯学习与测试场景优先选择「免费计划」,可享受6个月内零扣费保障,抵扣金耗尽或到期后再升级付费计划;有长期开发需求可直接选择付费计划,解锁全部AWS服务访问权限,抵扣金有效期延长至注册后12个月。
2. 账户安全与IAM权限前置配置
AWS安全最佳实践的核心是最小权限原则,开户后需优先完成以下配置,避免安全风险:
- 创建IAM管理员用户:进入IAM控制台,创建独立的管理员用户,勾选「AWS Management Console访问」,设置初始密码;创建管理员用户组,附加 AdministratorAccess 策略,将用户加入该组,后续所有操作均使用IAM用户完成,退出根用户账号。
- 启用MFA多因素认证:为根用户与IAM管理员用户分别启用虚拟MFA(如Google Authenticator),大幅降低账号被盗风险。
- 获取API访问凭证:在IAM用户详情页,创建访问密钥(Access Key ID与Secret Access Key),妥善保管凭证,仅用于本地开发环境与SDK调用,严禁上传至代码仓库。
3. 最高200美元抵扣金全额获取
AWS新用户注册即可获得100美元基础服务抵扣金,完成5项入门任务可额外获得每项20美元、总计100美元的抵扣金,其中包含Amazon Bedrock专属任务,具体如下:
- 基础抵扣金:注册成功后自动到账,可直接用于Bedrock等符合条件的AWS服务;
- 额外抵扣金任务:完成Amazon EC2、RDS、Lambda、Bedrock、Budgets五项入门学习任务,每项完成后10分钟内到账20美元抵扣金,其中Bedrock任务仅需在控制台完成一次提示词提交与模型响应测试即可完成。
第二章 Amazon Bedrock核心能力与2026年免费额度全解析
1. Amazon Bedrock核心优势
Amazon Bedrock是AWS提供的全托管生成式AI服务,无需管理任何基础设施,通过统一API即可调用全球主流大模型,核心优势包括:
- Serverless全托管:无需部署、运维模型实例,按需调用,按token计费,无最低消费承诺;
- 丰富的模型生态:覆盖Amazon Nova、Anthropic Claude、Meta Llama、Mistral、Cohere、Deepseek等主流模型,支持文本生成、多模态理解、向量嵌入、代码生成、Agent编排全场景;
- 企业级安全合规:数据默认不用于模型训练,支持私有网络访问、内容安全防护、加密与权限管控,符合GDPR、HIPAA等全球合规标准;
- 全链路AI开发能力:内置知识库(Knowledge Bases)、提示词管理、模型微调、Guardrails内容防护、Agent编排等功能,一站式完成AI应用开发。
2. 2026年新用户免费额度核心规则
2026年AWS新版免费套餐中,Bedrock无独立的永久免费额度,但新用户的200美元服务抵扣金可全额用于Bedrock服务调用消耗,核心规则如下[5][20]:
- 抵扣金有效期:免费计划下,抵扣金有效期为注册后6个月或抵扣金耗尽(以先到者为准);付费计划下,抵扣金有效期为注册后12个月;
- 抵扣范围:Bedrock所有模型的调用费用、知识库、提示词管理等增值服务费用,均可使用抵扣金全额抵扣;
- 抵扣优先级:账单生成时,优先使用抵扣金抵扣符合条件的服务费用,抵扣金耗尽前不会从绑定的支付方式扣费;
- 额度提醒:抵扣金剩余50%、25%、10%时,AWS会自动发送邮件提醒;免费期到期前15天、7天、2天也会同步提醒,避免意外扣费。
3. 免费额度使用核心注意事项
- 区域限制:Bedrock服务在AWS全球多数区域可用,不同区域的模型支持、定价略有差异,优先选择us-east-1(弗吉尼亚北部)区域,该区域模型最全、定价最低、抵扣金完全适用;中国区域暂不支持Bedrock服务;
- 模型定价差异:不同模型的每千token定价差异较大,入门测试优先选择Amazon Titan Text Lite、Mistral 7B等低成本模型,最大化抵扣金使用时长;
- 免费期到期规则:免费计划到期后,若未升级付费计划,账户将无法继续使用Bedrock等付费服务;升级付费计划后,剩余抵扣金可继续使用至注册后12个月;
- 资源清理:测试完成后,及时删除知识库、微调模型等持久化资源,避免产生持续的存储费用。
第三章 Bedrock调用前置环境与权限配置
1. 控制台模型访问权限启用
Bedrock默认未开启任何模型的访问权限,需先在控制台完成模型访问申请,步骤如下:
- 登录AWS管理控制台,切换至us-east-1区域,搜索并进入「Amazon Bedrock」控制台;
- 左侧导航栏选择「模型访问权限」,点击右上角「编辑模型访问权限」;
- 在模型列表中,勾选需要使用的模型(如Amazon Titan系列、Claude 3 Sonnet、Llama 3系列等),基础测试建议优先勾选Amazon Titan全系列与Claude 3 Haiku(低成本、高性能);
- 点击右下角「保存更改」,提交后立即生效,无需额外审核。
2. IAM权限精细化配置
为IAM用户配置Bedrock最小调用权限,避免过度授权,推荐两种权限配置方案:
- 入门测试方案:为IAM用户附加AWS托管策略 AmazonBedrockFullAccess ,可获得Bedrock服务的全部操作权限,适合快速上手测试;
- 生产级最小权限方案:创建自定义IAM策略,仅开放模型调用权限,示例策略如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock:InvokeModelWithResponseStream"
],
"Resource": "arn:aws:bedrock:us-east-1::foundation-model/*"
}
]
}
将该策略附加到IAM用户/用户组,仅开放模型同步与流式调用权限,符合最小权限原则。
3. 开发环境配置
Bedrock支持AWS CLI、多语言SDK、REST API、OpenAI兼容API多种调用方式,本文以Python SDK(boto3)为核心,环境配置步骤如下:
- AWS CLI安装与配置
- 下载安装对应操作系统的AWS CLI,安装完成后执行 aws --version 验证安装成功;
- 执行 aws configure ,依次输入IAM用户的Access Key ID、Secret Access Key、默认区域(us-east-1)、默认输出格式(json),完成本地凭证配置。
- Python依赖安装
执行以下命令安装所需依赖:
pip install boto3 json python-dotenv streamlit
其中boto3为AWS官方Python SDK,streamlit用于快速搭建Web应用。
4. 可选:OpenAI兼容API配置
Bedrock提供基于Mantle引擎的OpenAI兼容API端点,可直接适配现有OpenAI生态的代码,无需大幅修改,核心配置如下:
- 在Bedrock控制台左侧导航栏选择「OpenAI兼容API」,创建API密钥;
- 配置环境变量:
export OPENAI_API_KEY="创建的Bedrock API密钥"
export OPENAI_BASE_URL="https://bedrock-mantle.us-east-1.api.aws/v1"
- 直接使用OpenAI SDK调用Bedrock模型,示例代码可直接复用现有OpenAI项目,仅需替换模型名称即可。
第四章 Amazon Bedrock模型调用实战
本章提供全场景可直接运行的代码示例,所有示例均基于boto3 SDK,适配2026年最新API接口。
1. 基础文本生成同步调用
同步调用适用于非实时场景,等待模型完整生成响应后返回结果,以Amazon Titan Text Premier模型为例,代码如下:
import boto3
import json
from botocore.exceptions import ClientError
# 创建Bedrock Runtime客户端
bedrock_runtime = boto3.client("bedrock-runtime", region_name="us-east-1")
# 配置模型ID与提示词
model_id = "amazon.titan-text-premier-v1:0"
prompt = "请用3句话介绍AWS Amazon Bedrock服务的核心优势,面向个人开发者"
# 构造模型原生请求体
native_request = {
"inputText": prompt,
"textGenerationConfig": {
"maxTokenCount": 512,
"temperature": 0.7,
"topP": 0.9
}
}
try:
# 调用模型
response = bedrock_runtime.invoke_model(
modelId=model_id,
contentType="application/json",
accept="application/json",
body=json.dumps(native_request)
)
# 解析响应结果
response_body = json.loads(response["body"].read())
generated_text = response_body["results"][0]["outputText"]
print("模型生成结果:\n", generated_text)
except ClientError as e:
print(f"模型调用出错:{e.response['Error']['Message']}")
2. 流式响应调用
流式调用适用于对话机器人等实时交互场景,模型生成内容逐块返回,大幅提升用户体验,以Anthropic Claude 3 Haiku模型为例,代码如下:
import boto3
import json
from botocore.exceptions import ClientError
bedrock_runtime = boto3.client("bedrock-runtime", region_name="us-east-1")
model_id = "anthropic.claude-3-haiku-20240307-v1:0"
# 构造Claude模型请求体
prompt = "请写一篇500字左右的生成式AI入门指南,面向零基础新手"
native_request = {
"anthropic_version": "bedrock-2023-05-31",
"max_tokens": 1024,
"temperature": 0.6,
"messages": [
{
"role": "user",
"content": [{"type": "text", "text": prompt}]
}
]
}
try:
# 调用流式响应接口
response = bedrock_runtime.invoke_model_with_response_stream(
modelId=model_id,
contentType="application/json",
accept="application/json",
body=json.dumps(native_request)
)
# 逐块解析流式响应
print("模型生成结果:\n")
for event in response["body"]:
if "chunk" in event:
chunk_data = json.loads(event["chunk"]["bytes"].decode())
if chunk_data["type"] == "content_block_delta":
print(chunk_data["delta"]["text"], end="", flush=True)
except ClientError as e:
print(f"流式调用出错:{e.response['Error']['Message']}")
3. 多模态模型调用
Bedrock支持多模态模型调用,可实现图片解析、OCR、图表理解等能力,以Claude 3 Sonnet模型为例,实现本地图片解析,代码如下:
import boto3
import json
import base64
from botocore.exceptions import ClientError
bedrock_runtime = boto3.client("bedrock-runtime", region_name="us-east-1")
model_id = "anthropic.claude-3-sonnet-20240229-v1:0"
# 读取本地图片并base64编码
image_path = "test_image.png"
with open(image_path, "rb") as f:
base64_image = base64.b64encode(f.read()).decode("utf-8")
# 构造多模态请求体
prompt = "请详细描述这张图片的内容,并提取图片中的所有文字信息"
native_request = {
"anthropic_version": "bedrock-2023-05-31",
"max_tokens": 2048,
"temperature": 0.5,
"messages": [
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": base64_image
}
},
{
"type": "text",
"text": prompt
}
]
}
]
}
try:
response = bedrock_runtime.invoke_model(
modelId=model_id,
body=json.dumps(native_request)
)
response_body = json.loads(response["body"].read())
print("图片解析结果:\n", response_body["content"][0]["text"])
except ClientError as e:
print(f"多模态调用出错:{e.response['Error']['Message']}")
4. 向量嵌入模型调用
向量嵌入(Embedding)是RAG检索增强生成、语义搜索的核心能力,以Amazon Titan Embedding模型为例,代码如下:
import boto3
import json
from botocore.exceptions import ClientError
bedrock_runtime = boto3.client("bedrock-runtime", region_name="us-east-1")
model_id = "amazon.titan-embed-text-v2:0"
# 待嵌入的文本
input_text = "AWS Amazon Bedrock是全托管生成式AI服务,支持多模型统一API调用"
# 构造请求体
native_request = {
"inputText": input_text,
"dimensions": 1024,
"normalize": True
}
try:
response = bedrock_runtime.invoke_model(
modelId=model_id,
contentType="application/json",
accept="application/json",
body=json.dumps(native_request)
)
response_body = json.loads(response["body"].read())
embedding_vector = response_body["embedding"]
print(f"生成向量维度:{len(embedding_vector)}")
print(f"向量前10位:{embedding_vector[:10]}")
except ClientError as e:
print(f"嵌入模型调用出错:{e.response['Error']['Message']}")
第五章 基于Bedrock快速搭建轻量化AI应用
本章基于Streamlit+Bedrock,10分钟搭建一个可直接运行的智能文档问答助手,完整代码可直接复用,全程使用免费抵扣金覆盖消耗。
1. 应用核心能力
- 支持用户输入问题,调用Bedrock大模型生成精准回答;
- 支持多轮对话上下文记忆,还原真实对话体验;
- 内置流式响应,实时展示生成内容;
- 支持模型与参数动态调整,适配不同场景。
2. 完整应用代码实现
创建 bedrock_chat_app.py 文件,写入以下代码:
import streamlit as st
import boto3
import json
from botocore.exceptions import ClientError
# 页面配置
st.set_page_config(page_title="Bedrock智能问答助手", page_icon="", layout="wide")
st.title(" AWS Bedrock 智能问答助手")
# 初始化Bedrock客户端
@st.cache_resource
def init_bedrock_client():
return boto3.client("bedrock-runtime", region_name="us-east-1")
bedrock_runtime = init_bedrock_client()
# 侧边栏配置
with st.sidebar:
st.header("模型与参数配置")
model_id = st.selectbox(
"选择模型",
["anthropic.claude-3-haiku-20240307-v1:0", "amazon.titan-text-premier-v1:0", "anthropic.claude-3-sonnet-20240229-v1:0"],
index=0
)
temperature = st.slider("温度值", 0.0, 1.0, 0.6, 0.1)
max_tokens = st.slider("最大生成token数", 256, 4096, 1024, 256)
st.divider()
st.markdown("### 抵扣金使用提示")
st.info("本应用所有调用均使用AWS新用户免费抵扣金,无额外费用")
# 初始化对话历史
if "messages" not in st.session_state:
st.session_state.messages = []
# 展示历史对话
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
# 用户输入处理
if user_prompt := st.chat_input("请输入您的问题..."):
# 添加用户消息到历史
st.session_state.messages.append({"role": "user", "content": user_prompt})
with st.chat_message("user"):
st.markdown(user_prompt)
# 构造对话上下文
messages = []
for msg in st.session_state.messages:
messages.append({
"role": msg["role"],
"content": [{"type": "text", "text": msg["content"]}]
})
# 构造请求体
native_request = {
"anthropic_version": "bedrock-2023-05-31",
"max_tokens": max_tokens,
"temperature": temperature,
"messages": messages
}
# 调用模型并流式展示
with st.chat_message("assistant"):
message_placeholder = st.empty()
full_response = ""
try:
response = bedrock_runtime.invoke_model_with_response_stream(
modelId=model_id,
body=json.dumps(native_request)
)
for event in response["body"]:
if "chunk" in event:
chunk_data = json.loads(event["chunk"]["bytes"].decode())
if chunk_data["type"] == "content_block_delta":
full_response += chunk_data["delta"]["text"]
message_placeholder.markdown(full_response + "▌")
message_placeholder.markdown(full_response)
st.session_state.messages.append({"role": "assistant", "content": full_response})
except ClientError as e:
st.error(f"模型调用出错:{e.response['Error']['Message']}")
3. 应用启动与测试
streamlit run bedrock_chat_app.py
- 浏览器自动打开应用页面,即可开始对话测试;
- 可在AWS控制台「账单与成本管理」页面,实时查看抵扣金消耗情况,单轮对话仅消耗不到0.001美元,200美元抵扣金可支持数十万轮对话测试。
第六章 免费额度管控与成本优化最佳实践
1. 成本监控与预警配置
- AWS Budgets预算配置:完成Budgets入门任务,不仅可获得20美元抵扣金,还可设置成本预算告警,当月度消耗超过阈值时,自动发送邮件提醒,配置步骤:
- 进入AWS账单控制台,选择「Budgets」,创建月度成本预算;
- 设置预算金额为抵扣金总额,设置告警阈值为50%、80%、100%;
- 配置告警邮箱,开启实时提醒。
- CloudWatch用量监控:为Bedrock调用配置CloudWatch指标监控,设置调用次数、token用量告警,避免异常调用导致抵扣金快速耗尽。
2. 免费额度最大化使用技巧
- 模型选型优化:简单场景优先使用Claude 3 Haiku、Amazon Titan Text Lite等低成本模型,复杂推理场景再使用Claude 3 Sonnet等高阶模型,可将抵扣金使用时长提升5-10倍;
- 参数优化:合理设置 max_tokens ,避免无意义的长文本生成;降低 temperature 值,减少重复生成与无效内容,降低token消耗;
- 提示词缓存:Bedrock支持提示词缓存功能,重复使用的系统提示词、长上下文仅需计费一次,大幅降低高频调用场景的成本;
- 资源及时清理:测试完成后,及时删除Bedrock知识库、微调模型、向量索引等持久化资源,避免产生持续的存储费用。
3. 避免意外扣费的核心规则
- 免费计划下,切勿主动升级付费计划,升级后将失去零扣费保障,抵扣金耗尽后会直接从支付方式扣费;
- 不要在非免费区域开启Bedrock服务,部分区域抵扣金不适用,可能产生直接扣费;
- 不要开启Bedrock自动扩缩容、持续运行的推理端点,仅使用按需调用模式,无调用时无任何费用;
- 妥善保管API凭证,避免泄露导致恶意调用,定期轮换访问密钥。
第七章 常见问题与故障排查
1. 模型调用权限报错
- 报错信息: AccessDeniedException: User: arn:aws:iam::xxx:user/xxx is not authorized to perform: bedrock:InvokeModel on resource: xxx
- 解决方案:
- 确认IAM用户已附加正确的Bedrock权限策略;
- 确认策略中的资源区域与调用区域一致;
- 确认控制台已开启对应模型的访问权限。
2. 抵扣金未到账/未抵扣问题
- 常见原因与解决方案:
- 入门任务完成后,抵扣金最长需要10分钟到账,耐心等待后在「账单控制台-抵扣金」页面查看;
- 确认抵扣金在有效期内,免费计划抵扣金有效期为6个月;
- 确认调用区域为抵扣金适用区域,中国区域不支持抵扣金使用;
- 账单按月生成,当月消耗会在次月账单中优先使用抵扣金抵扣。
3. 区域不支持/模型不可用问题
- 解决方案:
- 优先切换至us-east-1区域,该区域Bedrock模型最全,服务最稳定;
- 确认模型访问权限已开启,部分模型需要单独申请访问权限;
- 确认账户类型为付费计划,部分高阶模型仅对付费计划账户开放。
4. 调用限流与报错处理
- 报错信息: ThrottlingException: Rate exceeded
- 解决方案:
- 降低调用频率,添加重试与退避机制;
- 在AWS控制台提交配额提升申请,提升Bedrock模型调用TPS限额;
- 拆分大批量调用任务,避免短时间内高并发请求。
本文完整覆盖了AWS开户后,基于Amazon Bedrock搭建AI应用的全流程,从账户安全配置、免费额度规则解析,到多场景模型调用实战、轻量化AI应用落地,再到成本管控与故障排查,形成了完整的闭环。
相关阅读:
AWS云开户闲置资源识别:自动清理脚本与监控方案
AWS云开户密钥管理最佳实践:访问密钥轮换与审计日志
AWS云开户API网关配置:API Gateway服务暴露与限流
AWS云开户自动化脚本:Terraform基础设施即代码模板推荐
AWS云开户成本优化工具:Trusted Advisor与第三方比价平台