重要
你需要是边境预览计划的一部分,才能提前访问 Microsoft Agent 365。 边界将你直接与Microsoft最新的 AI 创新联系起来。 边境预览版受客户协议现有预览条款的约束。 由于这些功能仍在开发中,其可用性和功能可能会随时间而变化。
学习如何搭建、托管、注册并发布运行在 AWS Elastic Beanstalk上的Agent 365代理,使用 Agent 365 CLI。 Microsoft Entra 和 Graph 提供代理身份、权限和蓝图,而 AWS Elastic Beanstalk 则提供运行时。
如果你想让代理指向位于AWS端点背后的代码,只需以下步骤: 配置非Azure托管。 然后,按照 Agent 365开发生命周期中的其他步骤作。
目标
学习如何使用Agent 365和Microsoft 365作为控制平面,并:
- AWS Elastic Beanstalk 上的部署代理运行时
- Configure
a365.config.jsonfor non-Azure hosting - 在Entra ID中创建代理蓝图
- 配置 OAuth2 + 继承权限
- 注册指向AWS的机器人框架消息终端
- 创建代理身份 + 代理用户
- (可选)发布到 Microsoft 365 应用表面
- 端到端测试交互
先决条件
在开始之前,确保满足以下Azure / Microsoft 365、AWS及本地环境的先决条件。
Azure / Microsoft 365 prerequisites
确认您的 Microsoft Entra 租户访问权限,并安装以下工具以创建身份、蓝图并注册您的代理。
一个Microsoft Entra租户,包含:
- 创建应用程序和代理蓝图的权限或角色(全局管理员或同等职务)
- 加入 Frontier预览计划 ,即可提前访问Microsoft Agent 365。
- 至少有一个 Microsoft 365 许可证可供代理用户使用
亚马逊网络服务(AWS)的前提条件
确保以下AWS服务和工具已搭建,用于部署和管理您的Elastic Beanstalk环境。
本地发展环境的前提条件
在本地安装并配置以下工具,以构建、运行和部署该代理。
代码编辑器:使用 Visual Studio Code 或 Visual Studio
.NET SDK:使用 .NET 8.0 SDK 或更高版本
AWS 工具包:从 Visual Studio 或 Visual Studio Code安装此扩展。 使用您的 AWS身份与访问管理(IAM) 凭证登录。
LLM API 访问:根据你的代理配置或你偏好的模型提供商选择合适的服务:
- OpenAI API 密钥: 获取 OpenAI API 密钥
- Azure OpenAI: 创建和部署 Azure OpenAI 资源 以获取 API 密钥和终结点
创建并部署一个 .NET 代理
以下说明描述了如何创建一个最小代理:
- 响应GET
/ - 接受POST上的机器人框架活动
/api/messages
创建项目目录
mkdir aws-a365-agent
cd aws-a365-agent
初始化.NET项目
为了简化你的体验,本文使用了已准备好的样本。 克隆 Agent365 Samples 仓库 ,访问 dotnet\semantic-kernel\sample-agent 样本。
语义内核示例代理 - C#/.NET 示例包括:
- 一个最小的 ASP.NET 核心 Web API
- 机器人框架消息处理程序
/api/messages -
健康检查端 点于
/ - AI能力的语义内核集成
请前往 dotnet\semantic-kernel\sample-agent 验证项目是否成功构建:
dotnet restore
dotnet build
配置模型
按照 步骤2:LLM配置 中的说明,使用你的Open API密钥配置项目。
本地考试(可选)
在部署到AWS之前,先在本地测试你的代理:
# Run the application dotnet run在另一个终端测试端点:
# Test agent endpoint locally curl http://localhost:3978点击
Ctrl+C停止本地服务器。
生成和部署
选择您偏好的选项来构建并部署此示例应用:
选项A:从Visual Studio构建并部署
使用Visual Studio的AWS Toolkit,通过引导向导将应用发布到Elastic Beanstalk。
在 解决方案资源管理器中,右键点击你的项目。
选择发布 到 AWS Elastic Beanstalk。
请跟随 Beanstalk部署向导:
- 选择您的AWS凭证配置文件。
- 选择区域(例如,
us-east-1)。 - 选择平台(
.NET Core on Linux)。 - 配置环境设置。
选择“部署”。
向导负责构建、打包并将你的应用部署到 AWS。
选项B:构建并部署到带有CLI的AWS Elastic Beanstalk上
使用Elastic Beanstalk的CLI将.NET代理打包并部署到64位的Amazon Linux 2环境中。 确保AWS CLI和Eb CLI都已配置好。 应用绑定到 PORT Beanstalk设置的环境变量。
构建并发布您的.NET应用程序:
# Publish for Linux runtime (AWS Elastic Beanstalk uses Amazon Linux) dotnet publish -c Release -o ./publish --runtime linux-x64创建包含以下内容的Procfile。
web: dotnet ./SemanticKernelSampleAgent.dll初始化 Elastic Beanstalk for .NET。 系统提示您选择地区和平台:
eb init选择:
-
平台:
64bit-amazon-linux-2023-v3.7.0-running-.net-8 -
区域:您偏好的AWS区域(例如:
us-east-1)
-
平台:
创建部署包并部署:
cd publish zip -r ../deploy.zip . cd .. eb create aws-a365-agent-env eb deploy此命令:
- 创建弹性豆茎应用。
- 创建一个带有负载均衡器的环境。
- 部署你的应用程序。
- 配置必要的AWS资源。
完成后,获取你的Elastic Beanstalk终端:
eb status注意你的终点。 结果应如下所示:
http://aws-a365-agent-env.us-east-1.elasticbeanstalk.com该端点由
messagingEndpointAgent 365 开发工具 CLI 使用。
注释
对于生产环境,可以通过在 Elastic Beanstalk 中添加 SSL/TLS 证书来配置 HTTPS。 机器人框架要求生产端点使用 HTTPS。
Configure for non-Azure hosting
在你的 Elastic Beanstalk 项目文件夹中, a365.config.json 通过运行 a365 config init:
重要
对于非Azure托管,设置以下值:
-
messagingEndpoint: 你的弹性豆茎网址,/api/messages路径 -
needDeployment:false
文件 a365.config.json 应该长这样:
{
"tenantId": "YOUR_TENANT_ID",
"subscriptionId": "YOUR_AZURE_SUBSCRIPTION_ID",
"resourceGroup": "a365-aws-demo",
"location": "westus",
"environment": "prod",
"messagingEndpoint": "http://aws-a365-agent-env.us-east-1.elasticbeanstalk.com/api/messages",
"needDeployment": false,
"agentIdentityDisplayName": "MyAwsAgent Identity",
"agentBlueprintDisplayName": "MyAwsAgent Blueprint",
"agentUserDisplayName": "MyAwsAgent User",
"agentUserPrincipalName": "myawsagent@testTenant.onmicrosoft.com",
"agentUserUsageLocation": "US",
"managerEmail": "myManager@testTenant.onmicrosoft.com",
"deploymentProjectPath": ".",
"agentDescription": "AWS-hosted Agent 365 Agent"
}
下表总结了重要的配置字段及其用途。
| 领域 | Meaning |
|---|---|
messagingEndpoint |
你的弹性豆茎网址 + /api/messages |
"needDeployment": false |
告诉CLI:“我自己托管服务器;不要部署到 Azure。 |
deploymentProjectPath |
冲压发生的地方.env |
构建代理365代理
在你的代理代码运行到AWS端点后,按照 Agent 365开发生命周期 的剩余步骤设置你的代理。
端到端验证代理
利用这些检查确认你的AWS托管代理是否可联系,接收机器人框架活动,并且在Agent 365表面上正确响应。
验证弹性豆茎连接性
向你的 Elastic Beanstalk 端点发送 GET 请求。
curl http://aws-a365-agent-env.us-east-1.elasticbeanstalk.com/
请求应返回以下消息:
AWS Agent is running.
查看 Elastic Beanstalk 日志中的机器人框架消息
使用 Elastic Beanstalk日志 来验证你的代理是否接收到Bot Framework的活动并正确响应。
eb logs
或者实时直播日志:
eb logs --stream
消息发送到你的代理后,你会看到:
POST 200 /api/messages
Received activity: { ... }
365号试剂表面的测试剂
根据你的环境,你可以从不同表面测试试剂:
- 代理操场
- Teams(如已发布)
- 特工壳牌
- 联邦曲面
你可以发送消息并验证你的Elastic Beanstalk日志。 了解如何使用 Microsoft Agent 365 SDK 测试代理,并用 Agents Playground 测试工具验证代理的功能。
开发者工作流程
设置完成后,按照以下工作流程进行迭代开发:
本地开发和测试
使用 手表模式 进行快速开发,并实现自动换弹:
# Automatically rebuild and restart on file changes
dotnet watch run
先修改代码,保存并在本地测试,然后再部署。
构建并重新部署到 AWS Elastic Beanstalk
准备部署变更时:
# Clean previous builds (optional but recommended)
dotnet clean
# Publish optimized release build
dotnet publish -c Release -o ./publish --runtime linux-x64
# Create deployment package
cd publish
zip -r ../deploy.zip .
cd ..
# Deploy to AWS
eb deploy
测试和监视
使用Agent 365表面并监测弹性豆茎原木进行测试:
# Stream logs in real-time
eb logs --stream
你不需要重新创建你的身份、蓝图、机器人端点或权限。
Troubleshooting
使用此部分来诊断和解决在AWS Elastic Beanstalk上部署和运行Agent 365代理时的常见问题。 它涵盖了连接性和健康检查。 它还解决了端口绑定、构建错误和授权问题。
小窍门
Agent 365 故障排除指南 包含高层次的故障排除建议、最佳实践以及针对 Agent 365 开发生命周期各阶段的故障排除内容链接。
消息终端没有收到请求
请查看以下详情:
- 你的终点正是:
http://<your-app>.elasticbeanstalk.com/api/messages - 你的弹性豆茎环境是健康的。 通过使用
eb health。 - 你的安全组允许 HTTP 或 HTTPS 流量进入。
- 没有防火墙规则或VPC限制。
应用健康问题
检查环境健康:
eb health --refresh
查看详细日志:
eb logs
端口绑定问题
确保你的应用监听环境变量指定的 PORT 端口(Elastic Beanstalk会自动设置这个值)。
.NET 构建或运行时问题
通过以下命令检查构建错误:
# Clean and rebuild
dotnet clean
dotnet build --verbosity detailed
验证.NET版本:
dotnet --version
dotnet --list-sdks
检查包裹问题:
# List installed packages
dotnet list package
# Update packages
dotnet restore --force
许可证转让失败
手动分配有效的 Microsoft 365 许可证,或者如果支持,可以使用无许可的用户路径。