Bygg en Agent 365-agent som driftsätts i Amazon Web Services (AWS)

Lär dig hur du bygger, driftsätter, registrerar och publicerar en Agent 365-agent som körs på AWS Elastic Beanstalk, med hjälp av Agent 365 CLI. Microsoft Entra och Graph tillhandahåller agentens identitet, behörigheter och Blueprint, medan AWS Elastic Beanstalk tillhandahåller körmiljön.

Om du vill peka din agent till din kod som finns bakom en AWS-slutpunkt behöver du bara följande steg: Konfigurera för icke-Azure-hosting. Följ sedan alla andra steg från Kom igång med utveckling av Agent 365.

Mål

Lär dig att använda Agent 365 och Microsoft 365 som "kontrollplanet" och:

  • Distribuera agentens körmiljö på AWS Elastic Beanstalk
  • Konfigurera a365.config.json för värdmiljö utanför Azure
  • Skapa Agent Blueprint i Entra ID
  • Konfigurera OAuth2 + ärvbara behörigheter
  • Registrera Bot Framework slutpunkt för meddelanden riktad mot AWS
  • Skapa agentidentitet + agentanvändare
  • (Valfritt) Publicera till Microsoft 365-ytor
  • Testa kompletta interaktioner

Krav

Innan du börjar, säkerställ att följande Azure / Microsoft 365-, AWS- och lokala förutsättningar är uppfyllda.

Azure / Microsoft 365 förutsättningar

Bekräfta att du har åtkomst till din Microsoft Entra-tenant och installera följande verktyg för att skapa identiteter, blueprints och registrera din agent.

Förutsättningar för Amazon Web Services (AWS)

Säkerställ att följande AWS-tjänster och verktyg är konfigurerade för att distribuera och hantera din Elastic Beanstalk-miljö.

Förutsättningar för lokal utvecklingsmiljö

Installera och konfigurera följande verktyg lokalt för att bygga, köra och distribuera agenten.

Skapa och distribuera en .NET-agent

Följande instruktioner beskriver hur man skapar en minimal agent som:

  • Svarar på GET /
  • Accepterar Bot Framework-aktiviteter på POST /api/messages

Skapa projektkatalog

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

Initiera .NET-projekt

För att förenkla din upplevelse använder den här artikeln ett exempel som redan är förberett. Klona Agent365 Samples-lagringsplats och gå till DotNet\semantic-kernel\sample-agent-exemplet.

Semantic Kernel Sample Agent - C#/.NET-exemplet inkluderar:

  • Ett minimalt ASP.NET Core Web API
  • Bot Framework-meddelandehanterare på /api/messages
  • Hälsokontroll-slutpunkt/
  • Semantic Kernel-integrering för AI-funktioner

Gå till dotnet\semantic-kernel\sample-agent och verifiera att projektet bygger korrekt:

dotnet restore
dotnet build

Konfigurera modellen

Följ instruktionerna i Steg 2: LLM-konfiguration för att konfigurera projektet med din Open API-nyckel.

Testa lokalt (valfritt)

  1. Testa din agent lokalt innan du distribuerar till AWS:

    # Run the application
    dotnet run
    
  2. Testa slutpunkterna i en annan terminal:

    # Test agent endpoint locally
    curl http://localhost:3978
    
  3. Tryck Ctrl+C för att stoppa den lokala servern.

Skapa och distribuera

Välj det alternativ du föredrar för att bygga och distribuera denna exempelapp:

Alternativ A: Bygg och distribuera från Visual Studio

Använd AWS Toolkit för Visual Studio för att publicera appen till Elastic Beanstalk med hjälp av en guidad guide.

  1. I Lösningsutforskaren, högerklicka på ditt projekt.

  2. Välj Publicera till AWS Elastic Beanstalk.

  3. Följ Beanstalk-distributionsguiden:

    • Välj din AWS-profil för autentisering.
    • Välj region (till exempel us-east-1).
    • Välj plattform (.NET Core on Linux).
    • Konfigurera miljöinställningar.
  4. Välj distribuera.

Guiden bygger, paketerar och distribuerar din app till AWS.

Alternativ B: Bygg och distribuera till AWS Elastic Beanstalk med CLI

Använd Elastic Beanstalk CLI för att paketera och distribuera .NET-agenten till en 64-bitars Amazon Linux 2-miljö. Se till att AWS CLI och EB CLI är konfigurerade. Appen binder till miljövariabeln PORT som Beanstalk ställer in.

  1. Bygg och publicera din .NET-app:

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

    Skapa Procfile med följande innehåll.

    web: dotnet ./SemanticKernelSampleAgent.dll
    
  2. Initiera Elastic Beanstalk för .NET. Du ombeds välja Region och Plattform:

    eb init
    
  3. Välj:

    • Plattform: 64bit-amazon-linux-2023-v3.7.0-running-.net-8
    • Region: Din föredragna AWS-region (till exempel: us-east-1)
  4. Skapa ett distributionspaket och distribuera:

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

    Det här kommandot:

    • Skapar en Elastic Beanstalk-app.
    • Skapar en miljö med en lastbalanserare.
    • Distribuerar din app.
    • Skapar nödvändiga AWS-resurser.
  5. När du är klar, hämta din Elastic Beanstalk-slutpunkt:

    eb status
    

    Notera din slutpunkt. Den bör se ut ungefär så här:

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

    Detta är slutpunkten messagingEndpoint som används av Agent 365 Dev Tools CLI.

Kommentar

För produktionsmiljöer, konfigurera HTTPS genom att lägga till ett SSL/TLS-certifikat i Elastic Beanstalk. Bot Framework kräver HTTPS för produktionsslutpunkter.

Konfigurera för värdmiljö utanför Azure

Skapa a365.config.json manuellt i din Elastic Beanstalk-projektmapp:

Viktigt

För icke-Azure-värdtjänst, ange värdet för messagingEndpoint till din Elastic Beanstalk-URL med sökvägen /api/messages.

a365.config.json-filen bör se ut ungefär som följer:

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

Följande tabell sammanfattar viktiga konfigurationsfält och deras syfte.

Fält Betydelse
messagingEndpoint Din Elastic Beanstalk-URL + /api/messages
deploymentProjectPath Där .env-stämpling sker

Bygg Agent 365-agent

Efter att din agentkod har körts mot en AWS-slutpunkt, följ de återstående stegen från Kom igång med Agent 365-utvecklingen för att konfigurera din Agent 365-agent.

Verifiera agenten från början till slut

Använd dessa kontroller för att säkerställa att din AWS-hostade agent är nåbar, tar emot Bot Framework-aktiviteter och svarar korrekt över Agent 365-ytor.

Verifiera Elastic Beanstalk-anslutning

Skicka en GET-förfrågan till din Elastic Beanstalk-slutpunkt.

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

Förfrågan bör returnera detta meddelande:

AWS Agent is running.

Kontrollera Elastic Beanstalk-loggar för inkommande meddelanden från Bot Framework

Använd Elastic Beanstalk-loggning för att verifiera att din agent tar emot Bot Framework-aktiviteter och svarar korrekt.

eb logs

Eller strömma loggar i realtid:

eb logs --stream

När ett meddelande når din agent ser du:

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

Testämne från Agent 365-ytor

Beroende på din miljö kan du testa din agent från olika gränssnitt:

  • Testplats för agenter
  • Teams (om publicerat)
  • Agent Shell
  • Federerade ytor

Du kan skicka meddelanden och verifiera dina Elastic Beanstalk-loggar. Lär dig att testa agenter med Microsoft Agent 365 SDK och att validera din agents funktionalitet med testverktyget Agents Playground.

Arbetsflöde för utvecklare

När installationen är klar, följ detta arbetsflöde för iterativ utveckling:

Utveckla och testa lokalt

Använd watch mode för snabb utveckling med automatisk omladdning:

# Automatically rebuild and restart on file changes
dotnet watch run

Gör dina kodändringar, spara och testa lokalt innan du distribuerar.

Bygg och distribuera om till AWS Elastic Beanstalk

När du är redo att distribuera dina ändringar:

# 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

Testa och övervaka

Testa med hjälp av Agent 365-gränssnitt och övervaka Elastic Beanstalk-loggar:

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

Du behöver inte skapa om din identitet, ritning, robotslutpunkter eller behörigheter.

Felsökning

Använd detta avsnitt för att identifiera och åtgärda vanliga problem vid distribution och drift av en Agent 365-agent på AWS Elastic Beanstalk. Den täcker anslutning och hälsokontroller. Avsnittet behandlar även portbindning, byggfel och licensieringsproblem.

Dricks

Agent 365-felsökningsguide innehåller övergripande felsökningsrekommendationer, bästa praxis och länkar till felsökningsinnehåll för varje enskild del av Agent 365:s utvecklingslivscykel.

Meddelandeslutpunkten tar inte emot begäranden

Kontrollera följande detaljerad information:

  • Din slutpunkt är exakt följande:
    http://<your-app>.elasticbeanstalk.com/api/messages
  • Din Elastic Beanstalk-miljö har god hälsostatus. Använd kontrollen genom att använda eb health.
  • Din säkerhetsgrupp tillåter inkommande HTTP- eller HTTPS-trafik.
  • Det finns inga brandväggsregler eller VPC-begränsningar.

Problem med appens hälsa

Kontrollera miljöns hälsa:

eb health --refresh

Visa detaljerade loggar:

eb logs

Portbindningsproblem

Säkerställ att appen lyssnar på den port som anges av miljövariabeln PORT. Elastic Beanstalk sätter detta värde automatiskt.

.NET-bygg- eller körtidsproblem

Kontrollera byggfel med dessa kommandon:

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

Verifiera .NET-versionen:

dotnet --version
dotnet --list-sdks

Kontrollera eventuella paketproblem:

# List installed packages
dotnet list package

# Update packages
dotnet restore --force

Licenstilldelning misslyckas

Tilldela manuellt en giltig Microsoft 365-licens, eller använd ett alternativ för olicensierade användare om det stöds.