Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym samouczku wdrożysz opartą na danych aplikację internetową w języku Python w usłudze Azure App Service przy użyciu usługi relacyjnej bazy danych usługi Azure Database for PostgreSQL . Usługa Azure App Service obsługuje język Python w środowisku serwera z systemem Linux. W tym artykule używa się aplikacji Flask. Alternatywy to Django lub przewodnik po FastAPI.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Utwórz architekturę o domyślnie wysokim poziomie zabezpieczeń dla App Service, PostgreSQL i pamięci podręcznej Redis.
- Zabezpieczanie tajemnic połączeń przy użyciu tożsamości zarządzanej i odwołań Key Vault.
- Wdróż przykładową aplikację w języku Python w usłudze App Service z repozytorium GitHub.
- Uzyskaj dostęp do ciągów połączeń usługi App Service oraz ustawień aplikacji w kodzie aplikacji.
- Wprowadź aktualizacje i ponownie wdróż kod aplikacji.
- Wygeneruj schemat bazy danych, uruchamiając migracje baz danych.
- Przesyłaj dzienniki diagnostyczne z Azure.
- Zarządzanie aplikacją w witrynie Azure Portal.
- Aprowizuj tę samą architekturę i wdróż przy użyciu interfejsu wiersza polecenia dla deweloperów platformy Azure.
- Zoptymalizuj przepływ pracy programowania za pomocą usług GitHub Codespaces i GitHub Copilot.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Jeśli nie masz konta platformy Azure, możesz go utworzyć bezpłatnie.
- Konto usługi GitHub. Możesz również bezpłatnie uzyskać jeden.
- Znajomość języka Python i rozwijanie aplikacji przy użyciu frameworka Flask.
- (Opcjonalnie) Aby wypróbować GitHub Copilot, potrzebne jest konto GitHub Copilot. Dostępna jest 30-dniowa bezpłatna wersja próbna.
- Konto platformy Azure z aktywną subskrypcją. Jeśli nie masz konta platformy Azure, możesz go utworzyć bezpłatnie.
- Konto usługi GitHub. Możesz również bezpłatnie uzyskać jeden.
- Zainstalowany interfejs wiersza polecenia dla deweloperów platformy Azure. Możesz wykonać kroki opisane w usłudze Azure Cloud Shell, ponieważ ma już zainstalowany interfejs wiersza polecenia dla deweloperów platformy Azure.
- Znajomość języka Python i rozwijanie aplikacji przy użyciu frameworka Flask.
- (Opcjonalnie) Aby wypróbować GitHub Copilot, potrzebne jest konto GitHub Copilot. Dostępna jest 30-dniowa bezpłatna wersja próbna.
Przejdź do końca
Jeśli chcesz zobaczyć przykładową aplikację w tym samouczku uruchomionym na platformie Azure, uruchom następujące polecenia w usłudze Azure Cloud Shell i postępuj zgodnie z monitem:
mkdir msdocs-flask-postgresql-sample-app
cd msdocs-flask-postgresql-sample-app
azd init --template msdocs-flask-postgresql-sample-app
azd up
Uruchamianie aplikacji przykładowej
Jako punkt wyjścia skonfiguruj przykładową aplikację opartą na danych. Dla wygody przykładowe repozytorium zawiera konfigurację kontenera deweloperskiego . Kontener deweloperski ma wszystko, czego potrzebujesz do utworzenia aplikacji. Zawiera ona bazę danych, pamięć podręczną i wszystkie zmienne środowiskowe wymagane przez przykładową aplikację. Kontener deweloperski może działać w usłudze GitHub Codespace, aby można było uruchomić przykład na dowolnym komputerze z przeglądarką internetową.
Uwaga
Jeśli korzystasz z tego samouczka z własną aplikacją, zapoznaj się z opisem pliku requirements.txt w README.md , aby zobaczyć, jakich pakietów potrzebujesz.
Krok 1. W nowym oknie przeglądarki:
- Zaloguj się na istniejącym koncie GitHub.
- Przejdź do https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app/fork.
- Usuń zaznaczenie Kopiuj tylko gałąź główną. Chcesz wszystkie gałęzie.
- Wybierz Utwórz fork.
Krok 2: W forku na GitHub:
- Wybierz main>starter-no-infra dla gałęzi początkowej. Ta gałąź zawiera tylko przykładowy projekt bez plików ani konfiguracji związanych z platformą Azure.
- Wybierz pozycję Kod. Na karcie Codespaces wybierz pozycję Create codespace on starter-no-infra.
Utworzenie przestrzeni kodowej zajmuje kilka minut. Uruchamia się
pip install -r requirements.txtdla Twojego repozytorium.
Krok 3. W terminalu usługi Codespace:
- Uruchom migracje bazy danych za pomocą polecenia
flask db upgrade. - Uruchom aplikację za pomocą polecenia
flask run. - Po wyświetleniu powiadomienia
Your application running on port 5000 is available.wybierz pozycję Otwórz w przeglądarce. Przykładowa aplikacja powinna być widoczna na nowej karcie przeglądarki. Aby zatrzymać aplikację, wpiszCtrl+C.
Napiwek
Możesz zapytać narzędzie GitHub Copilot o to repozytorium. Na przykład:
- @workspace Co robi ten projekt?
- @workspace Co robi folder .devcontainer?
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
Tworzenie usług App Service i PostgreSQL
W tej sekcji utworzysz zasoby platformy Azure. W tym samouczku tworzony jest zestaw zasobów domyślnie bezpiecznych, które obejmują usługę App Service i usługę Azure Database for PostgreSQL. W przypadku procesu tworzenia należy określić:
- Nazwa aplikacji internetowej. Jest ona używana jako część nazwy DNS dla aplikacji.
- Region do fizycznego uruchamiania aplikacji na określonym obszarze. Jest również częścią nazwy DNS aplikacji.
- Runtime stack dla aplikacji. Wersja języka Python do użycia w aplikacji.
- Plan hostingu aplikacji. Plan cenowy obejmujący zestaw funkcji oraz zdolność skalowania dla Twojej aplikacji.
- Grupa zasobów dla aplikacji. Grupa zasobów umożliwia grupowanie zasobów platformy Azure dla aplikacji w kontenerze logicznym.
Zaloguj się do portalu Azure i wykonaj następujące kroki, aby utworzyć zasoby usługi Azure App Service.
Krok 1. W witrynie Azure Portal:
- W górnej części witryny Azure Portal wprowadź bazę danych aplikacji internetowej na pasku wyszukiwania.
- W obszarze nagłówka Marketplace wybierz element z etykietą Web App + Database. Możesz również przejść bezpośrednio do obszaru Tworzenie aplikacji internetowej .
Krok 2. Na stronie Tworzenie aplikacji internetowej i bazy danych wypełnij formularz w następujący sposób.
- Grupa zasobów: wybierz pozycję Utwórz nową i użyj nazwy msdocs-flask-postgres-tutorial.
- Region: dowolny region świadczenia usługi Azure blisko Ciebie.
- Nazwa: msdocs-python-postgres-XYZ.
- Stos środowiska uruchomieniowego: Python 3.14.
- Baza danych: PostgreSQL - elastyczny serwer jest domyślnie wybierany jako aparat bazy danych. Nazwa serwera i nazwa bazy danych są również domyślnie ustawione na odpowiednie wartości.
- Dodaj usługę Azure Cache for Redis?: Nie.
- Plan hostingu: Podstawowy. Gdy wszystko będzie gotowe, możesz skalować w górę do warstwy cenowej produkcyjnej.
- Wybierz Przejrzyj i utwórz.
- Po zakończeniu walidacji wybierz pozycję Utwórz.
Krok 3: Wdrożenie trwa kilka minut. Po zakończeniu wdrażania wybierz pozycję Przejdź do zasobu. Wdrożenie tworzy następujące zasoby:
- Grupa zasobów: kontener dla wszystkich utworzonych zasobów.
- Plan usługi App Service: definiuje zasoby obliczeniowe dla usługi App Service. Wdrożenie tworzy plan systemu Linux w warstwie Podstawowa .
- App Service: reprezentuje aplikację i działa w planie usługi App Service.
- Sieć wirtualna: zintegrowana z aplikacją usługi App Service i izoluje ruch sieciowy zaplecza.
- Interfejsy sieciowe: reprezentuje prywatne adresy IP, po jednym dla każdego z prywatnych punktów końcowych.
- Serwer elastyczny usługi Azure Database for PostgreSQL: dostępny tylko z poziomu sieci wirtualnej. Baza danych i użytkownik są tworzone dla Ciebie na serwerze.
- Prywatne strefy DNS: Umożliwia rozpoznawanie nazw DNS kluczy w usłudze Key Vault i serwera bazy danych w sieci wirtualnej.
Bezpieczne sekrety połączenia
Proces wdrażania generuje zmienne łączności jako ustawienia aplikacji. Najlepszą praktyką w zakresie zabezpieczeń jest całkowite unikanie przechowywania tajemnic w usłudze App Service. Przenieś swoje wpisy tajne do magazynu kluczy i zmień ustawienia aplikacji na odwołania do Key Vault za pomocą Service Connectors.
Krok 1: Pobierz istniejące parametry połączenia:
- W menu po lewej stronie usługi App Service wybierz pozycję Ustawienia>Zmienne środowiskowe.
- Wybierz AZURE_POSTGRESQL_CONNECTIONSTRING.
- W ustawieniu Dodaj/Edytuj aplikację w polu Wartość znajdź hasło = na końcu ciągu.
- Skopiuj ciąg hasła po haśle = do późniejszego użycia. To ustawienie aplikacji pozwala na nawiązanie połączenia z bazą danych Postgres zabezpieczoną prywatnym punktem końcowym. Wpis tajny jest zapisywany bezpośrednio w aplikacji usługi App Service, co nie jest najlepszym rozwiązaniem. Później zmienisz tę konfigurację.
Krok 2. Utwórz magazyn kluczy na potrzeby bezpiecznego zarządzania tajemnicami:
- Na górnym pasku wyszukiwania wpisz "key vault", a następnie wybierz pozycję Marketplace>Key Vault.
- W Grupie zasobów wybierz msdocs-python-postgres-tutorial.
- W Nazwa magazynu kluczy wpisz nazwę składającą się tylko z liter i cyfr.
- W Regionie ustaw taką samą lokalizację jak grupa zasobów.
Krok 3: Zabezpiecz magazyn kluczy przy użyciu prywatnego punktu końcowego:
- Wybierz pozycję Sieć.
- Usuń zaznaczenie pozycji Włącz dostęp publiczny.
- Wybierz pozycję Utwórz prywatny punkt końcowy.
- W Grupie zasobów wybierz msdocs-python-postgres-tutorial.
- W oknie dialogowym w polu Lokalizacja wybierz tę samą lokalizację co aplikacja usługi App Service.
- W polu Nazwa wpisz msdocs-python-postgres-XYZVaultEndpoint.
- W sieci wirtualnej wybierz msdocs-python-postgres-XYZVnet.
- W obszarze Podsieć wybierz pozycję msdocs-python-postgres-XYZSubnet.
- Wybierz przycisk OK.
- Wybierz pozycję Przeglądanie i tworzenie, a następnie wybierz pozycję Utwórz. Poczekaj na zakończenie wdrożenia magazynu kluczy. Powinno zostać wyświetlone komunikat Wdrożenie zostało ukończone.
Krok 4: Skonfiguruj łącznik PostgreSQL:
- Na górnym pasku wyszukiwania wpisz msdocs-python-postgres, a następnie wybierz zasób usługi App Service o nazwie msdocs-python-postgres-XYZ.
- Na stronie App Service w menu po lewej stronie wybierz pozycję Ustawienia>Łącznik usługi. Istnieje już łącznik, który został utworzony przez proces wdrażania.
- Zaznacz pole wyboru obok łącznika PostgreSQL, a następnie wybierz pozycję Edytuj.
- W polu Typ klienta wybierz pozycję Django. Mimo że masz aplikację Flask, typ klienta Django w łączniku usługi PostgreSQL udostępnia zmienne bazy danych w oddzielnych ustawieniach zamiast jednego parametru połączenia. Oddzielne zmienne są łatwiejsze do użycia w kodzie aplikacji, który używa biblioteki SQLAlchemy do nawiązywania połączenia z bazą danych.
- Wybierz Uwierzytelnianie.
- W polu Hasło wklej skopiowane wcześniej hasło.
- Wybierz Zapisz tajemnicę w Key Vault.
- W obszarze Połączenie z usługą Key Vault wybierz pozycję Utwórz nową. Zostanie otwarte okno dialogowe Tworzenie połączenia w górnej części okna dialogowego edycji.
Krok 5: Nawiąż połączenie z Key Vault:
- W oknie dialogowym Tworzenie połączenia dla połączenia z Key Vault wybierz wcześniej utworzony magazyn kluczy.
- Wybierz pozycję Przejrzyj i utwórz.
- Po zakończeniu walidacji wybierz pozycję Utwórz.
Krok 6. Finalizuj ustawienia łącznika PostgreSQL:
- Wracasz do okna dialogowego edycji domyślnego łącznika. Na karcie Uwierzytelnianie poczekaj na utworzenie łącznika skarbca kluczy. Po zakończeniu tworzenia w liście rozwijanej zostanie automatycznie wybrane Połączenie usługi Key Vault.
- Wybierz pozycję Dalej: Sieć.
- Wybierz pozycję Zapisz. Zaczekaj na wyświetlenie powiadomienia Aktualizacja powiodła się .
Krok 7. Weryfikowanie integracji z usługą Key Vault
- W menu po lewej stronie ponownie wybierz pozycję Ustawienia>Zmienne środowiskowe .
-
Obok pozycji AZURE_POSTGRESQL_PASSWORD wybierz pozycję Pokaż wartość. Wartość powinna być
@Microsoft.KeyVault(...), co oznacza, że to odwołanie do magazynu kluczy. Tajemnica jest teraz zarządzana w magazynie kluczy.
Podsumowując, proces zabezpieczania tajemnic połączenia obejmował:
- Pobieranie tajnych danych połączenia ze zmiennych środowiskowych aplikacji App Service.
- Tworzenie magazynu kluczy.
- Tworzenie połączenia usługi Key Vault z tożsamością zarządzaną przypisaną przez system.
- Aktualizowanie łączników usługi w celu przechowywania tajemnic w magazynie kluczy.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
Wdrażanie przykładowego kodu
W tej sekcji skonfigurujesz wdrożenie usługi GitHub przy użyciu funkcji GitHub Actions. Jest to jeden z wielu sposobów wdrażania w usłudze App Service. Jest to doskonały sposób na ciągłą integrację w procesie wdrażania. Domyślnie każde git push do twojego repozytorium GitHub uruchamia akcję kompilacji i wdrażania.
Krok 1. W menu po lewej stronie wybierz pozycję .
Krok 2. Na stronie Centrum wdrażania :
- W obszarze Źródło wybierz pozycję GitHub. Domyślnie funkcja GitHub Actions jest wybierana jako dostawca kompilacji.
- Zaloguj się do konta usługi GitHub i postępuj zgodnie z monitem, aby autoryzować platformę Azure.
- W obszarze Organizacja wybierz swoje konto.
- W obszarze Repozytorium wybierz pozycję msdocs-flask-postgresql-sample-app.
- W Branch wybierz starter-no-infra. Ta gałąź jest taka sama, w której pracowaliśmy z przykładową aplikacją bez żadnych plików ani konfiguracji związanych z platformą Azure.
- W polu Typ uwierzytelniania wybierz pozycję Tożsamość przypisana przez użytkownika.
- W górnym menu wybierz pozycję Zapisz.
Usługa App Service zatwierdza plik przepływu pracy do wybranego repozytorium GitHub w katalogu
.github/workflows. Domyślnie centrum wdrażania tworzy tożsamość przypisaną przez użytkownika dla przepływu pracy w celu uwierzytelniania za pomocą Microsoft Entra (uwierzytelnianie OIDC). Aby uzyskać informacje o innych opcjach uwierzytelniania, zobacz Wdrażanie w usłudze App Service przy użyciu funkcji GitHub Actions.
Krok 3: Po powrocie do codespace GitHub przykładowego forka, uruchom git pull origin starter-no-infra.
To polecenie ściąga nowo zatwierdzony plik przepływu pracy do przestrzeni kodu.
Krok 4 (opcja 1: w usłudze GitHub Copilot):
- Rozpocznij nową sesję czatu, wybierając widok Czat , a następnie wybierz pozycję +.
- Zapytaj, @workspace Jak aplikacja łączy się z bazą danych? Copilot może dać wyjaśnienie na temat
SQLAlchemy, na przykład, jak jego identyfikator URI połączenia jest skonfigurowany w azureproject/development.py i azureproject/production.py. - Zadaj pytanie, @workspace W trybie produkcyjnym moja aplikacja działa w aplikacji webowej App Service, która używa Azure Service Connector do połączenia z elastycznym serwerem PostgreSQL, korzystając z klienta Django. Jakich nazw zmiennych środowiskowych potrzebuję użyć? Copilot może zasugerować kod podobny do tego w Opcji 2: bez GitHub Copilot i nawet zasugerować wprowadzenie zmian w pliku azureproject/production.py.
- Otwórz plik azureproject/production.py w eksploratorze i dodaj sugestię kodu. Narzędzie GitHub Copilot nie daje tej samej odpowiedzi za każdym razem. Odpowiedzi nie zawsze są poprawne. Może być konieczne zadawanie większej liczby pytań, aby dostosować jego odpowiedź. Aby uzyskać porady, zobacz Co mogę zrobić z usługą GitHub Copilot w mojej przestrzeni kodu?
Krok 4 (opcja 2: bez narzędzia GitHub Copilot):
- Otwórz plik azureproject/production.py w eksploratorze.
- Znajdź skomentowany kod (wiersze 3–8) i usuń komentarz.
Ta zmiana powoduje utworzenie parametrów połączenia dla biblioteki SQLAlchemy przy użyciu poleceń
AZURE_POSTGRESQL_USER,AZURE_POSTGRESQL_PASSWORD,AZURE_POSTGRESQL_HOSTiAZURE_POSTGRESQL_NAME.
Krok 5:
- Wybierz rozszerzenie Kontrola wersji.
- W polu tekstowym wpisz komunikat zatwierdzenia, taki jak
Configure Azure database connection. Możesz też wybrać
i zezwolić usłudze GitHub Copilot na wygenerowanie komunikatu zatwierdzenia. - Wybierz pozycję Zatwierdź, a następnie potwierdź wartość Tak.
- Wybierz pozycję Synchronizuj zmiany 1, a następnie potwierdź przy użyciu przycisku OK.
Krok 6. Powrót do strony Centrum wdrażania w witrynie Azure Portal:
- Wybierz pozycję Dzienniki, a następnie wybierz pozycję Odśwież , aby wyświetlić nowe uruchomienie wdrożenia.
- W pozycji dziennika dla przebiegu wdrożenia wybierz wpis Dzienniki kompilacji i wdrażania z najnowszym znacznikiem czasu.
Krok 7. Jesteś przeniesiony do repozytorium GitHub. Akcja usługi GitHub jest uruchomiona. Plik przepływu pracy definiuje dwa oddzielne etapy, kompilowanie i wdrażanie. Poczekaj na uruchomienie usługi GitHub, aby wyświetlić stan Powodzenie. Trwa to około 5 minut.
Masz problemy? Zapoznaj się z przewodnikiem rozwiązywania problemów.
Generowanie schematu bazy danych
W przypadku bazy danych PostgreSQL chronionej przez sieć wirtualną najprostszym sposobem uruchamiania migracji baz danych platformy Flask jest sesja SSH z kontenerem systemu Linux w usłudze App Service.
Krok 1: Po powrocie na stronę usługi App Service w menu po lewej stronie,
- Wybierz Narzędzia deweloperskie>SSH.
- Wybierz pozycję Idź.
Krok 2. W sesji SSH uruchom polecenie flask db upgrade. Jeśli to się powiedzie, usługa App Service pomyślnie nawiązuje połączenie z bazą danych.
Napiwek
W sesji SSH tylko zmiany w plikach w /home mogą przetrwać ponowne uruchomienia aplikacji. Zmiany poza /home nie są zachowywane.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
Przechodzenie do aplikacji
Krok 1: Na stronie App Service :
- W menu po lewej stronie wybierz pozycję Przegląd.
- Wybierz adres URL aplikacji.
Krok 2. Dodaj kilka restauracji do listy. Gratulacje, uruchamiasz aplikację internetową w usłudze aplikacja systemu Azure z bezpieczną łącznością z usługą Azure Database for PostgreSQL.
Przesyłaj logi diagnostyczne
Usługa aplikacyjna Azure przechwytuje wszystkie dzienniki konsoli, aby ułatwić diagnozowanie problemów z aplikacją. Przykładowa aplikacja zawiera print() polecenia, aby zademonstrować tę funkcję, jak przedstawiono poniżej.
@app.route('/', methods=['GET'])
def index():
print('Request for index page received')
restaurants = Restaurant.query.all()
return render_template('index.html', restaurants=restaurants)
Krok 1: Na stronie App Service :
- W menu po lewej stronie wybierz Monitorowanie>dzienniki usługi App Service.
- Pod Rejestrowanie aplikacji, wybierz System plików.
- W górnym menu wybierz pozycję Zapisz.
Krok 2. W menu po lewej stronie wybierz pozycję Strumień dziennika. Zobaczysz dzienniki aplikacji, w tym dzienniki platformy i dzienniki z wewnątrz kontenera.
Aby dowiedzieć się więcej na temat rejestrowania w aplikacjach języka Python, zobacz Konfigurowanie usługi Azure Monitor dla aplikacji języka Python.
Uprzątnij zasoby
Po zakończeniu możesz usunąć wszystkie zasoby z subskrypcji platformy Azure, usuwając grupę zasobów.
Krok 1. Na pasku wyszukiwania w górnej części witryny Azure Portal:
- Wpisz nazwę grupy zasobów.
- Wybierz odpowiednią grupę zasobów.
Krok 2. Na stronie grupy zasobów wybierz pozycję Usuń grupę zasobów.
Krok 3:
- Aby potwierdzić usunięcie, wprowadź nazwę grupy zasobów.
- Wybierz Usuń.
- Potwierdź ponownie polecenie Usuń .
Tworzenie zasobów platformy Azure i wdrażanie przykładowej aplikacji
W tym kroku utworzysz zasoby platformy Azure i wdrożysz przykładową aplikację w celu App Service dla systemu Linux. Kroki użyte w tym samouczku umożliwiają utworzenie zestawu bezpiecznych domyślnie zasobów obejmujących usługi App Service i usługę Azure Database for PostgreSQL.
Kontener deweloperski ma już interfejs wiersza polecenia dla deweloperów platformy Azure (AZD).
W katalogu głównym repozytorium uruchom polecenie
azd init.azd init --template python-app-service-postgresql-infraPo wyświetleniu monitu podaj następujące odpowiedzi:
Pytanie Odpowiedź Bieżący katalog nie jest pusty. Czy chcesz zainicjować projekt tutaj w katalogu "<your-directory>"? Y Co chcesz zrobić z tymi plikami? Zachowaj istniejące pliki bez zmian Wprowadź nową nazwę środowiska Wpisz unikatową nazwę. Szablon AZD używa tej nazwy jako części nazwy DNS aplikacji internetowej na platformie Azure ( <app-name>-<hash>.azurewebsites.net). Znaki alfanumeryczne i łączniki są dozwolone.Zaloguj się do Azure, uruchamiając polecenie
azd auth logini postępując zgodnie z instrukcjami na ekranie.azd auth loginUtwórz niezbędne zasoby Azure za pomocą polecenia
azd provision. Postępuj zgodnie z monitem, aby wybrać żądaną subskrypcję i lokalizację zasobów platformy Azure.azd provisionWykonanie
azd provisionpolecenia trwa około 15 minut. Pamięć podręczna Redis zajmuje najwięcej czasu. Później zmodyfikuj kod, aby pracować z usługą App Service i wdrożyć zmiany za pomocą poleceniaazd deploy. Podczas jego uruchamiania polecenie udostępnia komunikaty dotyczące procesu aprowizacji i wdrażania, w tym link do wdrożenia na platformie Azure.Ten szablon AZD zawiera pliki (azure.yaml i katalog infra ), które generują domyślną architekturę secure-by-default z następującymi zasobami platformy Azure:
- Grupa zasobów: kontener dla wszystkich utworzonych zasobów.
- Plan usługi App Service: definiuje zasoby obliczeniowe dla usługi App Service. Tworzy plan systemu Linux w warstwie Podstawowa .
- App Service: reprezentuje aplikację i działa w planie usługi App Service.
- Sieć wirtualna: zintegrowana z aplikacją usługi App Service i izoluje ruch sieciowy zaplecza.
- Prywatne punkty końcowe: dostęp do punktów końcowych magazynu kluczy i pamięci podręcznej Redis w sieci wirtualnej.
- Interfejsy sieciowe: reprezentuje prywatne adresy IP, po jednym dla każdego z prywatnych punktów końcowych.
- Serwer elastyczny usługi Azure Database for PostgreSQL: dostępny tylko z poziomu sieci wirtualnej. Baza danych i użytkownik są tworzone dla Ciebie na serwerze.
- Prywatna strefa DNS: umożliwia rozpoznawanie nazw DNS serwera PostgreSQL w sieci wirtualnej.
- Obszar roboczy usługi Log Analytics: działa jako kontener docelowy aplikacji w celu wysłania dzienników, gdzie można również wykonywać zapytania dotyczące dzienników.
- Azure Cache for Redis: dostępna tylko z prywatnego punktu końcowego.
- Key Vault: dostępny tylko zza prywatnego punktu końcowego. Służy do zarządzania sekretami dla aplikacji App Service.
Po pierwszym zakończeniu tworzenia zasobów i wdrożeniu kodu aplikacji, wdrożona przykładowa aplikacja nie działa jeszcze. Aby nawiązać połączenie z bazą danych na platformie Azure, musisz wprowadzić niewielkie zmiany.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
Użyj ciągu połączenia z bazą danych
Szablon AZD, którego używasz, wygenerował zmienne łączności dla Ciebie już jako ustawienia aplikacji. Zwraca je do terminalu. Ustawienia aplikacji to jeden ze sposobów na utrzymanie danych uwierzytelniających z dala od repozytorium kodu.
W danych wyjściowych usługi AZD znajdź ustawienia
AZURE_POSTGRESQL_USER,AZURE_POSTGRESQL_PASSWORD,AZURE_POSTGRESQL_HOSTiAZURE_POSTGRESQL_NAME. Aby zachować bezpieczeństwo wpisów tajnych, wyświetlane są tylko nazwy ustawień. Wyglądają one następująco w danych wyjściowych usługi AZD:App Service app has the following connection settings: - AZURE_POSTGRESQL_NAME - AZURE_POSTGRESQL_HOST - AZURE_POSTGRESQL_USER - AZURE_POSTGRESQL_PASSWORD - AZURE_REDIS_CONNECTIONSTRING - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPEDla wygody szablon AZD wyświetla bezpośredni link do strony ustawień aplikacji. Znajdź link i otwórz go na nowej karcie przeglądarki.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
Modyfikowanie przykładowego kodu i ponowne wdrażanie
W obszarze codespace usługi GitHub rozpocznij nową sesję czatu, wybierając widok Czat , a następnie wybierz pozycję +.
Zadaj pytanie, @workspace Jak aplikacja łączy się z bazą danych? Copilot może dać wyjaśnienie,
SQLAlchemyjak skonfigurowany jest jego URI połączenia w plikach azureproject/development.py i azureproject/production.py.Zapytaj, @workspace W trybie produkcyjnym moja aplikacja działa jako aplikacja webowa App Service, która używa Azure Service Connector, aby nawiązać połączenie z elastycznym serwerem PostgreSQL, używając typu klienta Django. Jakich nazw zmiennych środowiskowych potrzebuję? Copilot może dać sugestię kodu podobną do tej w Opcja 2: bez korzystania z GitHub Copilot i nawet poinformować o zmianie w pliku azureproject/production.py.
Otwórz plik azureproject/production.py w eksploratorze i dodaj sugestię kodu.
Narzędzie GitHub Copilot nie daje tej samej odpowiedzi za każdym razem. Odpowiedzi nie zawsze są poprawne. Może być konieczne zadawanie większej liczby pytań, aby dostosować jego odpowiedź. Aby uzyskać porady, zobacz Co mogę zrobić z usługą GitHub Copilot w mojej przestrzeni kodu?.
W terminalu uruchom polecenie
azd deploy.azd deploy
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
Generowanie schematu bazy danych
W przypadku bazy danych PostgreSQL chronionej przez sieć wirtualną najprostszym sposobem uruchamiania migracji baz danych platformy Flask jest sesja SSH z kontenerem systemu Linux w usłudze App Service.
W danych wyjściowych usługi AZD znajdź adres URL sesji SSH i przejdź do niego w przeglądarce. Wygląda na to w danych wyjściowych:
Open SSH session to App Service container at: <URL>W sesji SSH uruchom
flask db upgrade. Jeśli to się powiedzie, usługa App Service pomyślnie nawiązuje połączenie z bazą danych.Uwaga
Tylko zmiany w plikach w
/homemogą być zapisywane po ponownym uruchomieniu aplikacji. Zmiany poza/homenie są zachowywane.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
Przechodzenie do aplikacji
W danych wyjściowych usługi AZD znajdź adres URL aplikacji i przejdź do niej w przeglądarce. Adres URL wygląda następująco w danych wyjściowych usługi AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <URL>Dodaj kilka restauracji do listy.
Gratulacje! Uruchamiasz aplikację internetową w usłudze Azure App Service z bezpieczną łącznością z usługą Azure Database for PostgreSQL.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
Przesyłaj logi diagnostyczne
Usługa Azure App Service może przechwytywać dzienniki konsoli, aby ułatwić diagnostykę usterek w aplikacji. Szablon AZD umożliwia już rejestrowanie w lokalnym systemie plików i wysyła dzienniki do obszaru roboczego usługi Log Analytics.
Przykładowa aplikacja zawiera print() instrukcje demonstrujące tę funkcjonalność, jak pokazano w poniższym fragmencie.
@app.route('/', methods=['GET'])
def index():
print('Request for index page received')
restaurants = Restaurant.query.all()
return render_template('index.html', restaurants=restaurants)
W danych wyjściowych usługi AZD znajdź link do strumieniowego przesyłania dzienników usługi App Service i przejdź do niego w przeglądarce.
Dowiedz się więcej na temat rejestrowania w aplikacjach języka Python w serii dotyczącej konfigurowania usługi Azure Monitor dla aplikacji języka Python.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
Uprzątnij zasoby
Aby usunąć wszystkie zasoby platformy Azure w bieżącym środowisku wdrażania, uruchom polecenie azd down i postępuj zgodnie z monitami.
azd down
Rozwiązywanie problemów
Poniżej przedstawiono niektóre problemy, które mogą wystąpić podczas próby wykonania czynności opisanych w tym samouczku i krokach, które należy rozwiązać.
Nie mogę nawiązać połączenia z sesją SSH
Jeśli nie możesz nawiązać połączenia z sesją SSH, uruchomienie samej aplikacji nie powiodło się.
Sprawdź dzienniki diagnostyczne, aby uzyskać szczegółowe informacje. Jeśli na przykład pojawi się błąd podobny do KeyError: 'AZURE_POSTGRESQL_HOST', może to oznaczać, że brakuje zmiennej środowiskowej. Być może usunięto ustawienie aplikacji.
Otrzymuję błąd podczas uruchamiania migracji bazy danych
Jeśli wystąpią jakiekolwiek błędy związane z nawiązywaniem połączenia z bazą danych, sprawdź, czy ustawienia aplikacji (AZURE_POSTGRESQL_USER, AZURE_POSTGRESQL_PASSWORD, AZURE_POSTGRESQL_HOSTi AZURE_POSTGRESQL_NAME) zostały zmienione lub usunięte. Bez tego parametry połączenia polecenie migracji nie może komunikować się z bazą danych.
Często zadawane pytania
- Ile kosztuje ta konfiguracja?
- Jak mogę nawiązać połączenie z serwerem PostgreSQL zabezpieczonym za siecią wirtualną przy użyciu innych narzędzi?
- W jaki sposób programowanie aplikacji lokalnych działa z funkcją GitHub Actions?
- Jak debugować błędy podczas wdrażania akcji GitHub?
- Nie mam uprawnień do tworzenia tożsamości przypisanej przez użytkownika
- Co mogę zrobić za pomocą narzędzia GitHub Copilot w swojej przestrzeni kodu?
Ile kosztuje ta konfiguracja?
Cennik utworzonych zasobów jest następujący:
- Plan usługi App Service jest tworzony w warstwie Podstawowa i można go skalować w górę lub w dół. Zobacz Cennik usługi App Service.
- Serwer elastyczny PostgreSQL jest tworzony w najniższej warstwie burstable Standard_B1ms, z minimalnym rozmiarem pamięci, który można skalować w górę lub w dół. Zobacz Cennik usługi Azure Database for PostgreSQL.
- Sieć wirtualna nie powoduje naliczania opłat, chyba że skonfigurujesz dodatkowe funkcje, takie jak peerowanie. Zobacz Cennik usługi Azure Virtual Network.
- Prywatna strefa DNS wiąże się z niewielką opłatą. Zobacz Cennik usługi Azure DNS.
Jak mogę nawiązać połączenie z serwerem PostgreSQL zabezpieczonym za siecią wirtualną przy użyciu innych narzędzi?
- Aby uzyskać podstawowy dostęp z poziomu narzędzia wiersza polecenia, można uruchomić
psqlz poziomu sesji SSH aplikacji. - Aby nawiązać połączenie z poziomu narzędzia klasycznego, komputer musi znajdować się w sieci wirtualnej. Na przykład może to być maszyna wirtualna platformy Azure połączona z jedną z podsieci lub komputer w sieci lokalnej, który jest połączony przez VPN typu site-to-site z siecią wirtualną platformy Azure.
- Usługę Azure Cloud Shell można również zintegrować z siecią wirtualną.
W jaki sposób programowanie aplikacji lokalnych działa z funkcją GitHub Actions?
W przypadku automatycznie wygenerowanego pliku przepływu pracy z usługi App Service jako przykład każdy git push rozpoczyna nowy przebieg kompilacji i wdrożenia. Z lokalnego klonu repozytorium GitHub należy wprowadzić żądane aktualizacje i wypchnąć je do usługi GitHub. Na przykład:
git add .
git commit -m "<some-message>"
git push origin main
Jak debugować błędy podczas wdrażania w GitHub Actions?
Jeśli krok zakończy się niepowodzeniem w automatycznie wygenerowanym pliku przepływu pracy usługi GitHub, spróbuj zmodyfikować polecenie, które zakończyło się niepowodzeniem, aby wygenerować bardziej szczegółowe dane wyjściowe. Na przykład możesz uzyskać pełne dane wyjściowe z polecenia python, dodając opcję -d. Zatwierdź i wypchnij zmiany, aby uruchomić kolejne wdrożenie dla usługi App Service.
Nie mam uprawnień do tworzenia tożsamości przypisanej przez użytkownika
Zobacz Skonfiguruj wdrożenie GitHub Actions z Centrum wdrożeń.
Co mogę zrobić za pomocą narzędzia GitHub Copilot w swojej przestrzeni kodu?
Możesz zauważyć, że widok czatu GitHub Copilot był już dostępny, gdy tworzyłeś przestrzeń kodową. Dla wygody dołączamy rozszerzenie GitHub Copilot Chat w definicji kontenera. Zobacz .devcontainer/devcontainer.json. Potrzebujesz konta GitHub Copilot. Dostępna jest 30-dniowa bezpłatna wersja próbna.
Kilka wskazówek dotyczących rozmowy z usługą GitHub Copilot:
- W jednej sesji czatu pytania i odpowiedzi opierają się na sobie nawzajem. Możesz dostosować swoje pytania, aby precyzyjniej uzyskać odpowiedź.
- Domyślnie narzędzie GitHub Copilot nie ma dostępu do żadnego pliku w repozytorium. Aby zadać pytania dotyczące pliku, najpierw otwórz plik w edytorze.
- Aby umożliwić usłudze GitHub Copilot dostęp do wszystkich plików w repozytorium podczas przygotowywania odpowiedzi, zacznij od pytania
@workspace. Aby uzyskać więcej informacji, zobacz Use the @workspace agent. - Podczas sesji czatu narzędzie GitHub Copilot może sugerować zmiany,
@workspacea nawet gdzie wprowadzić zmiany, ale nie jest dozwolone, by wprowadzał zmiany za ciebie. Wystarczy dodać sugerowane zmiany i przetestować je.
Treści powiązane
Przejdź do następnego samouczka, aby dowiedzieć się, jak zabezpieczyć aplikację przy użyciu domeny niestandardowej i certyfikatu.
Dowiedz się, jak usługa App Service uruchamia aplikację w języku Python:
