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

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

Если вы хотите направить агента на ваш код, расположенный за AWS-конечной точкой, вам нужно выполнить следующий шаг: настроить хостинг вне Azure. Затем следуйте всем остальным шагам от Get Start with Agent 365 development.

Цели

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

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

Предпосылки

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

Azure / Microsoft 365 prerequisites

Подтвердите доступ к вашему арендатору 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 , чтобы настроить проект с помощью Open 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 Beansstem».

  3. Следуйте Beansstem Deployment Wizard:

    • Выберите свой профиль 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
    

    Эта команда:

    • Создаёт прикладной образец эластичного бобового стебля.
    • Создаёт среду с балансировщиком нагрузки.
    • Развёртывает ваше приложение.
    • Необходимые ресурсы AWS.
  5. Когда закончите, получите конечную точку Elastic Beansstem:

    eb status
    

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

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

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

Note

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

Configure for non-Azure hosting

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

Important

Для хостинга вне 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 вашего эластичного бобового стебля + /api/messages
deploymentProjectPath Где .env происходит штамповка

Агент Build 365

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

Проверьте агент от конца до конца

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

Проверьте подключение эластичного бобового стебля

Отправьте запрос на GET на вашу конечную точку Elastic Beansstem.

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

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

  • Детская площадка агентов
  • Команды (если опубликованы)
  • Агент Шелл
  • Федеративные поверхности

Вы можете отправлять сообщения и проверять свои логи Elastic Beansstem. Узнайте, как тестировать агентов с помощью 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

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

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

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

Tip

Руководство по устранению неполадок 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 вручную или используйте нелицензированный пользовательский путь при поддержке пользователя.