Сборка агента Agent 365, развернутого в Amazon Web Services (AWS)

Узнайте, как создать, разместить, зарегистрировать и опубликовать агент Agent 365, который работает на AWS Elastic Beanstalk, используя Agent 365 CLI. Microsoft Entra и Graph предоставляют идентификатор агента, права и шаблон, а AWS Elastic Beanstalk обеспечивает среду выполнения.

Если вы хотите направить ваш агент к вашему коду, который находится за конечной точкой AWS, вам потребуется только следующий шаг: Настройка для размещения вне Azure. Затем выполните все остальные шаги из раздела Начало работы с разработкой Agent 365.

Цели

Узнайте, как использовать Agent 365 и Microsoft 365 в качестве уровня управления и:

  • Разверните среду выполнения агентов на AWS Elastic Beanstalk
  • Настройте a365.config.json для размещения вне Azure
  • Создайте схему агента в Entra ID
  • Настройте OAuth2 + наследуемые разрешения
  • Зарегистрируйте конечную точку обмена сообщениями Bot Framework, направленную на AWS
  • Создайте идентификацию агента + пользователя агента
  • (Необязательно) Опубликуйте на платформах приложений Microsoft 365
  • Выполните комплексное тестирование взаимодействий

Предварительные условия

Перед началом убедитесь, что выполнены следующие предварительные требования для Azure / Microsoft 365, AWS и локальной среды.

Необходимые условия для Azure/Microsoft 365

Убедитесь, что у вас есть доступ к вашему арендатору Microsoft Entra и установите следующие инструменты для создания учетных записей, шаблонов и регистрации вашего агента.

Предварительные требования для Amazon Web Services (AWS)

Убедитесь, что перечисленные сервисы и инструменты AWS настроены для развертывания и управления вашей средой Elastic Beanstalk.

Предварительные требования для локальной среды разработки

Установите и настройте следующие инструменты локально для сборки, запуска и развертывания агента.

Создание и развертывание агента .NET

В следующих инструкциях описано, как создать минимальный агент, который:

  • Обрабатывает запрос GET /
  • Принимает действия Bot Framework на POST /api/messages

Создайте каталог проекта

mkdir aws-a365-agent
cd aws-a365-agent

Инициализируйте проект .NET

Для облегчения работы в этой статье используется уже подготовленный пример. Клонируйте репозиторий Agent365 Samples и перейдите в пример dotnet\semantic-kernel\sample-agent.

Пример Semantic Kernel Sample Agent - C#/.NET включает:

Перейдите к dotnet\semantic-kernel\sample-agent и убедитесь, что проект успешно собирается:

dotnet restore
dotnet build

Настройте модель

Следуйте инструкциям в Шаг 2. Настройка LLM, чтобы настроить проект, используя ваш OpenAI API-ключ.

Протестируйте локально (необязательно)

  1. Перед развертыванием в AWS протестируйте агент локально:

    # Run the application
    dotnet run
    
  2. Протестируйте конечные точки в отдельном терминале:

    # Test agent endpoint locally
    curl http://localhost:3978
    
  3. Нажмите Ctrl+C, чтобы остановить локальный сервер.

Сборка и развертывание

Выберите предпочитаемый вариант для сборки и развертывания этого демонстрационного приложения:

Вариант А: сборка и развертывание из Visual Studio

Используйте AWS Toolkit для Visual Studio, чтобы опубликовать приложение в Elastic Beanstalk с помощью пошагового мастера.

  1. В Обозревателе решений щелкните правой кнопкой мыши на проекте.

  2. Выберите Опубликовать в AWS Elastic Beanstalk.

  3. Следуйте мастеру развертывания Beanstalk:

    • Выберите профиль учетных данных AWS.
    • Выберите регион (например, us-east-1).
    • Выберите платформу (.NET Core on Linux).
    • Задайте настройки среды.
  4. Выберите Развернуть.

Мастер создает, упаковывает и развертывает ваше приложение на AWS.

Вариант B: сборка и развертывание в AWS Elastic Beanstalk с помощью CLI

Используйте 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 для .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
    

    Эта команда:

    • Создает приложение в Elastic Beanstalk.
    • Создает среду с балансировщиком нагрузки.
    • Развертывает ваше приложение.
    • Подготавливает к работе необходимые ресурсы AWS.
  5. После завершения получите конечную точку Elastic Beanstalk:

    eb status
    

    Запишите свою конечную точку. Должно отобразиться примерно следующее:

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

    Эта конечная точка является messagingEndpoint, которая используется CLI Agent 365 Dev Tools.

Примечание

Для рабочих сред настройте HTTPS, добавив SSL/TLS-сертификат в Elastic Beanstalk. Bot Framework требует HTTPS для рабочих конечных точек.

Настройка для размещения вне Azure

Создайте a365.config.json вручную в папке проекта Elastic Beanstalk:

Важно

Для размещения вне Azure установите значение messagingEndpoint на URL-адрес Elastic Beanstalk с путем /api/messages.

Файл a365.config.json должен выглядеть примерно так:

{
  "tenantId": "YOUR_TENANT_ID",
  "environment": "prod",

  "messagingEndpoint": "http://aws-a365-agent-env.us-east-1.elasticbeanstalk.com/api/messages",

  "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"
}

Следующая таблица обобщает важные конфигурационные поля и их назначение.

Поле Значение
messagingEndpoint URL-адрес вашей среды Elastic Beanstalk + /api/messages
deploymentProjectPath Где происходит присвоение .env

Соберите агент Agent 365

После того как код вашего агента будет работать с конечной точкой AWS, выполните оставшиеся шаги из раздела Начало разработки Agent 365, чтобы настроить агент Agent 365.

Комплексная проверка агента

Используйте эти проверки, чтобы убедиться, что ваш агент, размещенный на AWS, доступен, получает действия Bot Framework и правильно реагирует на всех поверхностях Agent 365.

Проверьте возможность подключения Elastic Beanstalk

Выполните GET-запрос к вашей конечной точке Elastic Beanstalk.

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

Запрос должен вернуть следующее сообщение:

AWS Agent is running.

Проверьте журналы Elastic Beanstalk на наличие входящих сообщений Bot Framework

Используйте ведение журнала Elastic Beanstalk, чтобы убедиться, что ваш агент получает действия Bot Framework и корректно отвечает.

eb logs

Или выполнять потоковую передачу журналов в реальном времени:

eb logs --stream

Когда сообщение достигает вашего агента, вы видите:

POST 200 /api/messages
Received activity: { ... }

Тестирование агента с поверхностей Agent 365

В зависимости от вашей среды, вы можете протестировать свой агент с разных поверхностей:

  • Agents Playground
  • Teams (если опубликован)
  • Agent Shell
  • Федеративные поверхности

Вы можете отправлять сообщения и проверять журналы 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 и отслеживайте журналы AWS Elastic Beanstalk:

# Stream logs in real-time
eb logs --stream

Вам не нужно заново создавать идентификатор, шаблон, конечную точку бота или права доступа.

Устранение неполадок

Используйте этот раздел для диагностики и устранения распространенных проблем при развертывании и работе агента Agent 365 на AWS Elastic Beanstalk. Он охватывает подключение и проверки работоспособности. Также рассматриваются проблемы с привязкой портов, ошибками сборки и лицензированием.

Совет

Руководство по устранению неполадок Agent 365 содержит общие рекомендации по устранению неполадок, лучшие практики и ссылки на материалы по устранению неполадок для каждого этапа жизненного цикла разработки Agent 365.

Конечная точка обмена сообщениями не получает запросы

Проверьте следующие сведения:

  • Ваша конечная точка именно такая:
    http://<your-app>.elasticbeanstalk.com/api/messages
  • Ваша среда Elastic Beanstalk находится в работоспособном состоянии. Выполните проверку с помощью 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 вручную или используйте путь для нелицензированных пользователей, если это поддерживается системой.