Wdrażanie aplikacji internetowej FastAPI w języku Python za pomocą bazy danych PostgreSQL na platformie Azure
W tym samouczku wdrożysz opartą na danych aplikację internetową języka Python (FastAPI) w celu aplikacja systemu Azure Service za pomocą usługi relacyjnej bazy danych usługi Azure Database for PostgreSQL. Obsługa usługi aplikacja systemu AzureJęzyk Python w środowisku serwera z systemem Linux.
Do ukończenia tego samouczka potrzebne są następujące elementy:
- Konto platformy Azure z aktywną subskrypcją. Jeśli nie masz konta platformy Azure, możesz go utworzyć bezpłatnie.
- Znajomość języka Python przy użyciu programowania za pomocą interfejsu FastAPI
- Konto platformy Azure z aktywną subskrypcją. Jeśli nie masz konta platformy Azure, możesz go utworzyć bezpłatnie.
- 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 przy użyciu programowania za pomocą interfejsu FastAPI
Przejdź do końca
Po zainstalowaniu interfejsu wiersza polecenia dla deweloperów platformy Azure możesz przejść do końca samouczka, uruchamiając następujące polecenia w pustym katalogu roboczym:
azd auth login
azd init --template msdocs-fastapi-postgresql-sample-app
azd up
Aplikacja przykładowa
Udostępniono przykładową aplikację w języku Python korzystającą z platformy FastAPI, która pomoże Ci wykonać czynności opisane w tym samouczku. Aby wdrożyć go bez uruchamiania go lokalnie, pomiń tę część.
Aby uruchomić aplikację lokalnie, upewnij się, że masz zainstalowany lokalnie język Python 3.8 lub nowszy i program PostgreSQL . Następnie sklonuj gałąź przykładowego repozytorium starter-no-infra
i przejdź do katalogu głównego repozytorium.
git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-fastapi-postgresql-sample-app
cd msdocs-fastapi-postgresql-sample-app
Utwórz plik env, jak pokazano poniżej, korzystając z pliku .env.sample jako przewodnika. Ustaw wartość DBNAME
na nazwę istniejącej bazy danych w lokalnym wystąpieniu bazy danych PostgreSQL. Ustaw wartości DBHOST
, DBUSER
i DBPASS
zgodnie z potrzebami dla lokalnego wystąpienia bazy danych PostgreSQL.
DBNAME=<database name>
DBHOST=<database-hostname>
DBUSER=<db-user-name>
DBPASS=<db-password>
Utwórz środowisko wirtualne dla aplikacji:
py -m venv .venv
.venv\scripts\activate
Zainstaluj zależności:
python3 -m pip install -r src/requirements.txt
Zainstaluj aplikację jako pakiet edytowalny:
python3 -m pip install -e src
Uruchom przykładową aplikację przy użyciu następujących poleceń:
# Run database migration
python3 src/fastapi_app/seed_data.py
# Run the app at http://127.0.0.1:8000
python3 -m uvicorn fastapi_app:app --reload --port=8000
1. Tworzenie usług App Service i PostgreSQL
W tym kroku utworzysz zasoby platformy Azure. 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. W przypadku procesu tworzenia należy określić:
- Nazwa aplikacji internetowej. Jest to nazwa używana jako część nazwy DNS aplikacji internetowej w postaci
https://<app-name>.azurewebsites.net
. - Region do fizycznego uruchamiania aplikacji na świecie.
- Stos środowiska uruchomieniowego dla aplikacji. W tym miejscu wybierasz wersję języka Python, która ma być używana dla aplikacji.
- Plan hostingu aplikacji. Jest to warstwa cenowa obejmująca zestaw funkcji i pojemność skalowania aplikacji.
- Grupa zasobów dla aplikacji. Grupa zasobów umożliwia grupowanie (w kontenerze logicznym) wszystkich zasobów platformy Azure potrzebnych dla aplikacji.
Zaloguj się do witryny Azure Portal i wykonaj następujące kroki, aby utworzyć zasoby usługi aplikacja systemu Azure.
Krok 1. W witrynie Azure Portal:
- Wprowadź ciąg "baza danych aplikacji internetowej" na pasku wyszukiwania w górnej części witryny Azure Portal.
- Wybierz element z etykietą Web App + Database w obszarze nagłówka Marketplace . Możesz również przejść bezpośrednio do kreatora tworzenia.
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-python-postgres-tutorial.
- Region → dowolny region świadczenia usługi Azure w pobliżu.
- Nazwa → msdocs-python-postgres-XYZ , gdzie XYZ jest dowolnymi trzema losowymi znakami. Ta nazwa musi być unikatowa w obrębie całej platformy Azure.
- Stos środowiska uruchomieniowego → python 3.12.
- Database → PostgreSQL — serwer elastyczny jest domyślnie wybierany jako aparat bazy danych. Nazwa serwera i nazwa bazy danych są również domyślnie ustawione na odpowiednie wartości.
- Plan hostingu → Podstawowa. Gdy wszystko będzie gotowe, możesz później skalować w górę do warstwy cenowej produkcyjnej.
- Wybierz pozycję Przejrzyj i utwórz.
- Po zakończeniu walidacji wybierz pozycję Utwórz.
Krok 3. Ukończenie wdrożenia trwa kilka minut. Po zakończeniu wdrażania wybierz przycisk Przejdź do zasobu . Jesteś przekierowany bezpośrednio do aplikacji usługi App Service, ale tworzone są 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. Zostanie utworzony plan systemu Linux w warstwie Podstawowa.
- Usługa 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.
- 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 strefy → umożliwia rozpoznawanie nazw DNS serwera PostgreSQL w sieci wirtualnej.
Krok 4. W przypadku aplikacji FastAPI należy wprowadzić polecenie uruchamiania, aby usługa App Service mogła uruchomić aplikację. Na stronie App Service:
- W menu po lewej stronie w obszarze Ustawienia wybierz pozycję Konfiguracja.
- Na karcie Ustawienia ogólne na stronie Konfiguracja wprowadź
src/entrypoint.sh
w polu Polecenie uruchamiania w obszarze Ustawienia stosu. - Wybierz pozycję Zapisz. Po wyświetleniu monitu wybierz pozycję Kontynuuj. Aby dowiedzieć się więcej na temat konfiguracji i uruchamiania aplikacji w usłudze App Service, zobacz Konfigurowanie aplikacji języka Python dla systemu Linux dla usługi aplikacja systemu Azure Service.
2. Sprawdź ustawienia połączenia
Kreator tworzenia wygenerował zmienne łączności już jako ustawienia aplikacji. Ustawienia aplikacji to jeden ze sposobów przechowywania wpisów tajnych połączenia z repozytorium kodu. Gdy wszystko będzie gotowe do przeniesienia wpisów tajnych do bezpieczniejszej lokalizacji, zapoznaj się z artykułem dotyczącym przechowywania w usłudze Azure Key Vault.
Krok 1. Na stronie usługi App Service w menu po lewej stronie wybierz pozycję Zmienne środowiskowe.
Krok 2. Na karcie Ustawienia aplikacji na stronie Zmienne środowiskowe sprawdź, czy AZURE_POSTGRESQL_CONNECTIONSTRING
jest obecny. Parametry połączenia zostaną wprowadzone do środowiska uruchomieniowego jako zmienna środowiskowa.
3. Wdrażanie przykładowego kodu
W tym kroku skonfigurujesz wdrożenie usługi GitHub przy użyciu funkcji GitHub Actions. Jest to tylko jeden z wielu sposobów wdrażania w usłudze App Service, ale także doskonały sposób ciągłej integracji w procesie wdrażania. Domyślnie każde git push
repozytorium GitHub uruchamia akcję kompilacji i wdrażania.
Krok 1. W nowym oknie przeglądarki:
- Zaloguj się na istniejącym koncie GitHub.
- Przejdź do https://github.com/Azure-Samples/msdocs-fastapi-postgresql-sample-app.
- Wybierz pozycję Rozwidlenie.
- Wybierz pozycję Utwórz rozwidlenie.
Krok 2. Na stronie GitHub otwórz program Visual Studio Code w przeglądarce, naciskając .
.
Krok 3. W programie Visual Studio Code w przeglądarce otwórz plik src/fastapi/models.py w eksploratorze. Zobacz zmienne środowiskowe używane w środowisku produkcyjnym, w tym ustawienia aplikacji widoczne na stronie konfiguracji.
Krok 4. Powrót na stronę usługi App Service w menu po lewej stronie w obszarze Wdrożenie wybierz pozycję Centrum wdrażania.
Krok 5. 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-fastapi-postgresql-sample-app.
- W obszarze Gałąź wybierz pozycję main.
- Pozostaw wybraną opcję domyślną, aby dodać przepływ pracy.
- W obszarze 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 w wybranym repozytorium GitHub w
.github/workflows
katalogu.
Krok 6. Na stronie Centrum wdrażania:
- Wybierz pozycję Dzienniki. Uruchomienie wdrożenia zostało już uruchomione.
- W elemencie dziennika dla przebiegu wdrożenia wybierz pozycję Kompiluj/Wdróż dzienniki.
Krok 7. Wykonano cię do repozytorium GitHub i zobaczysz, że 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 Ukończono. Trwa to około 5 minut.
Masz problemy? Zapoznaj się z przewodnikiem rozwiązywania problemów.
4. Generowanie schematu bazy danych
W poprzedniej sekcji dodano src/entrypoint.sh jako polecenie uruchamiania aplikacji. entrypoint.sh zawiera następujący wiersz: python3 src/fastapi_app/seed_data.py
. To polecenie służy do migracji bazy danych. W przykładowej aplikacji zapewnia tylko, że prawidłowe tabele są tworzone w bazie danych. Te tabele nie są wypełniane żadnymi danymi.
W tej sekcji uruchomisz to polecenie ręcznie w celach demonstracyjnych. W przypadku bazy danych PostgreSQL chronionej przez sieć wirtualną najprostszym sposobem uruchomienia polecenia jest sesja SSH z kontenerem usługi App Service.
Krok 1. Powrót na stronę usługi App Service w menu po lewej stronie
- Wybierz pozycję SSH.
- Wybierz pozycję Idź.
Krok 2. W terminalu SSH uruchom polecenie python3 src/fastapi_app/seed_data.py
. Jeśli to się powiedzie, usługa App Service pomyślnie nawiązuje połączenie z bazą danych.
Tylko zmiany w plikach w /home
programie mogą być utrwalane poza ponownymi uruchomieniami aplikacji. Zmiany poza programem /home
nie są utrwalane.
5. Przejdź do aplikacji
Krok 1. Na stronie usługi App Service:
- W menu po lewej stronie wybierz pozycję Przegląd.
- Wybierz adres URL aplikacji. Możesz również przejść bezpośrednio do
https://<app-name>.azurewebsites.net
adresu .
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.
6. Przesyłanie strumieniowe dzienników diagnostycznych
Przykładowa aplikacja używa modułu rejestrowania biblioteki standardowej języka Python, aby ułatwić diagnozowanie problemów z aplikacją. Przykładowa aplikacja zawiera wywołania rejestratora, jak pokazano w poniższym kodzie.
@app.get("/", response_class=HTMLResponse)
async def index(request: Request, session: Session = Depends(get_db_session)):
logger.info("root called")
statement = (
select(Restaurant, func.avg(Review.rating).label("avg_rating"), func.count(Review.id).label("review_count"))
.outerjoin(Review, Review.restaurant == Restaurant.id)
.group_by(Restaurant.id)
)
Krok 1. Na stronie usługi App Service:
- W menu po lewej stronie w obszarze Monitorowanie wybierz pozycję Dzienniki usługi App Service.
- W obszarze Rejestrowanie aplikacji wybierz pozycję 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.
Wyświetlenie zdarzeń w dziennikach diagnostycznych może potrwać kilka minut. 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.
7. Czyszczenie zasobów
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:
- Wprowadź nazwę grupy zasobów, aby potwierdzić usunięcie.
- Wybierz Usuń.
1. 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.
Jeśli jeszcze tego nie zrobiono, sklonuj gałąź przykładowego repozytorium
starter-no-infra
w lokalnym terminalu.git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-fastapi-postgresql-sample-app cd msdocs-fastapi-postgresql-sample-app
Ta sklonowana gałąź jest punktem wyjścia. Zawiera prostą aplikację FastAPI dysku danych.
W katalogu głównym repozytorium uruchom polecenie
azd init
.azd init --template msdocs-fastapi-postgresql-sample-app
Po 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>.azurewebsites.net
). Znaki alfanumeryczne i łączniki są dozwolone.Uruchom polecenie ,
azd up
aby aprowizować niezbędne zasoby platformy Azure i wdrożyć kod aplikacji. Jeśli jeszcze nie zalogowałeś się na platformie Azure, przeglądarka zostanie uruchomiona i poprosi o zalogowanie się. Polecenieazd up
wyświetli również monit o wybranie żądanej subskrypcji i lokalizacji do wdrożenia.azd up
Wykonanie
azd up
polecenia może potrwać kilka minut. Kompiluje również i wdraża kod aplikacji. Gdy jest uruchomiona, polecenie udostępnia komunikaty dotyczące procesu aprowizacji i wdrażania, w tym link do wdrożenia na platformie Azure. Po zakończeniu polecenie wyświetli również link do aplikacji wdrażania.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. Określono plan systemu Linux w warstwie B1 .
- Usługa 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.
- 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 strefy → umożliwia rozpoznawanie nazw DNS serwera PostgreSQL w sieci wirtualnej.
- Obszar roboczy usługi Log Analytics → Działa jako kontener docelowy dla aplikacji w celu wysłania dzienników, gdzie można również wykonywać zapytania dotyczące dzienników.
Po zakończeniu
azd up
polecenia zanotuj wartości identyfikatora subskrypcji (Guid), usługi App Service i grupy zasobów w danych wyjściowych. Są one używane w poniższych sekcjach. Dane wyjściowe będą wyglądać podobnie do następujących (częściowych) danych wyjściowych:Subscription: Your subscription name (1111111-1111-1111-1111-111111111111) Location: East US You can view detailed progress in the Azure Portal: https://portal.azure.com/#view/HubsExtension/DeploymentDetailsBlade/~/overview/id/%2Fsubscriptions%2F1111111-1111-1111-1111-111111111111%2Fproviders%2FMicrosoft.Resources%2Fdeployments%2Fyourenv-1721867673 (✓) Done: Resource group: yourenv-rg (✓) Done: Virtual Network: yourenv-e2najjk4vewf2-vnet (✓) Done: App Service plan: yourenv-e2najjk4vewf2-service-plan (✓) Done: Log Analytics workspace: yourenv-e2najjk4vewf2-workspace (✓) Done: Application Insights: yourenv-e2najjk4vewf2-appinsights (✓) Done: Portal dashboard: yourenv-e2najjk4vewf2-dashboard (✓) Done: App Service: yourenv-e2najjk4vewf2-app-service (✓) Done: Azure Database for PostgreSQL flexible server: yourenv-e2najjk4vewf2-postgres-server (✓) Done: Cache for Redis: yourenv-e2najjk4vewf2-redisCache (✓) Done: Private Endpoint: cache-privateEndpoint SUCCESS: Your application was provisioned in Azure in 32 minutes. You can view the resources created under the resource group yourenv-rg in Azure Portal: https://portal.azure.com/#@/resource/subscriptions/1111111-1111-1111-1111-111111111111/resourceGroups/yourenv-rg/overview Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://yourenv-e2najjk4vewf2-app-service.azurewebsites.net/
2. Badanie parametry połączenia bazy danych
Szablon azd generuje zmienne łączności dla Ciebie jako ustawienia aplikacji. Ustawienia aplikacji to jeden ze sposobów przechowywania wpisów tajnych połączenia z repozytorium kodu.
infra/resources.bicep
W pliku znajdź ustawienia aplikacji i znajdź ustawienie .AZURE_POSTGRESQL_CONNECTIONSTRING
resource appSettings 'config' = { name: 'appsettings' properties: { SCM_DO_BUILD_DURING_DEPLOYMENT: 'true' AZURE_POSTGRESQL_CONNECTIONSTRING: 'dbname=${pythonAppDatabase.name} host=${postgresServer.name}.postgres.database.azure.com port=5432 sslmode=require user=${postgresServer.properties.administratorLogin} password=${databasePassword}' SECRET_KEY: secretKey AZURE_REDIS_CONNECTIONSTRING: 'rediss://:${redisCache.listKeys().primaryKey}@${redisCache.name}.redis.cache.windows.net:6380/0' } }
AZURE_POSTGRESQL_CONNECTIONSTRING
zawiera parametry połączenia do bazy danych Postgres na platformie Azure. Aby nawiązać z nim połączenie, musisz użyć go w kodzie. Kod używający tej zmiennej środowiskowej można znaleźć w pliku src/fastapi/models.py:sql_url = "" if os.getenv("WEBSITE_HOSTNAME"): logger.info("Connecting to Azure PostgreSQL Flexible server based on AZURE_POSTGRESQL_CONNECTIONSTRING...") env_connection_string = os.getenv("AZURE_POSTGRESQL_CONNECTIONSTRING") if env_connection_string is None: logger.info("Missing environment variable AZURE_POSTGRESQL_CONNECTIONSTRING") else: # Parse the connection string details = dict(item.split('=') for item in env_connection_string.split()) # Properly format the URL for SQLAlchemy sql_url = ( f"postgresql://{quote_plus(details['user'])}:{quote_plus(details['password'])}" f"@{details['host']}:{details['port']}/{details['dbname']}?sslmode={details['sslmode']}" ) else: logger.info("Connecting to local PostgreSQL server based on .env file...") load_dotenv() POSTGRES_USERNAME = os.environ.get("DBUSER") POSTGRES_PASSWORD = os.environ.get("DBPASS") POSTGRES_HOST = os.environ.get("DBHOST") POSTGRES_DATABASE = os.environ.get("DBNAME") POSTGRES_PORT = os.environ.get("DBPORT", 5432) sql_url = f"postgresql://{POSTGRES_USERNAME}:{POSTGRES_PASSWORD}@{POSTGRES_HOST}:{POSTGRES_PORT}/{POSTGRES_DATABASE}" engine = create_engine(sql_url)
3. Sprawdź polecenie uruchamiania
aplikacja systemu Azure Service wymaga polecenia uruchamiania, aby uruchomić aplikację FastAPI. Szablon azd ustawia to polecenie dla Ciebie w wystąpieniu usługi App Service.
infra/resources.bicep
W pliku znajdź deklarację witryny sieci Web, a następnie znajdź ustawienie .appCommandLine
To jest ustawienie polecenia uruchamiania.resource web 'Microsoft.Web/sites@2022-03-01' = { name: '${prefix}-app-service' location: location tags: union(tags, { 'azd-service-name': 'web' }) kind: 'app,linux' properties: { serverFarmId: appServicePlan.id siteConfig: { alwaysOn: true linuxFxVersion: 'PYTHON|3.11' ftpsState: 'Disabled' appCommandLine: 'src/entrypoint.sh' minTlsVersion: '1.2' } httpsOnly: true } identity: { type: 'SystemAssigned' }
Polecenie uruchamiania uruchamia plik src/entrypoint.sh. Zapoznaj się z kodem w tym pliku, aby zrozumieć polecenia uruchamiane przez usługę App Service w celu uruchomienia aplikacji:
#!/bin/bash set -e python3 -m pip install --upgrade pip python3 -m pip install -e src python3 src/fastapi_app/seed_data.py python3 -m gunicorn fastapi_app:app -c src/gunicorn.conf.py
Aby dowiedzieć się więcej na temat konfiguracji i uruchamiania aplikacji w usłudze App Service, zobacz Konfigurowanie aplikacji języka Python dla systemu Linux dla usługi aplikacja systemu Azure Service.
4. Generowanie schematu bazy danych
Być może zauważysz w poprzedniej sekcji, że entrypoint.sh zawiera następujący wiersz: python3 src/fastapi_app/seed_data.py
. To polecenie służy do migracji bazy danych. W przykładowej aplikacji zapewnia tylko, że prawidłowe tabele są tworzone w bazie danych. Te tabele nie są wypełniane żadnymi danymi.
W tej sekcji uruchomisz to polecenie ręcznie w celach demonstracyjnych. W przypadku bazy danych PostgreSQL chronionej przez sieć wirtualną najprostszym sposobem uruchomienia polecenia jest sesja SSH z kontenerem usługi App Service.
Użyj wartości usługi App Service zanotowaną wcześniej w danych wyjściowych azd i szablonie przedstawionym poniżej, aby skonstruować adres URL sesji SSH i przejść do niej w przeglądarce:
https://<app-name>.scm.azurewebsites.net/webssh/host
W terminalu SSH uruchom polecenie
python3 src/fastapi_app/seed_data.py
. Jeśli to się powiedzie, usługa App Service pomyślnie nawiązuje połączenie z bazą danych.Uwaga
Tylko zmiany w plikach w
/home
programie mogą być utrwalane poza ponownymi uruchomieniami aplikacji. Zmiany poza programem/home
nie są utrwalane.
5. Przejdź do aplikacji
W danych wyjściowych 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: https://<app-name>.azurewebsites.net/
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.
6. Przesyłanie strumieniowe dzienników diagnostycznych
usługa aplikacja systemu Azure może przechwytywać dzienniki, aby ułatwić diagnozowanie problemów z aplikacją. Dla wygody szablon azd włączył już rejestrowanie w lokalnym systemie plików.
Przykładowa aplikacja używa modułu rejestrowania biblioteki standardowej języka Python do wyprowadzania dzienników. Przykładowa aplikacja zawiera wywołania rejestratora, jak pokazano poniżej.
@app.get("/", response_class=HTMLResponse)
async def index(request: Request, session: Session = Depends(get_db_session)):
logger.info("root called")
statement = (
select(Restaurant, func.avg(Review.rating).label("avg_rating"), func.count(Review.id).label("review_count"))
.outerjoin(Review, Review.restaurant == Restaurant.id)
.group_by(Restaurant.id)
)
Użyj wartości identyfikatora subskrypcji (Guid), grupy zasobów i usługi App Service zanotowanej wcześniej w danych wyjściowych azd i szablonu pokazanego poniżej, aby skonstruować adres URL do przesyłania strumieniowego dzienników usługi App Service i przechodzić do niego w przeglądarce.
https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream
Wyświetlenie zdarzeń w dziennikach diagnostycznych może potrwać kilka minut. 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.
7. Czyszczenie zasobów
Aby usunąć wszystkie zasoby platformy Azure w bieżącym środowisku wdrażania, uruchom polecenie azd down
.
azd down
Rozwiązywanie problemów
Poniżej wymieniono 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 zostanie wyświetlony błąd KeyError: 'AZURE_POSTGRESQL_CONNECTIONSTRING'
podobny do , 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_CONNECTIONSTRING
) zostały zmienione. 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?
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 z możliwością zwiększania szybkości Standard_B1ms z minimalnym rozmiarem magazynu, 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 komunikacja równorzędna. 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ć
psql
z poziomu terminalu SSH aplikacji. - Aby nawiązać połączenie z poziomu narzędzia klasycznego, maszyna musi znajdować się w sieci wirtualnej. Na przykład może to być maszyna wirtualna platformy Azure połączona z jedną z podsieci lub maszyna w sieci lokalnej, która ma połączenie sieci VPN typu lokacja-lokacja 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?
Na przykład przy użyciu automatycznie wygenerowanego pliku przepływu pracy z usługi App Service 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
Następne kroki
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: