Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nuDen här webbläsaren stöds inte längre.
Uppgradera till Microsoft Edge och dra nytta av de senaste funktionerna och säkerhetsuppdateringarna, samt teknisk support.
Azure App Service tillhandahåller en mycket skalbar webbvärdtjänst med självkorrigering med hjälp av Linux-operativsystemet. Den här självstudien visar hur du skapar en säker Node.js app i Azure App Service som är ansluten till en Azure Cosmos DB för MongoDB-databas . När du är klar har du en Express.js app som körs på Azure App Service på Linux.
I den här självstudien lär du dig att:
Du kan snabbt distribuera exempelappen i den här självstudien och se den köras i Azure. Kör bara följande kommandon i Azure Cloud Shell och följ anvisningarna:
mkdir msdocs-nodejs-mongodb-azure-sample-app
cd msdocs-nodejs-mongodb-azure-sample-app
azd init --template msdocs-nodejs-mongodb-azure-sample-app
azd up
Först konfigurerar du en exempeldatadriven app som utgångspunkt. Exempellagringsplatsen innehåller för enkelhetens skull en konfiguration av utvecklingscontainer. Utvecklingscontainern har allt du behöver för att utveckla ett program, inklusive databasen, cachen och alla miljövariabler som krävs av exempelprogrammet. Utvecklingscontainern kan köras i ett GitHub-kodområde, vilket innebär att du kan köra exemplet på valfri dator med en webbläsare.
Steg 1: I ett nytt webbläsarfönster:
Steg 2: I GitHub-förgreningen:
Steg 3: I kodområdesterminalen:
npm install && npm start
.Your application running on port 3000 is available.
väljer du Öppna i webbläsare.
Du bör se exempelprogrammet på en ny webbläsarflik. Om du vill stoppa Express.js-programmet skriver du Ctrl
+C
.Tips
Du kan fråga GitHub Copilot om den här lagringsplatsen. Till exempel:
Har du problem? Kontrollera felsökningsavsnittet.
I det här steget skapar du Azure-resurserna. Stegen som används i den här självstudien skapar en uppsättning säkra som standardresurser som inkluderar App Service och Azure Cosmos DB för MongoDB. För skapandeprocessen anger du:
https://<app-name>-<hash>.<region>.azurewebsites.net
.Logga in på Azure Portal och följ dessa steg för att skapa dina Azure App Service-resurser.
Steg 1: I Azure Portal:
Steg 2: På sidan Skapa webbapp + databas fyller du i formuläret på följande sätt.
Steg 3: Distributionen tar några minuter att slutföra. När distributionen är klar väljer du knappen Gå till resurs . Du tas direkt till App Service-appen, men följande resurser skapas:
Har du problem? Kontrollera felsökningsavsnittet.
Guiden för att skapa genererade anslutningssträngen åt dig redan som en appinställning. Bästa praxis för säkerhet är dock att hålla hemligheter borta från App Service helt. Du flyttar dina hemligheter till ett nyckelvalv och ändrar appinställningen till en Key Vault-referens med hjälp av Service Connectors.
Steg 1: På App Service-sidan:
Steg 2: Skapa ett nyckelvalv för säker hantering av hemligheter.
Steg 3:
Steg 4:
Steg 5: I dialogrutan Skapa anslutning för Key Vault-anslutningen:
Steg 6: Du är tillbaka i redigeringsdialogrutan för defaultConnector.
Steg 7: Verifiera ändringarna:
@Microsoft.KeyVault(...)
, vilket innebär att det är en nyckelvalvsreferens eftersom hemligheten nu hanteras i nyckelvalvet.Har du problem? Kontrollera felsökningsavsnittet.
I det här steget konfigurerar du GitHub-distribution med GitHub Actions. Det är bara ett av många sätt att distribuera till App Service, men också ett bra sätt att ha kontinuerlig integrering i distributionsprocessen. Som standard startar varje git push
till din GitHub-lagringsplats bygg- och distributionsåtgärden.
Steg 1: I den vänstra menyn väljer du Distributionsdistributionscenter>.
Steg 2: På sidan Distributionscenter:
.github/workflows
katalogen.
Som standard skapar distributionscentret en användartilldelad identitet för arbetsflödet som ska autentiseras med Hjälp av Microsoft Entra (OIDC-autentisering). Alternativa autentiseringsalternativ finns i Distribuera till App Service med GitHub Actions.
Steg 3: Kör i GitHub-kodområdet i exempelgrenen git pull origin starter-no-infra
.
Detta hämtar den nyligen incheckade arbetsflödesfilen till ditt kodområde.
Steg 4 (alternativ 1: med GitHub Copilot):
mongoose.connect
.getApp
i -metoden.
GitHub Copilot ger dig inte samma svar varje gång, du kan behöva ställa fler frågor för att finjustera svaret. Tips finns i Vad kan jag göra med GitHub Copilot i mitt kodområde?.Steg 4 (alternativ 2: utan GitHub Copilot):
mongoose.connect
den heter (rad 16) och ändra process.env.MONGODB_URI
till process.env.AZURE_COSMOS_CONNECTIONSTRING || process.env.MONGODB_URI
.Steg 5:
Update environment variable
. Eller välj Steg 6: Tillbaka på sidan Distributionscenter i Azure Portal:
Steg 7: Du tas till din GitHub-lagringsplats och ser att GitHub-åtgärden körs. Arbetsflödesfilen definierar två separata steg, skapa och distribuera. Vänta tills GitHub-körningen visar statusen Slutförd.
Har du problem? Kontrollera felsökningsavsnittet.
Steg 1: På App Service-sidan:
https://<app-name>.azurewebsites.net
.Steg 2: Lägg till några uppgifter i listan. Grattis, du kör en säker datadriven Node.js app i Azure App Service.
Azure App Service samlar in alla meddelanden som loggas till konsolen för att hjälpa dig att diagnostisera problem med ditt program. Exempelappen matar ut konsolloggmeddelanden i var och en av sina slutpunkter för att demonstrera den här funktionen. Slutpunkten matar till exempel get
ut ett meddelande om antalet uppgifter som hämtats från databasen och ett felmeddelande visas om något går fel.
router.get('/', function(req, res, next) {
Task.find()
.then((tasks) => {
const currentTasks = tasks.filter(task => !task.completed);
const completedTasks = tasks.filter(task => task.completed === true);
console.log(`Total tasks: ${tasks.length} Current tasks: ${currentTasks.length} Completed tasks: ${completedTasks.length}`)
res.render('index', { currentTasks: currentTasks, completedTasks: completedTasks });
})
.catch((err) => {
console.log(err);
res.send('Sorry! Something went wrong.');
});
});
Steg 1: På App Service-sidan:
Steg 2: Välj Loggström på den vänstra menyn. Du ser loggarna för din app, inklusive plattformsloggar och loggar inifrån containern.
Azure App Service tillhandahåller en webbaserad diagnostikkonsol med namnet Kudu som gör att du kan undersöka servervärdmiljön för din webbapp. Med Kudu kan du visa de filer som distribuerats till Azure, granska programmets distributionshistorik och till och med öppna en SSH-session i värdmiljön.
Steg 1: På App Service-sidan:
https://<app-name>.scm.azurewebsites.net
.Steg 2: På sidan Kudu väljer du Distributioner.
Om du distribuerar kod till App Service med git- eller zip-distribution visas en historik över distributioner av webbappen.
Steg 3: Gå tillbaka till Kudus startsida och välj Webbplats wwwroot.
Du kan se den distribuerade mappstrukturen och välja att bläddra och visa filerna.
När du är klar kan du ta bort alla resurser från din Azure-prenumeration genom att ta bort resursgruppen.
Steg 1: I sökfältet överst i Azure Portal:
Steg 2: På resursgruppssidan väljer du Ta bort resursgrupp.
Steg 3:
I det här steget skapar du Azure-resurserna och distribuerar en exempelapp för att App Service på Linux. Stegen som används i den här självstudien skapar en uppsättning säkra som standardresurser som inkluderar App Service och Azure Cosmos DB.
Utvecklingscontainern har redan Azure Developer CLI (AZD).
Från lagringsplatsens rot kör du azd init
.
azd init --template nodejs-app-service-cosmos-redis-infra
När du uppmanas att ge följande svar:
Fråga | Svar |
---|---|
Den aktuella katalogen är inte tom. Vill du initiera ett projekt här i "<din katalog>"? | Y |
Vad vill du göra med de här filerna? | Behåll mina befintliga filer oförändrade |
Ange ett nytt miljönamn | Skriv ett unikt namn. AZD-mallen använder det här namnet som en del av DNS-namnet på din webbapp i Azure (<app-name>-<hash>.azurewebsites.net ). Alfanumeriska tecken och bindestreck tillåts. |
Logga in på Azure genom att azd auth login
köra kommandot och följa kommandotolken:
azd auth login
Skapa nödvändiga Azure-resurser och distribuera appkoden med azd up
kommandot . Följ uppmaningen för att välja önskad prenumeration och plats för Azure-resurserna.
azd up
Kommandot azd up
tar cirka 15 minuter att slutföra (Redis-cachen tar mest tid). Den kompilerar och distribuerar även programkoden, men du ändrar koden senare så att den fungerar med App Service. När den körs innehåller kommandot meddelanden om etablerings- och distributionsprocessen, inklusive en länk till distributionen i Azure. När det är klart visar kommandot även en länk till distributionsprogrammet.
Den här AZD-mallen innehåller filer (azure.yaml och infra-katalogen ) som genererar en säker arkitektur som standard med följande Azure-resurser:
När kommandot har skapat resurser och distribuerat programkoden första gången fungerar inte den distribuerade exempelappen ännu eftersom du måste göra små ändringar för att den ska kunna ansluta till databasen i Azure.
Den AZD-mall som du använder genererade anslutningsvariablerna åt dig redan som appinställningar och matar ut dem till terminalen för din bekvämlighet. Appinställningar är ett sätt att hålla anslutningshemligheter borta från din kodlagringsplats.
Leta reda på appinställningen AZURE_COSMOS_CONNECTIONSTRING
i AZD-utdata. Endast inställningsnamnen visas. De ser ut så här i AZD-utdata:
App Service app has the following app settings: - AZURE_COSMOS_CONNECTIONSTRING - AZURE_REDIS_CONNECTIONSTRING - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPE
AZURE_COSMOS_CONNECTIONSTRING
innehåller anslutningssträng till Cosmos DB-databasen i Azure. Du måste använda den i koden senare.
För att underlätta för dig visar AZD-mallen direktlänken till appens appinställningarssida. Hitta länken och öppna den på en ny webbläsarflik.
Har du problem? Kontrollera felsökningsavsnittet.
Starta en ny chattsession i GitHub-kodområdet genom att klicka på vyn Chatt och sedan klicka på +.
Fråga: "@workspace Hur ansluter appen till databasen?" Copilot kan peka dig till filen app.js och anropet mongoose.connect
.
Säg" Jag har en anslutningssträng variabel i Azure som heter AZURE_COSMOS_CONNECTIONSTRING.". Copilot kan ge dig ett kodförslag som liknar det i alternativ 2: utan GitHub Copilot-stegen nedan och till och med be dig att göra ändringen i app.js.
Öppna app.js i utforskaren och lägg till kodförslaget getApp
i -metoden.
GitHub Copilot ger dig inte samma svar varje gång, du kan behöva ställa fler frågor för att finjustera svaret. Tips finns i Vad kan jag göra med GitHub Copilot i mitt kodområde?.
Kör tillbaka i kodområdesterminalen azd deploy
.
azd deploy
Tips
Du kan också bara använda azd up
always, vilket gör allt av azd package
, azd provision
och azd deploy
.
Har du problem? Kontrollera felsökningsavsnittet.
I AZD-utdata letar du reda på url:en för din app och navigerar till den i webbläsaren. URL:en ser ut så här i AZD-utdata:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://<app-name>-<hash>.azurewebsites.net/
Lägg till några uppgifter i listan.
Grattis, du kör en webbapp i Azure App Service med säker anslutning till Azure Cosmos DB.
Har du problem? Kontrollera felsökningsavsnittet.
Azure App Service samlar in alla meddelanden som loggas till konsolen för att hjälpa dig att diagnostisera problem med ditt program. Exempelappen matar ut konsolloggmeddelanden i var och en av sina slutpunkter för att demonstrera den här funktionen. Slutpunkten matar till exempel get
ut ett meddelande om antalet uppgifter som hämtats från databasen och ett felmeddelande visas om något går fel.
router.get('/', function(req, res, next) {
Task.find()
.then((tasks) => {
const currentTasks = tasks.filter(task => !task.completed);
const completedTasks = tasks.filter(task => task.completed === true);
console.log(`Total tasks: ${tasks.length} Current tasks: ${currentTasks.length} Completed tasks: ${completedTasks.length}`)
res.render('index', { currentTasks: currentTasks, completedTasks: completedTasks });
})
.catch((err) => {
console.log(err);
res.send('Sorry! Something went wrong.');
});
});
I AZD-utdata hittar du länken för att strömma App Service-loggar och navigera till den i webbläsaren. Länken ser ut så här i AZD-utdata:
Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream
Läs mer om loggning i Java-appar i serien på Aktivera Azure Monitor OpenTelemetry för .NET-, Node.js-, Python- och Java-program.
Har du problem? Kontrollera felsökningsavsnittet.
Om du vill ta bort alla Azure-resurser i den aktuella distributionsmiljön kör azd down
du och följer anvisningarna.
azd down
Beroende på din prenumeration och den region du väljer kan distributionsstatusen för Azure Cosmos DB vara Conflict
, med följande meddelande i Åtgärdsinformation:
Sorry, we are currently experiencing high demand in <region> region, and cannot fulfill your request at this time.
Felet orsakas troligen av en gräns för din prenumeration för den region du väljer. Prova att välja en annan region för distributionen.
Du behöver förmodligen fortfarande göra anslutningssträng ändringar i programkoden. Se 4. Distribuera exempelkod.
Prissättningen för de skapade resurserna är följande:
mongosh
från appens SSH-terminal. Appens container levereras inte med mongosh
, så du måste installera den manuellt. Kom ihåg att den installerade klienten inte finns kvar i omstarter av appar.Ta den autogenererade arbetsflödesfilen från App Service som exempel. Var git push
och en startar en ny version och distributionskörning. Från en lokal klon av GitHub-lagringsplatsen får du önskade uppdateringar att skicka den till GitHub. Till exempel:
git add .
git commit -m "<some-message>"
git push origin main
Den autogenererade arbetsflödesfilen från App Service definierar build-then-deploy, two-job run. Eftersom varje jobb körs i en egen ren miljö ser arbetsflödesfilen till att deploy
jobbet har åtkomst till filerna från build
jobbet:
build
jobbet laddar du upp filer som artefakter.deploy
jobbet laddar du ned artefakterna.Merparten av den tid det tar för tvåjobbsprocessen är att ladda upp och ladda ned artefakter. Om du vill kan du förenkla arbetsflödesfilen genom att kombinera de två jobben till ett, vilket eliminerar behovet av uppladdnings- och nedladdningsstegen.
Se Konfigurera GitHub Actions-distribution från Distributionscenter.
Du kanske märker att GitHub Copilot-chattvyn redan fanns där när du skapade kodområdet. För din bekvämlighet inkluderar vi GitHub Copilot-chatttillägget i containerdefinitionen (se .devcontainer/devcontainer.json). Du behöver dock ett GitHub Copilot-konto (30 dagars kostnadsfri utvärderingsversion tillgänglig).
Några tips när du pratar med GitHub Copilot:
@workspace
. Mer information finns i Use the @workspace agent.@workspace
) även var ändringarna ska utföras, men det är inte tillåtet att göra ändringarna åt dig. Det är upp till dig att lägga till de föreslagna ändringarna och testa dem.Här är några andra saker du kan säga för att finjustera svaret du får:
Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nuUtbildning
Modul
Guidat projekt: Skapa och distribuera din egen AI Copilot - Training
Skapa en AI-andrepilot för Contoso Bike Shop. Integrera Azure OpenAI och Cosmos DB för att aktivera avancerade datasökningar, använda GPT-3.5 för förbättrade resultat och distribuera lösningen på Azure Kubernetes Service.
Certifiering
Microsoftcertifierad: Azure Cosmos DB-utvecklarspecialitet - Certifications
Skriva effektiva frågor, skapa indexeringsprinciper, hantera och etablera resurser i SQL API och SDK med Microsoft Azure Cosmos DB.