首页 / 新闻资讯 / 技术资讯 / AWS开户后搭建AI应用:Bedrock 模型调用 + 免费额度使用

AWS开户后搭建AI应用:Bedrock 模型调用 + 免费额度使用

发布时间:2026.04.24

本文面向AWS新用户,系统讲解从AWS账户开户完成后,基于Amazon Bedrock搭建生成式AI应用的全流程,涵盖2026年最新免费额度规则详解、账户安全与权限配置、多场景模型调用实战、轻量化AI应用落地,以及成本管控与故障排查全链路内容。帮助个人开发者、初创团队零门槛上手AWS企业级生成式AI能力,在零成本/低成本前提下完成AI应用的从0到1搭建,全程遵循AWS安全最佳实践与成本最优原则。

第一章 AWS账户开户与前期安全配置

1. 新用户开户全流程与计划选择
AWS 2026年新版免费套餐为新用户提供两种账户计划,开户全程可在AWS官网完成,核心步骤如下:

2. 账户安全与IAM权限前置配置
AWS安全最佳实践的核心是最小权限原则,开户后需优先完成以下配置,避免安全风险:

3. 最高200美元抵扣金全额获取
AWS新用户注册即可获得100美元基础服务抵扣金,完成5项入门任务可额外获得每项20美元、总计100美元的抵扣金,其中包含Amazon Bedrock专属任务,具体如下:

第二章 Amazon Bedrock核心能力与2026年免费额度全解析

1. Amazon Bedrock核心优势
Amazon Bedrock是AWS提供的全托管生成式AI服务,无需管理任何基础设施,通过统一API即可调用全球主流大模型,核心优势包括:

2. 2026年新用户免费额度核心规则
2026年AWS新版免费套餐中,Bedrock无独立的永久免费额度,但新用户的200美元服务抵扣金可全额用于Bedrock服务调用消耗,核心规则如下[5][20]:

3. 免费额度使用核心注意事项

第三章 Bedrock调用前置环境与权限配置

1. 控制台模型访问权限启用
Bedrock默认未开启任何模型的访问权限,需先在控制台完成模型访问申请,步骤如下:

2. IAM权限精细化配置
为IAM用户配置Bedrock最小调用权限,避免过度授权,推荐两种权限配置方案:

{
    "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)为核心,环境配置步骤如下:

执行以下命令安装所需依赖:

    pip install boto3 json python-dotenv streamlit

其中boto3为AWS官方Python SDK,streamlit用于快速搭建Web应用。

4. 可选:OpenAI兼容API配置
Bedrock提供基于Mantle引擎的OpenAI兼容API端点,可直接适配现有OpenAI生态的代码,无需大幅修改,核心配置如下:

    export OPENAI_API_KEY="创建的Bedrock API密钥"
    export OPENAI_BASE_URL="https://bedrock-mantle.us-east-1.api.aws/v1"

第四章 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. 应用核心能力

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

第六章 免费额度管控与成本优化最佳实践

1. 成本监控与预警配置

2. 免费额度最大化使用技巧

3. 避免意外扣费的核心规则

第七章 常见问题与故障排查

1. 模型调用权限报错

2. 抵扣金未到账/未抵扣问题

3. 区域不支持/模型不可用问题

4. 调用限流与报错处理

本文完整覆盖了AWS开户后,基于Amazon Bedrock搭建AI应用的全流程,从账户安全配置、免费额度规则解析,到多场景模型调用实战、轻量化AI应用落地,再到成本管控与故障排查,形成了完整的闭环。

 

中新数安拥有20年网络安全服务经验,提供构涵盖防DDos/CC攻击高防IP高防DNS游戏盾Web安全加速CDN加速视频直播加速海外服务器租用SSL证书国际云开户等服务。专业技术团队全程服务支持,如您有业务需求,欢迎联系!

 


 

相关阅读:

AWS云开户闲置资源识别:自动清理脚本与监控方案

AWS云开户密钥管理最佳实践:访问密钥轮换与审计日志

AWS云开户API网关配置:API Gateway服务暴露与限流

AWS云开户自动化脚本:Terraform基础设施即代码模板推荐

AWS云开户成本优化工具:Trusted Advisor与第三方比价平台

上一篇:没有了 下一篇:谷歌云开户企业级使用注意事项
联系我们,实现安全解决方案

联系我们,实现安全解决方案

留下您的联系方式,专属顾问会尽快联系您


线

返回顶部