Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym samouczku wdrożysz opartą na danych aplikację internetową języka Python (FastAPI ) do Azure App Service za pomocą usługi relacyjnej bazy danych Azure Database for PostgreSQL. Azure App Service obsługuje język Python w środowisku serwera z systemem Linux. Jeśli chcesz, zobacz zamiast tego samouczek platformy Flask lub samouczek Django.
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 dla aplikacji internetowej.
- Region do fizycznego uruchamiania aplikacji na świecie.
- Stos czasu wykonywania 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 portalu Azure i wykonaj następujące kroki, aby utworzyć zasoby usługi Azure App Service.
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 oznaczony jako Web App + Database pod nagłówkiem 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 uruchomieniowy → 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 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 umożliwia rozwiązywanie 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 Python na Azure App Service w systemie Linux.
2. Sprawdź ustawienia połączenia
Kreator tworzenia już wygenerował zmienne łączności jako ustawienia aplikacji. Ustawienia aplikacji to jeden ze sposobów na trzymanie tajemnic połączenia z dala od repozytorium kodu. Gdy będziesz gotowy do przeniesienia tajemnic 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
do twojego repozytorium GitHub uruchomi 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 katalogu
.github/workflows
.
Krok 6. Na stronie Centrum wdrażania:
- Wybierz pozycję Dzienniki. Proces wdrożeniowy został już rozpoczęty.
- W elemencie dziennika dla przebiegu wdrożenia wybierz pozycję Kompiluj/Wdróż dzienniki.
Krok 7: Zostajesz przeniesiony do swojego repozytorium GitHub i widzisz, że akcja 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 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
mogą być trwałe poza ponownymi uruchomieniami aplikacji. Zmiany wykonane poza /home
nie są zapisywane.
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.
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. Strumieniowanie 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, co pokazano w poniższym fragmencie kodu.
@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 Logowanie aplikacji wybierz pozycję System plików.
- W górnym menu wybierz pozycję Zapisz.
Krok 2: Z menu po lewej stronie wybierz 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 opartą na 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 umożliwia rozwiązywanie 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 ID Subskrypcji (Guid), App Service i Resource Group w wynikach. Są one używane w poniższych sekcjach. Twój wynik będzie wyglądał podobnie do poniższego (częściowego) wyniku: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. Sprawdź ciąg połączenia bazy danych
Szablon azd generuje zmienne łączności dla Ciebie jako ustawienia aplikacji. Ustawienia aplikacji to jeden ze sposobów na trzymanie tajemnic połączenia z dala od 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
Usługa Azure App Service wymaga polecenia startowego, aby uruchomić aplikację FastAPI. Szablon azd ustawia to polecenie dla Ciebie w wystąpieniu usługi App Service.
W pliku
infra/resources.bicep
znajdź deklarację dla swojej witryny sieci Web, a następnie znajdź ustawienie dlaappCommandLine
. 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 Python na Azure App Service w systemie Linux.
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, którą zanotowałeś wcześniej w danych wyjściowych azd, aby skonstruować adres URL sesji SSH i przejść do niej w przeglądarce.
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
mogą być trwałe poza ponownymi uruchomieniami aplikacji. Zmiany wykonane poza/home
nie są zapisywane.
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: <URL>
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. Strumieniowanie 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)
)
Aby uzyskać dostęp do strumienia dziennika, otwórz aplikację w witrynie Azure Portal. Wybierz opcję Monitorowanie>Strumień logu.
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.
- Wirtualna sieć nie powoduje naliczania opłat, chyba że skonfigurujesz dodatkowe funkcje, takie jak peering. 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: