重要
你需要是边境预览计划的一部分,才能提前访问 Microsoft Agent 365。 边界将你直接与Microsoft最新的 AI 创新联系起来。 边境预览版受客户协议现有预览条款的约束。 由于这些功能仍在开发中,其可用性和功能可能会随时间而变化。
在这里,你可以学习如何利用 Agent 365 CLI 在 AWS Elastic Beanstalk 上构建、托管、注册和发布运行的 Agent 365 代理。 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 工具包,将应用发布到 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你的Elastic Beanstalk网址(带/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 开发生命周期 中的剩余步骤设置你的 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代理时的常见问题。 它涵盖了连接性和健康检查。 它还解决了端口绑定、构建错误和授权问题。
消息终端未收到请求
请查看以下详情:
- 你的终点正是:
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 许可证,或者如果支持,使用无许可的用户路径。
获取帮助
- 如果你遇到本部分未涵盖的 Agent 365 CLI 问题,请 查看 GitHub 上的未解决问题或创建一个新问题。
更多帮助选项
请考虑以下几点以寻求帮助:
请查看示例代码和示例中的文档
请在相关SDK仓库中审阅或提交其他GitHub问题: