使用 Strands Agents 部署生产级架构通用型个人助手
教程概述
本教程将指导您如何在 Amazon Web Services(AWS)上部署并运行基于 Strands Agents SDK 的 Agentic AI 应用。该解决方案通过集成 Modular Capability Protocol(MCP)与多种大语言模型(如 Amazon Bedrock 和 OpenAI),实现语言模型与外部系统之间的高效协作。
整个项目采用模块化架构,支持前后端解耦部署,结合 AWS 云服务构建出具有高可用性、可扩展性和可观测性的通用型智能助手。您将学习如何配置计算资源、设置安全策略、部署容器服务,并集成多种智能工具,以支持企业知识问答、数据分析、自动化办公等场景。
本教程假设您已拥有 AWS 正式账号,并具备基础的 AWS 使用经验。部署过程中将使用 Amazon EC2、ECS Fargate、DynamoDB、Secrets Manager、Amazon S3 等核心服务,并通过 AWS CDK 自动化基础设施部署。
教程属性
Tag
|
难度
|
时间
|
费用
|
受众
|
前提条件
|
示例代码
|
上次更新时间
|
相关行业
|
相关产品
|
---|---|---|---|---|---|---|---|---|---|
生成式人工智能,LLM,智能助手
|
中级到高级 |
2~3 小时 |
涉及 EC2、Fargate、ALB、DynamoDB、S3、Secrets Manager 等资源,具体费用取决于运行时长和地区。推荐使用 Free Tier 资源进行测试,并及时清理资源以控制成本。 |
|
2025 年 7 月 |
教育科技(EduTech) |
Amazon Bedrock |
简介
这是基于 Strands Agents SDK 开发的通用型 Agentic AI 应用,通过 MCP 的集成,实现了大语言模型与外部工具系统的无缝连接。 Strands SDK 作为核心引擎,提供了强大的代理能力和工具集成机制,使得整个系统具备了高度的可扩展性和实用性。

功能特点
- 前后端分离 - MCP Client 和 MCP Server 均可以部署到服务器端,用户可以直接使用 web 浏览器通过后端 web 服务交互,从而访问 LLM 和 MCP Sever 能力和资源
- React UI - 基于React的用户界面,允许用户与模型交互并管理MCP服务器,显示工具调用结果和思考过程
- MCP 工具集成 - 提供 STDIO, StreamableHTTP, SSE 模式的 MCP 集成
- 多模型提供商 - 支持 Bedrock、OpenAI 及兼容模型
- 多用户会话管理 - 维护多用户 session
技术特色与优势
系统流程图

系统架构图

第一步 创建部署资源
具体步骤 1.1 创建 EC2
EC2 是亚马逊云科技的云服务器,本 workshop 中,您将在 EC2 上运行 MCP 环境,在此步骤中,将带您创建一台 EC2 服务器。
在亚马逊云科技控制台顶部的搜索栏中,输入“EC2”,进入 EC2 的控制台页面。

具体步骤 1.2
在 EC2 控制台中,点击侧边栏的“Instances”,进入实例页面,点击右上方的橙色按钮“Launch instances”创建新实例。

具体步骤 1.3
在 Launch an instance 页面中,Name 处填写任意名称。在 Application and OS Images(Amazon Machine Image)选栏中,点击 Ubuntu,在 Amazon Machine Image 中选择"Ubuntu Server 22.04 LTS (HVM)”。

具体步骤 1.4
下方的 Instance type 中,在下拉选单中搜索“t3”,选择“t3.xlarge”类型。此为 4 核 16G 机型, 用于编译和部署。

具体步骤 1.5
在下方的 Key pair 选项中,点击“Create new key pair”生成新的密钥对,后面您将使用此密钥登录到 EC2 服务器来配置聊天页面和角色管理器。

具体步骤 1.6
点击“Create”后,密钥对的私钥将会自动下载到本地,请到浏览器的默认目录找到名为.pem 的私钥文件,供后续步骤使用。
在 Network settings 中,点击右侧的“Edit”编辑网络设置。其中,注意检查“Auto-assign public IP”是否为 Enable,Firewall(security groups)选择“Create security group”,name 填写任意名称,如“mcp-demo-sg“。

具体步骤 1.7
在接下来的 Inbound Security Group Rules 中,需要配置三条规则:
默认应已经包含了一条ssh规则,检查其 Protocol 是否为 TCP,Port range 为 22,Source type 为 Anywhere。 配置好 Inbound Security Group Rules 的页面应与下图类似。

具体步骤 1.8
注意:如果您访问互联网的 IP 不固定或经过了多层 NAT,则 Inbound rule 可能无法正确获取到实际访问 IP。如果遇到无法访问服务的情况,请尝试将 2、3 两条 inbound 规则的 Source type 更改为 Anywhere。但这意味着所有人都能够访问到您的 EC2 服务器的对应端口,可能会存在潜在风险。
向下翻页,在 Configure storage 中,配置磁盘大小为 30GB,最后在右侧检查一下创建实例的 Summary,确认无误后点击 Launch instance,EC2 实例即创建完成。

具体步骤 1.9
点击实例名称,进入 EC2 实例页面,在此您能看到刚刚创建的实例。
至此,所有资源创建完成。接下来,您将在 EC2 中安装相关的环境。

第二步 设置环境
部署步骤
2.1 环境准备
具体步骤 2.1.1 进入 Amazon EC2 服务器进行部署
具体步骤 2.1.2
安装依赖,需要 NodeJS 下载安装或者使用以下脚本从 cdn 下载安装
sudo apt update
sudo apt install curl -y
curl -o- https://d167i8kc2gwjo.cloudfront.net/cdn/install.sh | bash
source ~/.bashrc
nvm install 22.12.0
nvm use 22.12.0
设置 npm 镜像源
如果在中国区 EC2 或者本地电脑未开启 VPN 情况下
npm config set audit false && \
npm config set registry https://mirror.bosicloud.com/repository/npm/;
具体步骤 2.1.3
配置 AWS credentials 安装 AWS CLI:
sudo apt install unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
确保您的 AWS CLI 已正确配置:
aws configure
具体步骤 2.1.4
执行以下命令安装 docker 软件
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
更新软件包列表并安装 Docker
sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io -y
更改 docker 权限,并验证是否成功使用代理
sudo usermod -aG docker $USER
sudo chmod 666 /var/run/docker.sock
docker info | grep mirror
添加完成后,使用以下命令生效配置
sudo systemctl daemon-reload
sudo systemctl restart docker
具体步骤 2.2
下载代码,从 aws sample code 中下载 demo 代码
git clone https://github.com/aws-samples/sample_agentic_ai_strands -b workshop
具体步骤 2.3
配置环境变量,把 env.example 改成. env,根据情况取消注释,修改以下变量: 进入项目目录
cd ./sample_agentic_ai_strands
cp env.example .env
使用 vim 打开.env 文件编辑
本试验使用的是 x86 服务器做编译,可以设置 PLATFORM=linux/amd64,否则跨平台编译速度慢好几倍。如果需要可观测性,可以去 https://us.cloud.langfuse.com/ 注册一个免费账号,然后把 key 和 host 信息填入上面的.env 中
# =============================================================================
# AWS Infra CONFIGURATION
# The default ECS platform is arm64, you can choose linux/amd64
# =============================================================================
PLATFORM=linux/amd64AWS_REGION=your_region_to_deploy(必须填,方案部署区,例如如果是北京区用cn-north-1)
# ============================
# 如果需要使用Bedrock模型,配置如下
# ============================
STRANDS_MODEL_PROVIDER=bedrock
# ============================
# 如果在中国区,使用openai兼容接口的模型,需要如下Strands 配置
# ============================
# STRANDS_MODEL_PROVIDER=openai
#OPENAI_API_KEY=your-model-provider-key
#OPENAI_BASE_URL=your-model-provider-base-url(例如https://api.siliconflow.cn/v1)
# ============================
# Langfuse 配置 (可选)
# ============================
#LANGFUSE_PUBLIC_KEY=your-public-key
#LANGFUSE_SECRET_KEY=your-secret-key
#LANGFUSE_HOST=https://your-langfuse-host
# =============================================================================
# AWS BEDROCK CONFIGURATION (for Bedrock provider, if not set, it will use same credential as AWS Infra)
# =============================================================================
BEDROCK_AWS_ACCESS_KEY_ID=your_aws_access_key_idBEDROCK_AWS_SECRET_ACCESS_KEY=your_aws_secret_access_keyBEDROCK_AWS_REGION=us-east-1
# =============================================================================
# mem0 CONFIGURATION
# Only used if ENABLE_MEM0=true
# If STRANDS_MODEL_PROVIDER=bedrock, it will use models in Bedrock
# =============================================================================
# workshop中不使用mem0,使用mem0将额外增加8-10分钟的部署时间
ENABLE_MEM0=false
具体步骤 2.4 执行
CDK 安装脚本,进入 cdk 目录,运行如下命令配置 cdk 运行环境.
cd ./cdk
npm install -g aws-cdk
npm install -g typescript
npm install
npm i --save-dev @types/node
在 cdk 目录下执行 cdk 部署脚本:
bash cdk-build-and-deploy.sh
第一次运行
需要打包镜像,根据网络条件不同,大概 10~15 分钟之后,部署完成,输出如下:

具体步骤 2.5
开通模型权限
海外区需要去 Bedrock - Model Access 开通以下模型的使用权限
1. Nova Premier
2. Nova Pro
3. Nova Lite
4. Titan Text Embeddings V2
第三步 配置 MCP Servers
配置 MCP Servers

具体步骤 3.1
访问 UI,部署完成后,您可以使用部署完成后输出的 AlbDnsName(参考上一张红框部分),在浏览器中输入该地址,并加入后缀/chat(形如 http://{AlbDnsName}/chat),即可访问 Agent 前端页面。整体会话是按照图示中 User ID 来管理的(如记忆、可观测性指标、输出物等),请在 User ID 中确认具体的 ID 名称(可以使用“Randomize”按钮随机生成)。
具体步骤 3.2
设置 MCP Server
2.1. 左边栏切换到 MCP Servers Tab,我们可以看到预先安装好的 Local File System,点击“Add MCP Server”按钮添加依次添加所需要的 MCP Server

例如:
添加 time MCP Server,输入 Server Name 和 JSON 配置描述,点击“Add Server”,后端服务开始下载和连接 MCP 服务器,这个过程取决于 MCP 服务器是本地还是远程,安装等待时间大约几秒到 2 分钟不等。

具体步骤 3.2.2
依次安装本 Demo 需要用的 MCP 服务器:S3-Upload:上传 HTML 内容,并返回一个 S3 presigned URL,用于托管静态 HTML 网页。这是我们 demo 方案提供的本地 stdio 类型的 MCP Server,已经在 github 上面开源 aws-mcp-servers-samples 本方案中已经提前下载了该 MCP server 的代码到服务容器中,只需配置 JSON 如下:
{
"mcpServers": {
"s3-upload": {
"command": "uv",
"args": [
"--directory", "/app/aws-mcp-servers-samples/s3_upload_server",
"run", "src/server.py"
],
"env": {
"AWS_REGION":"更改成实际账号的Region",
"AWS_ACCESS_KEY_ID":"更改成实际账号的AWS_ACCESS_KEY_ID",
"AWS_SECRET_ACCESS_KEY":"更改成实际账号的AWS_SECRET_ACCESS_KEY",
"AWS_SESSION_TOKEN":"", //optional
}
}
}
}
MiniMax-AI:
用于绘制插图, 需要到 MiniMax Platform 官网注册账号,并获取 API KEY,配置 JSON 如下:
{
"mcpServers": {
"MiniMax": {
"command": "uvx",
"args": [
"minimax-mcp",
"-y"
],
"env": {
"MINIMAX_API_KEY":"更改成实际账号key",
"MINIMAX_MCP_BASE_PATH": "/app",
"MINIMAX_API_HOST": "https://api.minimax.chat",
"MINIMAX_API_RESOURCE_MODE": ""
}
}
}
}
Time:
用于获取当前时间的工具,安装这个 MCP Server 会使用 uvx 命令动态下载相关代码和依赖包,配置 JSON 如下:
{"mcpServers":
{ "time":
{ "command": "uvx", "args": ["mcp-server-time"]
}
}
}
具体步骤 3.2.3
- (可选,需要额外部署) Retrieve: 用于从OpenSearch向量知识库中检索知识。这是我们demo方案提供的在Lamda部署的serverless remote MCP serverstdio类型的MCP Server。该 MCP 服务器提供两个主要功能:
- 文本索引与嵌入:将文本转换为向量并存储到 Amazon OpenSearch Service 中;
- 相似度搜索:基于向量相似度查找相关文档。 该解决方案采用完全无服务器架构,主要包含以下组件:
- Amazon Lambda:处理 MCP 请求和响应
- Amazon API Gateway:提供 HTTP 接口
- Amazon OpenSearch Service:存储文档和向量数据
- Amazon DynamoDB:管理 MCP 会话状态
- 第三方嵌入服务: 将文本转换为向量表示(中国区使用硅基流动 Silicon Flow BGE-M3 Embedding API)
- 以上内容详细实现请参考源码。
- 您可以使用预置的部署脚本完成部署
请在部署机器中运行:
git clone https://github.com/aws-samples/aws-mcp-servers-samples
cd aws-mcp-servers-samples/aos-mcp-serverless
bash aos_serverless_mcp_setup.sh --McpAuthToken xxxx --OpenSearchUsername xxxx --OpenSearchPassword xxxx --EmbeddingApiToken xxxx
配置 JSON 如下:
{
"mcpServers": {
"retrieve": {
"url": "替换成实际部署的remote mcp server url",
"token":"替换成实际部署的token"
}
}
}
海外区参考:
EXA-search: 首先,前往 Exa 官网注册账号,并获取 API Key. 在 UI 弹出框中分别输出 Server Name:exa_search,JSON Configuration:
{
"mcpServers": {
"exa-search": {
"command": "npx",
"args": ["-y","exa-mcp-server"],
"env": {
"EXA_API_KEY": "<替换成您自己申请的api key>"
}
}
}
}
中国区参考:
Bocha-search:博查 MCP Server 是一个给 AI 用的搜索引擎,主要面向国内使用场景,涵盖天气、新闻、百科、医疗、火车票、图片等多种领域。我们需要去博查官网去注册一个账号,并充值一定金额获取 API Key。 如果是在海外区,也可以使用免费的 EXA MCP Server 替代)。本方案中在部署时已经提前下载了 bocha-search-mcp 的本地代码到容器中,只需使用如下 JSON 配置即可安装:
{"mcpServers": {
"bocha-search-mcp": {
"command": "uv",
"args": [
"--directory",
"/app/bocha-search-mcp",
"run",
"bocha-search-mcp"
],
"env": {
"BOCHA_API_KEY": "替换成实际的api key"
}
}
}
}
具体步骤 3.2.4
开启 MCP Servers,上面的 MCP Server 全部配置好了之后,我们在左边栏 MCP Servers 列表中开启这些 Server。
如图所示:

第四步 Agent 测试和使用
具体步骤 4.1
Agent 测试和使用
工具配置完成后,我们就可以正式使用 Agent 应用了。
请在前端左侧 Chat Settings 中作如下配置:
Model 栏目请选择 DeepSeek-R1-Pro (如果是在中国区) 或者 Claude 3.7 (如果是在海外区)
Max Tokens 请调整至 16000 或接近 16000 数字;
具体步骤 4.1.1
第一次会话(提出第一个关注的问题):
厄尔尼诺对海洋生物有什么影响?
该次会话中,Agent 会根据自身知识来生成回答,如:
厄尔尼诺现象对海洋生物产生广泛影响。当太平洋海水异常变暖时,营养物质减少导致浮游生物数量下降,进而影响整个食物链。这使得鱼类种群迁移或减少,珊瑚礁因高温而发生白化现象,同时改变了海鸟和海洋哺乳动物的分布和繁殖模式。在南美洲沿岸,上升流减弱影响了当地渔业资源,而在其他地区可能出现不寻常的物种入侵。这些变化不仅影响生态系统平衡,也对依赖海洋资源的人类社区造成经济影响。
提出第二个关注的问题:
它会影响农业生产和粮食安全吗?
Agent 回答:
是的,厄尔尼诺现象显著影响农业生产和粮食安全。它导致全球多个地区降水模式异常,引发一些地区严重干旱(如东南亚、澳大利亚和非洲部分地区),而其他地区则出现洪涝灾害(如南美洲西部)。这些极端天气事件直接损害农作物产量、破坏农业基础设施,并改变病虫害分布。在受灾严重地区,粮食减产导致价格上涨,加剧粮食不安全状况,尤其影响贫困和依赖当地农业的社区。此外,厄尔尼诺引起的温度变化也会影响作物生长周期和产量,进一步威胁全球粮食供应链的稳定性。
具体步骤 4.1.2
第二轮会话(正式生成课件):请在前端左侧 System Prompt 中输入系统提示词:
你是一位深度研究助手,请在单次回复中使用可用的最大计算能力,尽可能深入、批判性和创造性地思考,花费必要的时间和资源来得出最高质量的答案。在收到工具结果后,仔细反思其质量并在继续之前确定最佳下一步。使用你的思考基于这些新信息进行规划和迭代,然后采取最佳的下一步行动。
## 你必须遵循以下指令:
– 每次先使用mem0_memory工具查看是否有与当前问题相关的历史记忆,如果有,提取记忆用于当前任务的内容生成。
– 请使用time 工具确定你现在的真实时间.
– 如果引用了其他网站的图片,确保图片真实存在,并且可以访问。
– 如果用户要求编写动画,请使用Canvas js编写,嵌入到HTML代码文件中。
– 生成代码文件请直接上传到s3,并返回访问链接给用户
– 使用text_similarity_search工具去检索厄尔尼诺相关的知识
在对话框中输入:
你是一名大学地理教师,请为大学生设计一堂关于厄尔尼诺现象的互动课程,需要:1. 搜索最新气候数据和相关新闻事件;2. 搜索教学资源和真实图片;3. 使用工具绘制课程中的需要的演示插图;4. 生成完整课程方案,包括教学目标、活动设计、教学资源和评估方法;5. 设计一个展示厄尔尼诺现象的酷炫动画并和搜索到的相关信息一起集成到HTML课件中。
具体步骤 4.1.3
Agent 会根据任务需求自动进行思考、规划、拆分任务和调用工具,在右侧可以看到工具调用的情况。

具体步骤 4.1.4
最终使用 upload-file 工具将生成的 html 课件上传到 S3,生成访问链接 点击输出结果中的“查看课程设计方案”链接,可以查看和下载托管在云端的课件内容:

成果展示

清理资源


总结
通过本教程,您已成功在 AWS 云平台上部署了一个支持多工具协同的 Agentic AI 应用,并完成了从基础设施配置、模型调用,到前端交互界面的完整流程。该项目充分发挥了 AWS 云服务的弹性与集成能力,帮助您构建一个可扩展、可维护、面向生产的智能代理系统。
接下来,您可以根据实际业务需求进一步扩展应用功能,例如:
- 连接企业内部数据库或知识库,实现企业级智能问答;
- 引入更多自定义 MCP 工具,提升模型感知能力;
- 集成身份认证、数据加密等机制,加强安全防护。
部署完成后,建议及时清理不再使用的资源(例如 CloudFormation 堆栈与 EC2 实例),以控制云端成本。如需进一步了解 Amazon Bedrock、MCP 或 Langfuse 等相关服务,欢迎查阅官方文档或联系 AWS 客户代表获取支持。