在亚马逊网络服务(AWS)中构建一个部署的Agent 365代理

重要

你需要是边境预览计划的一部分,才能提前访问 Microsoft Agent 365。 边界将你直接与Microsoft最新的 AI 创新联系起来。 边境预览版受客户协议现有预览条款的约束。 由于这些功能仍在开发中,其可用性和功能可能会随时间而变化。

在这里,你可以学习如何利用 Agent 365 CLIAWS Elastic Beanstalk 上构建、托管、注册和发布运行的 Agent 365 代理。 Microsoft Entra & Graph 提供代理身份、权限和蓝图,而 AWS Elastic Beanstalk 则提供运行时。

如果你只是想让代理指向托管在 AWS 端点后的代码,只需这一步: 配置非 Azure 托管 ,然后按照 Agent 365 开发生命周期中的其他步骤作。

目标

学习如何使用 Agent 365 和 Microsoft 365 作为“控制平面”,并:

  • AWS Elastic Beanstalk 上的部署代理运行时
  • Configure a365.config.json for non-Azure hosting
  • 在Entra ID中创建代理蓝图
  • 配置 OAuth2 + 继承权限
  • 注册指向AWS的机器人框架消息终端
  • 创建代理身份 + 代理用户
  • (可选)发布到 Microsoft 365 应用表面
  • 端到端测试交互

先决条件

在开始之前,确保满足以下Azure / Microsoft 365、AWS及本地环境的先决条件。

Azure / Microsoft 365 prerequisites

确认您的 Microsoft Entra 租户访问权限,并安装以下工具以创建身份、蓝图并注册您的代理。

亚马逊网络服务(AWS)的前提条件

确保以下AWS服务和工具已搭建,用于部署和管理您的Elastic Beanstalk环境。

本地发展环境的前提条件

在本地安装并配置以下工具,以构建、运行和部署该代理。

创建并部署一个 .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密钥配置项目。

本地考试(可选)

  1. 在部署到AWS之前,先在本地测试你的代理:

    # Run the application
    dotnet run
    
  2. 在另一个终端测试端点:

    # Test agent endpoint locally
    curl http://localhost:3978
    
  3. 点击 Ctrl+C 停止本地服务器。

生成和部署

选择您偏好的选项来构建并部署此示例应用:

选项A:从Visual Studio构建并部署

使用 Visual Studio 的 AWS 工具包,将应用发布到 Elastic Beanstalk,并配有引导向导。

  1. 解决方案资源管理器中,右键点击你的项目

  2. 选择 发布到 AWS Elastic Beanstalk

  3. 请跟随 Beanstalk部署向导

    • 选择您的AWS凭证配置文件
    • 选择区域(例如, us-east-1
    • 选择平台(.NET Core on Linux
    • 配置环境设置
  4. 选择 部署

向导负责构建、打包并将你的应用部署到 AWS。

选项B:构建并部署到带有CLI的AWS Elastic Beanstalk上

使用 Elastic Beanstalk CLI 将 .NET 代理打包并部署到 64 位 Amazon Linux 2 环境;确保配置了 AWS CLI/EB CLI,并且应用绑定到 PORT Beanstalk 设置的环境变量。

  1. 构建并发布您的.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
    
  2. 初始化 Elastic Beanstalk for .NET。 系统提示您选择地区和平台:

    eb init
    
  3. 选择:

    • 平台64bit-amazon-linux-2023-v3.7.0-running-.net-8
    • 区域:您偏好的AWS区域(例如: us-east-1
  4. 创建部署包并部署:

    cd publish
    zip -r ../deploy.zip .
    cd ..
    eb create aws-a365-agent-env
    eb deploy
    

    这将:

    • 创建弹性豆茎应用
    • 创建一个带有负载均衡器的环境
    • 部署应用程序
    • 配置必要的AWS资源
  5. 完成后,获取你的Elastic Beanstalk终端:

    eb status
    

    注意你的终点。 结果应如下所示:

    http://aws-a365-agent-env.us-east-1.elasticbeanstalk.com
    

    这就是 messagingEndpoint Agent 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 许可证,或者如果支持,使用无许可的用户路径。

获取帮助

更多帮助选项

请考虑以下几点以寻求帮助: