Kurz: Nasazení aplikace ASP.NET Core a Azure SQL Database do Azure App Service

V tomto kurzu se dozvíte, jak nasadit aplikaci ASP.NET Core řízenou daty pro Azure App Service a připojit se k Azure SQL Database. Azure App Service je služba, která je vysoce škálovatelná a automaticky opravuje chyby, a snadno nasazuje aplikace na Windows nebo Linuxu. Ačkoliv tento tutoriál používá aplikaci ASP.NET Core 10.0, postup je stejný i u ostatních verzí ASP.NET Core.

V tomto kurzu se naučíte:

  • Vytvořte architekturu App Service a databáze SQL zabezpečenou ve výchozím nastavení.
  • Zabezpečení tajemství připojení pomocí spravované identity a odkazů na Key Vault.
  • Nasaďte ukázkovou aplikaci ASP.NET Core do služby App Service z úložiště GitHub.
  • Získat přístup k připojovacím řetězcům služby App Service a nastavením aplikace v kódu aplikace.
  • Proveďte aktualizace a znovu nasaďte kód aplikace.
  • Vygenerujte schéma databáze tak, že nahrajete sadu migrací.
  • Streamování diagnostických protokolů z Azure
  • Spravujte aplikaci na portálu Azure.
  • Pomocí rozhraní příkazového řádku pro vývojáře Azure zřiďte stejnou architekturu a nasaďte ji.
  • Optimalizujte vývojový pracovní postup pomocí GitHub Codespaces a GitHub Copilot.

Požadavky

  • Účet Azure s aktivním předplatným. Pokud účet Azure nemáte, můžete si ho zdarma vytvořit .
  • Účet GitHub. Můžete si ho také zdarma získat.
  • Znalost vývoje ASP.NET Core
  • (volitelné) Pro vyzkoušení GitHub Copilot potřebujete účet GitHub Copilot. K dispozici je 30denní bezplatná zkušební verze.
  • Účet Azure s aktivním předplatným. Pokud účet Azure nemáte, můžete si ho zdarma vytvořit .
  • Azure Developer CLI nainstalováno. Postup můžete provést pomocí Azure Cloud Shell, protože už má nainstalované rozhraní příkazového řádku pro vývojáře Azure.
  • Znalost vývoje ASP.NET Core
  • (volitelné) Pro vyzkoušení GitHub Copilot potřebujete účet GitHub Copilot. K dispozici je 30denní bezplatná zkušební verze.

Přeskočit na konec

Pokud chcete jenom zobrazit ukázkovou aplikaci v tomto kurzu spuštěném v Azure, stačí spustit následující příkazy v Azure Cloud Shell a postupovat podle pokynů:

dotnet tool install --global dotnet-ef --version 10.*
mkdir msdocs-app-service-sqldb-dotnetcore
cd msdocs-app-service-sqldb-dotnetcore
azd init --template msdocs-app-service-sqldb-dotnetcore .
azd up

Spusťte ukázku

Nejprve nastavte ukázkovou aplikaci řízenou daty jako výchozí bod. Pro usnadnění vašeho pohodlí zahrnuje ukázkové úložiště konfiguraci vývojového kontejneru . Vývojový kontejner obsahuje vše, co potřebujete k vývoji aplikace, včetně databáze a všech proměnných prostředí potřebných pro ukázkovou aplikaci. Vývojový kontejner může běžet v GitHub codespace, což znamená, že ukázku můžete spustit na libovolném počítači s webovým prohlížečem.

Krok 1: V novém okně prohlížeče:

  1. Přihlaste se ke svému účtu GitHub.
  2. Přejděte na https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore/fork.
  3. Zrušte výběr Kopírovat pouze hlavní větev. Chcete všechny větve.
  4. Vyberte Vytvořit fork.

Krok 2: V klonu GitHub:

  1. Vyberte hlavní>starter-no-infra pro počáteční větev. Tato větev obsahuje pouze ukázkový projekt a žádné Azure související soubory ani konfiguraci.
  2. Vyberte Kód>Codespaces>Vytvořit codespace na starter-no-infra. Nastavení codespace trvá několik minut.

Krok 3: V terminálu codespace:

  1. Obnovit balíčky NuGet pomocí dotnet restore.
  2. Spusťte migrace databází pomocí dotnet ef database updatepříkazu .
  3. Spusťte aplikaci pomocí dotnet runpříkazu .
  4. Až se zobrazí oznámení Your application running on port 5093 is available., vyberte Otevřít v prohlížeči. Ukázkovou aplikaci byste měli vidět na nové kartě prohlížeče. Chcete-li aplikaci zastavit, zadejte Ctrl+C.

Návod

O tomto úložišti se můžete zeptat GitHub Copilot. Příklad:

  • @workspace Co tento projekt dělá?
  • @workspace Co dělá složka .devcontainer?

Máte problémy? Projděte si část Řešení potíží.

2. Vytvořit App Service a databázi

V tomto kroku vytvoříte prostředky Azure. Kroky v tomto tutoriálu vytvářejí sadu bezpečných zdrojů ve výchozím nastavení, které zahrnují App Service a Azure SQL Database. Pro proces tvorby uveďte:

  • Název webové aplikace. Používá se jako součást názvu DNS pro vaši aplikaci.
  • Oblast, ve které se má aplikace spouštět ve fyzickém světě. Používá se také jako součást názvu DNS pro vaši aplikaci.
  • Zásobník modulu runtime pro aplikaci. Tady vyberete verzi .NET, kterou chcete použít pro vaši aplikaci.
  • Plán hostování aplikace. Je to cenová úroveň, která zahrnuje sadu funkcí a kapacitu škálování vaší aplikace.
  • Skupina prostředků pro aplikaci. Skupina prostředků umožňuje seskupovat (v logickém kontejneru) všechny Azure prostředky potřebné pro aplikaci.

Přihlaste se k portálu Azure a podle těchto kroků vytvořte prostředky Azure App Service.

Step 1: Na portálu Azure:

  1. Na horním panelu hledání zadejte app service.
  2. Vyberte položku s popiskem App Service pod nadpisem Služby .
  3. Vyberte Vytvořit>webovou aplikaci. Můžete také přejít přímo do průvodce creation.

Krok 2: Konfigurujte novou aplikaci V Vytvořit webovou aplikaci vyplňte formulář následovně.

  1. Název: msdocs-core-sql-XYZ. Pro vás se vygeneruje skupina prostředků s názvem msdocs-core-sql-XYZ_group .
  2. Runtime stack: .NET 10 (LTS).
  3. Operační systém: Linux.
  4. Oblast: upřednostňovaná oblast.
  5. Plán Pro Linux: Vytvořte nové a použijte název msdocs-core-sql-XYZ.
  6. Cenový plán: Basic B1. Až budete připraveni, můžete vertikálně navýšit kapacitu na jinou cenovou úroveň.

Krok 3: Přidání databáze

  1. Vyberte kartu Databáze .
  2. Vyberte Vytvořit databázi.
  3. V engine vyberte SQLAzure. Název serveru a název databáze jsou standardně nastavené na odpovídající hodnoty.
  4. Nevybírejte možnost Vytvořit Azure Cache for Redis. Tento typ služby již není podporován.

Krok 4: Konfigurace nasazení GitHubu

  1. Vyberte kartu Nasazení .
  2. Povolte průběžné nasazování.
  3. V Organization vyberte svůj alias GitHub.
  4. V úložišti vyberte msdocs-app-service-sqldb-dotnetcore.
  5. Ve Branch vyberte starter-no-infra.
  6. Ujistěte se, že je zakázáno základní ověřování.
  7. Vyberte Přezkoumat a vytvořit.
  8. Po dokončení ověření vyberte Vytvořit.

Krok 5: Dokončení nasazení trvá několik minut. Jakmile je nasazení dokončeno, vyberte tlačítko Přejít k prostředku. Přejdete přímo do aplikace App Service, ale vytvoří se následující prostředky:

  • Skupina prostředků: Kontejner pro všechny vytvořené prostředky.
  • Plán služby App Service: Definuje výpočetní prostředky pro Službu App Service. Vytvoří se plán Linuxu na úrovni Basic .
  • App Service: Představuje vaši aplikaci a spouští se v plánu služby App Service.
  • Virtuální síť: Integrovaná s aplikací App Service a izoluje provoz back-endové sítě.
  • Soukromé koncové body: Přístupové koncové body pro klíčový trezor a databázový server ve virtuální síti.
  • Síťová rozhraní: Představuje privátní IP adresy, jednu pro každý privátní koncový bod.
  • Azure SQL Database server: Přístupné pouze ze svého privátního koncového bodu.
  • Azure SQL Database: Na serveru se vytvoří databáze a uživatel.
  • Trezor klíčů: Přístupný pouze ze svého privátního koncového bodu. Slouží ke správě tajných kódů pro aplikaci App Service.
  • Privátní DNS zóny: Povolte DNS řešení klíčového trezoru a databázového serveru ve virtuální síti.

3. Zabezpečení tajných kódů připojení

Průvodce vytvořením pro vás již vygeneroval proměnnou konektivity jako .NET připojovací řetězce a nastavení aplikace. Osvědčeným postupem zabezpečení je ale úplné zachování tajných kódů mimo službu App Service. Přesunete tajemství do trezoru na klíče a změníte nastavení aplikace na odkazy na trezor na klíče pomocí konektorů služby.

Návod

Pokud chcete použít ověřování bez hesla, přečtěte si téma Jak změním připojení služby SQL Database tak, aby místo toho používala spravovanou identitu?

Step 1: Načtení existujícího připojovací řetězec

  1. V nabídce vlevo na stránce služby App Service vyberte Nastavení > Proměnné prostředí > Připojovací řetězce.
  2. Vyberte AZURE_SQL_CONNECTIONSTRING.
  3. V Přidat/Upravit připojovací řetězec v poli Hodnota najděte část Password=.
  4. Zkopírujte řetězec hesla za heslem = pro pozdější použití. Tento připojovací řetězec umožňuje připojit se k databázi SQL zabezpečené za privátním koncovým bodem. Tajný kód se ale uloží přímo v aplikaci App Service, což není nejlepší. Změníte to.

Krok 2: Vytvoření trezoru klíčů pro zabezpečenou správu tajných kódů

  1. Na horním panelu hledání zadejte "key vault" a pak vyberte Marketplace>Key Vault.
  2. Ve skupině prostředků vyberte msdocs-core-sql-XYZ_group.
  3. Do názvu trezoru klíčů zadejte název, který se skládá jenom z písmen a číslic.
  4. V oblasti ji nastavte na stejné umístění jako skupina prostředků.

Krok 3: Zabezpečení trezoru klíčů pomocí privátního koncového bodu

  1. Vyberte kartu Sítě .
  2. Zrušte výběr možnosti Povolit veřejný přístup.
  3. Vyberte Vytvořit privátní koncový bod.
  4. Ve skupině prostředků vyberte msdocs-core-sql-XYZ_group.
  5. V dialogovém okně v umístění vyberte stejné umístění jako vaše aplikace App Service.
  6. Do pole Název zadejte msdocs-core-sql-XYZVvaultEndpoint.
  7. Ve virtuální síti vyberte virtuální síť ve skupině msdocs-core-sql-XYZ_group .
  8. V podsíti vyberte dostupnou kompatibilní podsíť. Průvodce webovou aplikací ho vytvořil pro vaše pohodlí.
  9. Vyberte OK.
  10. Vyberte Zkontrolovat a vytvořit a pak vyberte Vytvořit. Počkejte na dokončení nasazení trezoru klíčů. Měla by se zobrazit informace o tom, že vaše nasazení je dokončené.

Krok 4:

  1. Na horním panelu hledání zadejte msdocs-core-sql a pak prostředek služby App Service s názvem msdocs-core-sql-XYZ.
  2. Na stránce služby App Service vyberte v nabídce vlevo Nastavení > Konektor služby. Už existuje konektor pro SQL databázi, který pro vás vytvořil průvodce vytvořením aplikace.
  3. Zaškrtněte políčko vedle konektoru služby SQL Database a pak vyberte Upravit.
  4. Vyberte kartu Ověřování .
  5. Do pole Heslo vložte dříve zkopírované heslo.
  6. Vyberte Uložit tajemství v Key Vault.
  7. V části Key Vault Connection vyberte Create new. V horní části dialogového okna pro úpravy se otevře dialogové okno Vytvořit připojení .

Step 5: Navázání připojení Key Vault

  1. V dialogovém okně Vytvořit připojení pro připojení Key Vault vyberte v Key Vault ten klíčový trezor, který jste vytvořili dříve.
  2. Vyberte Zkontrolovat a vytvořit.
  3. Po dokončení ověření vyberte Vytvořit.

Krok 6: Dokončení nastavení konektoru služby SQL Database

  1. Jste zpátky v dialogovém okně pro úpravy pro defaultConnector. Na kartě Ověřování počkejte, až bude vytvořen konektor pro trezor klíčů. Po dokončení se rozevírací seznam Key Vault connection automaticky vybere.
  2. Vyberte Další: Sítě.
  3. Zvolte Konfigurovat pravidla brány firewall pro povolení přístupu k cílové službě. Průvodce vytvořením aplikace už databázi SQL zabezpečil privátním koncovým bodem.
  4. Vyberte Uložit. Počkejte, až se zobrazí oznámení o úspěšném dokončení aktualizace .

Krok 7: Ověření integrace služby Key Vault

  1. V nabídce vlevo vyberte znovu Nastavení > Proměnné prostředí > Připojovací řetězce.
  2. Vedle AZURE_SQL_CONNECTIONSTRING vyberte Zobrazit hodnotu. Hodnota by měla být @Microsoft.KeyVault(...), což znamená, že se jedná o odkaz na klíčový trezor klíčový trezor, protože tajemství je nyní spravováno v klíčovém trezoru.

Shrnutí: Proces zabezpečení tajných kódů připojení:

  • Načítání tajných kódů připojení z proměnných prostředí aplikace App Service
  • Vytvoření trezoru klíčů
  • Vytvoření připojení ke Key Vault se spravovanou identitou přiřazené systémem
  • Aktualizace konektoru SQL Database pro ukládání tajného klíče v trezoru klíčů.

4. Nasazení ukázkového kódu

V tomto kroku nakonfigurujete nasazení GitHub pomocí GitHub Actions. Je to jen jeden z mnoha způsobů nasazení do služby App Service, ale také skvělý způsob, jak mít kontinuální integraci v procesu nasazení. Ve výchozím nastavení spustí každý git push do úložiště GitHub akci sestavení a nasazení.

Krok 1: Zpět v prostoru kódu GitHub ukázkového forku spusťte git pull origin starter-no-infra. Tím se do vašeho prostoru kódu načte nově potvrzený soubor pracovního postupu.

Snímek obrazovky zobrazující git pull uvnitř GitHub codespace.

Krok 2 (možnost 1: s GitHub Copilot):

  1. Začněte novou chatovací relaci výběrem zobrazení chatu a pak vyberte +.
  2. Zeptejte se: "@workspace Jak se aplikace připojuje k databázi?"Copilot ti možná vysvětlí něco o třídě MyDatabaseContext a jak je nastavená v Program.cs.
  3. Zeptejte se: "V produkčním režimu chci, aby aplikace používala připojovací řetězec nazvaný AZURE_SQL_CONNECTIONSTRING pro databázi." Copilot vám může nabídnout kód podobný tomu v Možnosti 2: bez GitHub Copilot kroků, které následují a dokonce vám řeknou, abyste změnu provedli v Program.cs souboru.
  4. Otevřete Program.cs v průzkumníku a přidejte návrh kódu. GitHub Copilot nedává pokaždé stejnou odpověď a není vždy správná. Možná budete muset položit další otázky, abyste vyladili jeho odpověď. Tipy najdete v tématu Co můžu dělat s GitHub Copilotem v kódu?

Krok 2 (možnost 2: bez GitHub Copilot):

  1. V průzkumníku otevřete Program.cs .
  2. Najděte zakomentovaný produkční blok else a odkomentujte jej. Tento kód se připojuje k databázi pomocí .AZURE_SQL_CONNECTIONSTRING

Step 3 (možnost 1: s GitHub Copilot):

  1. Otevřete .github/workflows/starter-no-infra_msdocs-core-sql-XYZ v průzkumníku. Tento soubor vytvořil průvodce vytvořením služby App Service.
  2. dotnet publish Zvýrazněte krok a vyberte .
  3. Zeptejte se Copilota: "Nainstalujte nástroje EF Core pro .NET 10, obnovte linuxové x64 runtime assety a vytvořte linuxový x64 migrační balíček ve stejné výstupní složce."
  4. Pokud je návrh přijatelný, vyberte Přijmout. GitHub Copilot nedává pokaždé stejnou odpověď a není vždy správná. Možná budete muset položit další otázky, abyste vyladili jeho odpověď. Tipy najdete v tématu Co můžu dělat s GitHub Copilotem v kódu?

Krok 3 (možnost 2: bez GitHub Copilot):

  1. Otevřete .github/workflows/starter-no-infra_msdocs-core-sql-XYZ v průzkumníku. Tento soubor vytvořil průvodce vytvořením služby App Service.
  2. V kroku dotnet publish přidejte krok pro instalaci nástroje Entity Framework Core pomocí příkazu dotnet tool install -g dotnet-ef --version 10.*.
  3. Pod nový krok přidejte další krok pro obnovení prostředků modulu runtime systému Linux pomocí příkazu dotnet restore --runtime linux-x64.
  4. V kroku obnovení přidejte do balíčku nasazení další krok pro vygenerování databázového balíčku migrací: dotnet ef migrations bundle --runtime linux-x64 -o ${{env.DOTNET_ROOT}}/myapp/migrationsbundle. Sada migrace je samostatný spustitelný soubor, který můžete spustit v produkčním prostředí bez nutnosti .NET SDK. Kontejner App Service Linux má pouze .NET runtime a ne .NET SDK.

snímek obrazovky znázorňující kroky přidané do pracovního postupu GitHub pro sadu prostředků migrace databáze.

Krok 4:

  1. Vyberte rozšíření Správa verzí.
  2. Do textového pole napište commit zprávu například Configure Azure database connection. Nebo vyberte a nechte GitHub Copilot vygenerovat zprávu potvrzení za vás.
  3. Vyberte Potvrdit a potvrďte akci ano.
  4. Vyberte Synchronizovat změny 1 a potvrďte OK.

Krok 5: Zpět na stránce Deployment Center na portálu Azure:

  1. Vyberte kartu Protokoly a poté vyberte Aktualizovat, abyste viděli nový běh nasazení.
  2. V položce protokolu pro spuštění nasazení vyberte položku Sestavit/Nasadit protokoly s nejnovějším časovým razítkem.

Step 6: Jste přesměrováni do úložiště GitHub a uvidíte, že je spuštěná akce GitHub. Soubor pracovního postupu definuje dvě samostatné fáze, sestavení a nasazení. Počkejte, až se na GitHubu zobrazí stav Success. Trvá to asi 5 minut.

Máte problémy? Projděte si část Řešení potíží.

5. Generování schématu databáze

S databází SQL chráněnou virtuální sítí je nejjednodušší způsob, jak spouštět migrace databází dotnet, v relaci SSH v Linuxovém kontejneru v rámci služby App Service.

Krok 1: Zpět na stránce služby App Service v nabídce vlevo

  1. Vyberte Vývojové nástroje>SSH.
  2. Vyberte Přejít. (To spuštění trvá několik minut.)

Krok 2: V relaci SSH:

  1. Spusťte cd /home/site/wwwroot. Tady jsou všechny vaše nasazené soubory.
  2. Spusťte sadu migrace, kterou vygeneroval pracovní postup GitHub, pomocí příkazu ./migrationsbundle -- --environment Production. Pokud proběhne úspěšně, služba App Service se úspěšně připojuje ke službě SQL Database. Nezapomeňte, že odpovídá změnám kódu, které --environment Production jste provedli v Program.cs.

V relaci SSH se změny souborů v /home můžou zachovat i po restartování aplikace. Změny mimo /home se neuchovávají.

Máte problémy? Projděte si část Řešení potíží.

6. Přejděte do aplikace.

Krok 1: Na stránce služby App Service:

  1. V nabídce vlevo vyberte Přehled.
  2. Vyberte adresu URL aplikace.

Krok 2: Přidejte do seznamu několik úkolů. Blahopřejeme, spouštíte webovou aplikaci v Azure App Service se zabezpečeným připojením k Azure SQL Database.

7. Streamování diagnostických protokolů

Azure App Service zachytává všechny protokoly konzoly, které vám pomůžou s diagnostikou problémů s aplikací. Ukázková aplikace obsahuje kód protokolování v každém z jejích koncových bodů, který tuto funkci demonstruje.

Krok 1: Na stránce služby App Service:

  1. V nabídce vlevo vyberte Monitorování>protokolů služby App Service.
  2. V části Protokolování aplikace vyberte Systém souborů.
  3. V horní nabídce vyberte Uložit.

Krok 2: V nabídce vlevo vyberte Stream protokolu. Zobrazí se protokoly pro vaši aplikaci, včetně protokolů platformy a protokolů z kontejneru.

8. Vyčištění prostředků

Až budete hotovi, můžete odstranit všechny prostředky ze svého Azure předplatného odstraněním skupiny prostředků.

Krok 1: Na panelu hledání v horní části portálu Azure:

  1. Zadejte název skupiny prostředků.
  2. Vyberte tuto skupinu prostředků.

Krok 2: Na stránce skupiny prostředků vyberte Odstranit skupinu prostředků.

Krok 3:

  1. Pro potvrzení odstranění zadejte název skupiny prostředků.
  2. Vyberte Odstranit.

2. Vytvoření Azure prostředků a nasazení ukázkové aplikace

V tomto kroku vytvoříte prostředky Azure a nasadíte ukázkovou aplikaci do App Service v Linuxu. Kroky v tomto tutoriálu vytvářejí sadu bezpečných zdrojů ve výchozím nastavení, které zahrnují App Service, Azure SQL Database a volitelně Azure Managed Redis.

Vývojový kontejner už má rozhraní příkazového řádku pro vývojáře Azure (AZD).

  1. V kořenovém adresáři úložiště spusťte příkaz azd init.

    azd init --template dotnet-app-service-sqldb-infra .
    
  2. Po zobrazení výzvy zadejte následující odpovědi:

    Otázka Odpověď
    Aktuální adresář není prázdný. Chcete zde inicializovat projekt v '<váš-adresář>'? Y
    Co chcete s těmito soubory dělat? Zachovat stávající soubory beze změny
    Zadejte nový název prostředí. Zadejte jedinečný název. Šablona AZD používá tento název jako součást názvu DNS vaší webové aplikace v Azure (<app-name>-<hash>.azurewebsites.net). Jsou povoleny alfanumerické znaky a spojovníky.
  3. Přihlaste se k Azure spuštěním příkazu azd auth login a následováním pokynů.

    azd auth login
    
  4. Vytvořte potřebné Azure prostředky a nasaďte kód aplikace pomocí příkazu azd up. Podle pokynů průvodce vyberte požadované předplatné a umístění pro prostředky Azure.

    azd up
    

    Příkaz azd up trvá asi sedm minut (Azure Managed Redis zabere nejvíce času). Kód aplikace se také zkompiluje a nasadí, ale později ho budete muset upravit, abyste mohli pracovat se službou App Service. Když je spuštěný, příkaz poskytuje zprávy o procesu zřizování a nasazení, včetně odkazu na nasazení v Azure. Po dokončení zobrazí příkaz také odkaz na nasazenou aplikaci.

    Tato šablona AZD obsahuje soubory (azure.yaml a adresář infra), které generují architekturu zabezpečení ve výchozím nastavení s následujícími Azure prostředky:

    • Skupina prostředků: Kontejner pro všechny vytvořené prostředky.
    • Plán služby App Service: Definuje výpočetní prostředky pro Službu App Service. Vytvoří se plán Linuxu na úrovni Basic .
    • App Service: Představuje vaši aplikaci a spouští se v plánu služby App Service.
    • Virtuální síť: Integrovaná s aplikací App Service a izoluje provoz back-endové sítě.
    • Soukromé koncové body: Přístupové koncové body pro klíčový trezor a databázový server ve virtuální síti.
    • Síťová rozhraní: Představuje privátní IP adresy, jednu pro každý privátní koncový bod.
    • Azure SQL Database server: Přístupné pouze ze svého privátního koncového bodu.
    • Azure SQL Database: Na serveru se vytvoří databáze a uživatel.
    • Azure Managed Redis: Přístupný pouze zezadu za svým privátním koncovým bodem.
    • Trezor klíčů: Přístupný pouze ze svého privátního koncového bodu. Slouží ke správě tajných kódů pro aplikaci App Service.
    • Privátní DNS zóny: Povolte DNS řešení klíčového trezoru a databázového serveru ve virtuální síti.

    Jakmile příkaz dokončí vytváření prostředků a nasadí kód aplikace poprvé, nasazená ukázková aplikace ještě nefunguje, protože musíte provést malé změny, abyste se mohli připojit k databázi v Azure.

Máte problémy? Projděte si část Řešení potíží.

3. Ověřte připojovací řetězce

Návod

Výchozí připojovací řetězec SQL databáze používá ověřování SQL. Bezpečnější ověřování bez hesla najdete v tématu Jak místo toho změním připojení služby SQL Database tak, aby používalo spravovanou identitu?

Šablona AZD, kterou používáte, již vygenerovala proměnné připojení jako nastavení aplikace a tyto proměnné vypíše do terminálu pro vaše pohodlí. Nastavení aplikace je jedním ze způsobů, jak udržovat tajné kódy připojení mimo úložiště kódu.

  1. Ve výstupu AZD najděte nastavení AZURE_SQL_CONNECTIONSTRING. Zobrazí se jenom názvy nastavení. Ve výstupu AZD vypadají takto:

     App Service app has the following connection strings:
         - AZURE_SQL_CONNECTIONSTRING
         - AZURE_REDIS_CONNECTIONSTRING
         - AZURE_KEYVAULT_RESOURCEENDPOINT
         - AZURE_KEYVAULT_SCOPE
     

    AZURE_SQL_CONNECTIONSTRINGobsahuje připojovací řetězec k SQL databázi v Azure. Později ho budete muset použít ve svém kódu.

  2. Šablona AZD vám pro usnadnění práci ukáže přímý odkaz na stránku nastavení aplikace. Najděte odkaz a otevřete ho na nové kartě prohlížeče.

Máte problémy? Projděte si část Řešení potíží.

4. Úprava vzorového kódu a opětovné nasazení

  1. V GitHub codespace spusťte novou relaci chatu tím, že zvolíte zobrazení Chat a následně vyberete +.

  2. Zeptejte se: "@workspace Jak se aplikace připojuje k databázi?"Copilot ti možná vysvětlí něco o třídě MyDatabaseContext a jak je nastavená v Program.cs.

  3. Zeptejte se: "V produkčním režimu chci, aby aplikace používala připojovací řetězec nazvaný AZURE_SQL_CONNECTIONSTRING pro databázi." Copilot vám může nabídnout kód podobný tomu v Možnosti 2: bez GitHub Copilot kroků, které následují a dokonce vám řeknou, abyste změnu provedli v Program.cs souboru.

  4. Otevřete Program.cs v průzkumníku a přidejte návrh kódu.

    GitHub Copilot nedává pokaždé stejnou odpověď a není vždy správná. Možná budete muset položit další otázky, abyste vyladili jeho odpověď. Tipy najdete v tématu Co můžu dělat s GitHub Copilotem v kódu?

Než tyto změny nasadíte, musíte ještě vygenerovat migrační balíček.

Máte problémy? Projděte si část Řešení potíží.

5. Generování schématu databáze

S databází SQL chráněnou virtuální sítí je nejjednodušší způsob, jak spouštět migrace databází, v relaci SSH s kontejnerem služby App Service. Kontejnery App Service Linux ale nemají sadu .NET SDK, takže nejjednodušší způsob, jak spouštět migrace databází, je nahrát samostatnou sadu migrací.

  1. Obnovte linuxové runtime assety a vytvořte migrační balíček pro váš projekt pomocí následujících příkazů:

    dotnet restore --runtime linux-x64
    dotnet ef migrations bundle --runtime linux-x64 -o migrationsbundle
    

    Návod

    Ukázková aplikace (viz DotNetCoreSqlDb.csproj) je nakonfigurovaná tak, aby zahrnovala tento soubor migrationsbundle. Během fáze azd package se do balíčku pro nasazení přidá migrationsbundle.

  2. Nasaďte všechny změny pomocí azd up.

    azd up
    
  3. Ve výstupu AZD vyhledejte adresu URL relace SSH a přejděte na ni v prohlížeči. Ve výstupu to vypadá takto:

     Open SSH session to App Service container at: <URL>
     
  4. V relaci SSH spusťte následující příkazy:

    cd /home/site/wwwroot
    ./migrationsbundle -- --environment Production
    

    Pokud proběhne úspěšně, služba App Service se úspěšně připojuje k databázi. Nezapomeňte, že odpovídá změnám kódu, které --environment Production jste provedli v Program.cs.

    Poznámka:

    Kromě restartování aplikace se můžou zachovat jenom změny v /home souborech. Změny mimo /home se neuchovávají.

Máte problémy? Projděte si část Řešení potíží.

6. Přejděte do aplikace.

  1. Ve výstupu AZD najděte adresu URL aplikace a přejděte na ni v prohlížeči. Adresa URL vypadá takto ve výstupu AZD:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: <URL>
     
  2. Přidejte do seznamu několik úkolů.

    A snímek obrazovky webové aplikace ASP.NET Core se službou SQL Database spuštěnou v Azure zobrazující úlohy.

    Blahopřejeme, spouštíte webovou aplikaci v Azure App Service se zabezpečeným připojením k Azure SQL Database.

Máte problémy? Projděte si část Řešení potíží.

7. Streamování diagnostických protokolů

Azure App Service může zaznamenávat protokoly konzoly, které vám pomůžou s diagnostikou problémů s aplikací. Pro usnadnění už šablona AZD umožňuje protokolování do lokálního souborového systému a odesílá protokoly do pracovního prostoru Log Analytics.

Ukázková aplikace obsahuje standardní příkazy protokolování, které předvádějí tuto funkci, jak je znázorněno v následujícím fragmentu kódu:

    return RedirectToAction(nameof(Index));
}

private async Task<TodosIndexViewModel> BuildIndexViewModel(Todo? newTodo = null)
{
    _logger.LogInformation("Data from database.");
    return new TodosIndexViewModel
    {
        NewTodo = newTodo ?? new Todo(),

Ve výstupu AZD vyhledejte odkaz na streamování protokolů služby App Service a přejděte na něj v prohlížeči. Odkaz vypadá takto ve výstupu AZD:

Stream App Service logs at: <URL>

Přečtěte si další informace o protokolování aplikací .NET v řadě Enable Azure Monitor OpenTelemetry pro .NET, Node.js, Python a Java aplikace.

Máte problémy? Projděte si část Řešení potíží.

8. Vyčištění prostředků

Pokud chcete odstranit všechny prostředky Azure v aktuálním prostředí nasazení, spusťte azd down a postupujte podle pokynů.

azd down

Řešení problému

Zobrazení nasazení portálu Azure SQL Database ukazuje stav konfliktu.

V závislosti na vybraném předplatném a oblasti se může zobrazit stav nasazení pro Azure SQL Database Conflict s následující zprávou v podrobnostech o operaci:

Location '<region>' is not accepting creation of new Windows Azure SQL Database servers at this time.

Tato chyba je pravděpodobně způsobena omezením předplatného pro oblast, kterou vyberete. Zkuste pro nasazení zvolit jinou oblast.

Na portálu Azure uživatelské rozhraní pro streamování protokolu pro webovou aplikaci ukazuje chyby sítě.

Může se zobrazit tato chyba:

Unable to open a connection to your app. This may be due to any network security groups or IP restriction rules that you have placed on your app. To use log streaming, please make sure you are able to access your app directly from your current network.

Obvykle se jedná o přechodnou chybu při prvním spuštění aplikace. Počkejte několik minut a zkontrolujte to znovu.

Zobrazí se relace SSH v prohlížeči. SSH CONN CLOSED

Spuštění kontejneru Linux trvá několik minut. Počkejte několik minut a zkontrolujte to znovu.

Stránka portálu pro streamování protokolů ukazuje Connected!, ale žádné protokoly se nezobrazují.

Po nakonfigurování diagnostických protokolů se aplikace restartuje. Možná budete muset aktualizovat stránku, aby se změny projevily v prohlížeči.

Nejčastější dotazy

Kolik stojí toto nastavení?

Ceny vytvořených prostředků jsou následující:

  • Plán služby App Service se vytvoří na úrovni Basic a dá se vertikálně navýšit nebo snížit. Podívejte se na ceny služby App Service.
  • Azure SQL Database se vytváří v univerzální bezserverové vrstvě na hardwaru řady Standard s minimálními jádry. Existují malé náklady a je možné je distribuovat do jiných oblastí. Náklady můžete minimalizovat ještě více tím, že zmenšujete maximální velikost nebo ji můžete vertikálně navýšit úpravou úrovně obsluhy, výpočetní úrovně, konfigurace hardwaru, počtu jader, velikosti databáze a redundance zón. Viz ceny Azure SQL Database.
  • Spravovaná instance Redis Azure se vytvoří ve vrstvě Vyvážené B0 s minimální velikostí mezipaměti. K této úrovni jsou spojené malé náklady. Kapacitu můžete vertikálně navýšit na vyšší úroveň výkonu pro vyšší dostupnost, clustering a další funkce. Viz ceny Azure Managed Redis.
  • Pokud nenakonfigurujete další funkce, jako je propojování sítí, za virtuální síť se neplatí žádné poplatky. Viz ceny Azure Virtual Network.
  • Za privátní zónu DNS se účtují malé poplatky. Viz ceny Azure DNS.

Jak se připojím k serveru Azure SQL Database, který je zabezpečený za virtuální sítí pomocí jiných nástrojů?

  • Pro základní přístup z nástroje příkazového řádku můžete v terminálu SSH aplikace spustit sqlcmd. Kontejner aplikace není součástí sqlcmd, takže ho musíte nainstalovat ručně. Mějte na paměti, že nainstalovaný klient se neuloží při restartování aplikace.
  • Pokud se chcete připojit z klienta SQL Server Management Studio nebo z Visual Studio, musí být váš počítač ve virtuální síti. Může to být například virtuální počítač Azure, který je připojený k jedné z podsítí, nebo počítač v místní síti, který má připojení typu site-to-site VPN s virtuální sítí Azure.

Jak místní vývoj aplikací funguje s GitHub Actions?

Jako příklad vezměte automaticky vygenerovaný soubor pracovního postupu ze služby App Service. Každý git push spustí nové sestavení a nasazení. Z lokálního klonu repozitáře GitHub provedete požadované aktualizace a pošlete je na GitHub. Příklad:

git add .
git commit -m "<some-message>"
git push origin main

Jak můžu ladit chyby během nasazení GitHub Actions?

Pokud se v automaticky generovaném souboru pracovního postupu GitHub nezdaří nějaký krok, zkuste upravit příkaz, který selhal, aby vygeneroval více podrobného výstupu. Přidáním volby dotnet můžete například získat další výstup z libovolného -v příkazu. Potvrďte a nasdílejte změny, aby se aktivovalo další nasazení do služby App Service.

Nemám oprávnění k vytvoření uživatelem přiřazené identity

Podívejte se na nastavení nasazení GitHub Actions z Centra nasazení.

Jak mohu změnit připojení k databázi SQL, aby používala spravovanou identitu?

Service Connector spravuje výchozí připojovací řetězec do databáze SQL s názvem defaultConnector a používá ověřování SQL. Pokud ho chcete nahradit připojením, které používá spravovanou identitu, spusťte následující příkazy v Cloud Shellu po nahrazení zástupných symbolů:

az extension add --name serviceconnector-passwordless --upgrade
az sql server update --enable-public-network true
az webapp connection delete sql --connection defaultConnector --resource-group <group-name> --name <app-name>
az webapp connection create sql --connection defaultConnector --resource-group <group-name> --name <app-name> --target-resource-group <group-name> --server <database-server-name> --database <database-name> --client-type dotnet --system-identity --config-connstr true
az sql server update --enable-public-network false

Ve výchozím nastavení příkaz az webapp connection create sql --client-type dotnet --system-identity --config-connstr provede následující:

  • Nastaví vašeho uživatele jako správce Microsoft Entra ID na SQL databázovém serveru.
  • Vytvoří systémově přiřazenou spravovanou identitu a udělí jí přístup k databázi.
  • Vygeneruje připojovací řetězec bez hesla označovanou jako AZURE_SQL_CONNECTIONGSTRING, kterou vaše aplikace už používá na konci kurzu.

Vaše aplikace by teď měla mít připojení k databázi SQL. Další informace najdete v tématu Tutorial: Připojení k Azure databázím ze služby App Service bez tajných kódů pomocí spravované identity.

Návod

Nechcete povolit připojení k veřejné síti? Příkazy můžete přeskočit az sql server update --enable-public-network true spuštěním příkazů z prostředí Azure Cloud Shell, který je integrovaný s vaší virtuální sítí, pokud máte v předplatném přiřazenou roli Owner.

Aby identita získala požadovaný přístup k databázi zabezpečené virtuální sítíaz webapp connection create sql, je potřeba přímé připojení s autentizací Microsoft Entra ID k databázovému serveru. Ve výchozím nastavení Azure Cloud Shell nemá tento přístup k databázi zabezpečené sítí.

Co můžu dělat s GitHub Copilot v kódu?

Možná jste si všimli, že zobrazení chatu GitHub Copilot už bylo k dispozici, když jste vytvořili codespace. Pro usnadnění práce zahrneme rozšíření chatu GitHub Copilot do definice kontejneru (viz .devcontainer/devcontainer.json). Potřebujete ale účet GitHub Copilot (k dispozici je 30denní bezplatná zkušební verze).

Několik tipů pro vás při komunikaci s GitHub Copilot:

  • V rámci jedné chatové relace na sebe otázky a odpovědi navazují a můžete upravit své otázky tak, aby zpřesnily odpověď, kterou získáte.
  • Ve výchozím nastavení GitHub Copilot nemá přístup k žádnému souboru ve vašem úložišti. Pokud chcete položit otázky k souboru, otevřete ho nejprve v editoru.
  • Pokud chcete, aby GitHub Copilot při přípravě odpovědí měli přístup ke všem souborům v úložišti, začněte svou otázku @workspace. Další informace najdete na webu Use the @workspace agent.
  • V chatové relaci může GitHub Copilot navrhovat změny a (s @workspace) i naznačit, kde se mají změny provádět, ale nemůže změny provést za vás. Je na vás přidat navrhované změny a otestovat je.

Tady je několik dalších věcí, které můžete říct k vyladění odpovědi, kterou získáte:

  • Chci, aby tento kód běžel jenom v produkčním režimu.
  • Chci, aby tento kód běžel jenom v Azure App Service a ne místně.
  • Zdá se, že parametr --output-path není podporován.

V dalším kurzu se dozvíte, jak zabezpečit aplikaci pomocí vlastní domény a certifikátu.

Nebo se podívejte na další zdroje informací: