Bygg en Agent 365-agent distribuert i Amazon Web Services

Finn ut hvordan du bygger, drifter, registrerer og publiserer en Agent 365-agent som kjører i Amazon Web Services Elastic Beanstalk, ved hjelp av Agent 365 CLI. Microsoft Entra og Graph gir agentidentitet, tillatelser og mal, mens Amazon Web Services Elastic Beanstalk sørger for kjøretiden.

Hvis du vil at agenten skal peke mot koden som ligger bak en Amazon Web Services-endepunkt, trenger du bare følgende trinn: Konfigurer for vertstjeneste uten Azure. Følg deretter alle andre trinn fra Kom i gang med Agent 365-utvikling.

Mål

Finn ut hvordan du bruker Agent 365 og Microsoft 365 som kontrollplanen og gjør følgende:

  • Distribuer agentkjøretid på Amazon Web Services Elastic Beanstalk
  • Konfigurer a365.config.json for vertstjeneste uten Azure
  • Opprett Agent Blueprint i Entra ID
  • Konfigurer OAuth2 + tillatelser som kan arves
  • Registrer Bot Framework-meldingsendepunkt som peker mot Amazon Web Services
  • Opprett agentidentitet og agentbruker
  • (Valgfritt) Publiser i Microsoft 365-appoverflater
  • Test samhandlinger fra ende til ende

Forutsetning

Før du begynner, må du sørge for at du oppfyller følgende forutsetninger for Azure / Microsoft 365, Amazon Web Services og lokale miljøer.

Forutsetninger for Azure / Microsoft 365

Bekreft at du har tilgang til Microsoft Entra-leier, og installer følgende verktøy for å opprette identiteter, maler og registrere agenten.

Forutsetninger for Amazon Web Services

Sørg for at følgende Amazon Web Services-tjenester og -verktøy er konfigurert for å distribuere og administrere Elastic Beanstalk-miljøet.

Forutsetninger for lokalt utviklingsmiljø

Installer og konfigurer følgende verktøy lokalt for å bygge, kjøre og distribuere agenten.

Opprett og rull ut en .NET-agent

Følgende instruksjoner beskriver hvordan du oppretter en minimal agent som gjør følgende:

  • Svarer på GET /
  • Godtar Bot Framework-aktiviteter for POST /api/messages

Opprett prosjektkatalog

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

Initialiser .NET-prosjekt

For å effektivisere funksjonen bruker denne artikkelen et eksempel som allerede er klargjort. Klon repositoriet Agent365 Samples og gå til eksemplet i dotnet\semantic-kernel\sample-agent.

Eksempelet Semantic Kernel Sample Agent – C#/.NET inneholder følgende:

  • En minimal nett-API for ASP.NET Core
  • Bot Framework-meldingshåndterer i /api/messages
  • Endepunkt for tilstandskontroll i /
  • Semantic Kernel-integrering for KI-funksjoner

Gå til dotnet\semantic-kernel\sample-agent og bekreft at prosjektet bygges uten feil:

dotnet restore
dotnet build

Konfigurer modell

Følg instruksjonene i Trinn 2: LLM-konfigurasjon for å konfigurere prosjektet ved å bruke API-nøkkelen for OpenAI.

Test lokalt (valgfritt)

  1. Før du distribuerer til Amazon Web Services, tester du agenten lokalt:

    # Run the application
    dotnet run
    
  2. Test endepunktene i en annen terminal:

    # Test agent endpoint locally
    curl http://localhost:3978
    
  3. Trykk på Ctrl+C for å stoppe den lokale serveren.

Bygg og distribuer

Velg ønsket alternativ for å bygge og distribuere dette eksempelprogrammet:

Alternativ A: Bygg og distribuer fra Visual Studio

Bruk Amazon Web Services-verktøysettet for Visual Studio til å publisere appen i Elastic Beanstalk ved å bruke en veiledet veiviser.

  1. I Løsningsutforsker høyreklikker du på prosjektet ditt.

  2. Velg Publiser til Amazon Web Services Elastic Beanstalk.

  3. Følg Beanstalk Deployment Wizard:

    • Velg profilen for Amazon Web Services-legitimasjon.
    • Velg område (for eksempel us-east-1).
    • Velg plattform (.NET Core on Linux).
    • Konfigurer miljøinnstillinger.
  4. Velg Distribuer.

Veiviseren bygger, pakker og distribuerer programmet ditt til Amazon Web Services.

Alternativ B: Bygg og distribuer til Amazon Web Services Elastic Beanstalk med CLI

Bruk Elastic Beanstalk CLI til å pakke og distribuere .NET-agenten til et 64-biters Amazon Linux 2-miljø. Sørg for at Amazon Web Services CLI og EB CLI er konfigurert. Appen bindes til miljøvariabelen PORT angitt av Beanstalk.

  1. Bygg og publiser .NET-programmet ditt:

    # Publish for Linux runtime (AWS Elastic Beanstalk uses Amazon Linux)
    dotnet publish -c Release -o ./publish --runtime linux-x64
    

    Opprett Procfile med følgende innhold.

    web: dotnet ./SemanticKernelSampleAgent.dll
    
  2. Initialiser Elastic Beanstalk for .NET. Du blir bedt om å velge område og plattform:

    eb init
    
  3. Velg følgende:

    • Plattform: 64bit-amazon-linux-2023-v3.7.0-running-.net-8
    • Område: Ønsket Amazon Web Services-område (for eksempel us-east-1)
  4. Lag en distribusjonspakke og distribuer:

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

    Denne kommandoen gjør følgende:

    • Oppretter et Elastic Beanstalk-program.
    • Oppretter et miljø med en belastningsfordeling.
    • Distribuerer programmet ditt.
    • Klargjør nødvendige Amazon Web Services-ressurser.
  5. Når du er ferdig, henter du Elastic Beanstalk-endepunktet ditt:

    eb status
    

    Noter deg endepunktet ditt. Det skal se noenlunde slik ut:

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

    Dette endepunktet er messagingEndpoint som brukes av Agent 365 Dev Tools CLI.

Notat

For produksjonsmiljøer konfigurerer du HTTPS ved å legge til et SSL/TLS-sertifikat i Elastic Beanstalk. Bot Framework krever HTTPS for produksjonsendepunkter.

Konfigurer for vertstjeneste uten Azure

Opprett a365.config.json manuelt i Elastic Beanstalk-prosjektmappen din:

Viktig!

For vertstjeneste uten Azure setter du messagingEndpoint-verdien til Elastic Beanstalk-nettadressen din med banen /api/messages.

Filen a365.config.json skal se noenlunde slik ut:

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

Tabellen nedenfor oppsummerer viktige konfigurasjonsfelter og formålet med dem.

Felt Betydning
messagingEndpoint Elastic Beanstalk-nettadressen din + /api/messages
deploymentProjectPath Der .env-stempling skjer

Bygg Agent 365-agenten

Etter at agentkoden din har kjørt mot et Amazon Web Services-endepunkt, følger du de gjenstående trinnene fra Kom i gang med Agent 365-utvikling for å konfigurere Agent 365-agenten.

Kontroller agenten fra ende til ende

Bruk disse kontrollene til å bekrefte at den Amazon Web Services-vertsbaserte agenten kan nås, mottar Bot Framework-aktiviteter og svarer riktig på tvers av Agent 365-overflater.

Bekreft tilkoblingen til Elastic Beanstalk

Send en GET-forespørsel til Elastic Beanstalk-endepunktet.

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

Forespørselen skal returnere denne meldingen:

AWS Agent is running.

Kontroller Elastic Beanstalk-logger for innkommende Bot Framework-meldinger

Bruk Elastic Beanstalk-logging til å bekrefte at agenten mottar Bot Framework-aktiviteter og svarer riktig.

eb logs

Eller strøm logger i sanntid:

eb logs --stream

Etter at agenten har mottatt en melding, ser du følgende:

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

Test agenten fra Agent 365-overflater

Du kan teste agenten fra forskjellige overflater, avhengig av miljøet ditt:

  • Agents Playground
  • Teams (hvis publisert)
  • Agent Shell
  • Samlede overflater

Du kan sende meldinger og bekrefte Elastic Beanstalk-loggene. Finn ut hvordan du tester agenter med Microsoft Agent 365 SDK og validerer agentens funksjonalitet med testverktøyet Agents Playground.

Utviklerarbeidsflyt

Når konfigurasjonen er fullført, følger du denne arbeidsflyten for gjentatt utvikling:

Utvikle og test lokalt

Bruk overvåkingsmodus for rask utvikling med automatisk innlasting på nytt:

# Automatically rebuild and restart on file changes
dotnet watch run

Gjør kodeendringer, lagre og test lokalt før du distribuerer.

Bygg og distribuer på nytt til Amazon Web Services Elastic Beanstalk

Når du er klar til å implementere endringene:

# 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

Test og overvåk

Test ved å bruke Agent 365-overflater, og overvåk Elastic Beanstalk-logger:

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

Du trenger ikke å opprette identiteten, malen, robotendepunktet eller tillatelsene på nytt.

Feilsøking

Bruk denne delen til å diagnostisere og løse vanlige problemer når du distribuerer og kjører en Agent 365-agent i Amazon Web Services Elastic Beanstalk. Den dekker tilkobling og tilstandskontroller. Den håndterer også portbinding, byggefeil og lisensieringsproblemer.

Tips

Feilsøkingsveiledning for Agent 365 inneholder anbefalinger på høyt nivå for feilsøking, anbefalte fremgangsmåter og koblinger til feilsøkingsinnhold for hver fase i utviklingssyklusen i Agent 365.

Meldingsendepunktet tar ikke imot forespørsler

Kontroller følgende detaljer:

  • Endepunktet er nøyaktig som følger:
    http://<your-app>.elasticbeanstalk.com/api/messages
  • Elastic Beanstalk-miljøet ditt er i god stand. Bruk kontrollen ved hjelp av eb health.
  • Sikkerhetsgruppen din tillater innkommende HTTP- eller HTTPS-trafikk.
  • Det finnes ingen brannmurregler eller VPC-begrensninger.

Problemer med programtilstanden

Kontroller miljøtilstanden:

eb health --refresh

Vis detaljerte logger:

eb logs

Portbindingsproblemer

Sørg for at programmet lytter på porten som er angitt av miljøvariabelen PORT. Elastic Beanstalk setter denne verdien automatisk.

.NET-bygge- eller kjøretidsproblemer

Kontroller byggefeil ved å bruke disse kommandoene:

# Clean and rebuild
dotnet clean
dotnet build --verbosity detailed

Bekreft .NET-versjonen:

dotnet --version
dotnet --list-sdks

Se etter pakkeproblemer:

# List installed packages
dotnet list package

# Update packages
dotnet restore --force

Lisenstilordning mislyktes

Tildel en gyldig Microsoft 365-lisens manuelt, eller bruk en ulisensiert brukerbane hvis den støttes.