Bagikan melalui


Menyebarkan aplikasi web Python FastAPI dengan PostgreSQL di Azure

Dalam tutorial ini, Anda menyebarkan aplikasi web Python berbasis data (FastAPI ) ke Azure App Service dengan layanan database relasional Azure Database for PostgreSQL . Azure App Service mendukung Python di lingkungan server Linux. Jika mau, lihat tutorial Flask atau tutorial Django sebagai gantinya.

Diagram arsitektur memperlihatkan App Service dengan database PostgreSQL di Azure.

Untuk menyelesaikan tutorial ini, Anda memerlukan:

  • Akun Azure dengan langganan aktif. Jika Anda tidak memiliki akun Azure, Anda dapat membuatnya secara gratis.
  • Pengetahuan tentang Python dengan pengembangan FastAPI

Lewati ke akhir

Dengan Azure Developer CLI terinstal, Anda dapat melompat ke akhir tutorial dengan menjalankan perintah berikut di direktori kerja kosong:

azd auth login
azd init --template msdocs-fastapi-postgresql-sample-app
azd up

Aplikasi sampel

Sampel aplikasi Python menggunakan kerangka kerja FastAPI disediakan untuk membantu Anda mengikuti tutorial ini. Untuk menyebarkannya tanpa menjalankannya secara lokal, lewati bagian ini.

Untuk menjalankan aplikasi secara lokal, pastikan Anda memiliki Python 3.8 atau yang lebih tinggi dan PostgreSQL yang diinstal secara lokal. Kemudian, kloning cabang repositori starter-no-infra sampel dan beralih ke direktori akar repositori.

git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-fastapi-postgresql-sample-app
cd msdocs-fastapi-postgresql-sample-app

Buat file .env seperti yang ditunjukkan di bawah ini menggunakan file .env.sample sebagai panduan. Atur nilai DBNAME ke nama database yang ada di instans PostgreSQL lokal Anda. Atur nilai DBHOST, , DBUSER, dan DBPASS sesuai untuk instans PostgreSQL lokal Anda.

DBNAME=<database name>
DBHOST=<database-hostname>
DBUSER=<db-user-name>
DBPASS=<db-password>

Buat lingkungan virtual untuk aplikasi:

py -m venv .venv
.venv\scripts\activate

Pasang dependensi:

python3 -m pip install -r src/requirements.txt

Instal aplikasi sebagai paket yang dapat diedit:

python3 -m pip install -e src

Jalankan aplikasi sampel dengan perintah berikut:

# 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. Buat App Service dan PostgreSQL

Dalam langkah ini, Anda membuat sumber daya Azure. Langkah-langkah yang digunakan dalam tutorial ini membuat sekumpulan sumber daya aman secara default yang menyertakan App Service dan Azure Database for PostgreSQL. Untuk proses pembuatan, Anda menentukan:

  • Nama untuk aplikasi web. Ini adalah nama yang digunakan sebagai bagian dari nama DNS untuk aplikasi web Anda.
  • Wilayah tempat aplikasi dijalankan secara fisik di dunia.
  • Tumpukan Runtime untuk aplikasi tersebut. Di sinilah Anda memilih versi Python yang akan digunakan untuk aplikasi Anda.
  • Paket Hosting untuk aplikasi. Ini adalah tingkat harga yang mencakup serangkaian fitur dan kapasitas penskalaan untuk aplikasi Anda.
  • Grup Sumber Daya untuk aplikasi. Grup sumber daya memungkinkan Anda mengelompokkan (dalam kontainer logika) semua sumber daya Azure yang diperlukan untuk aplikasi.

Masuk ke portal Microsoft Azure dan ikuti langkah-langkah ini untuk membuat sumber daya Azure App Service Anda.

Langkah 1: Di portal Microsoft Azure:

  1. Masukkan "database apl web" di bilah pencarian di bagian atas portal Azure.
  2. Pilih item berlabel Aplikasi Web + Database di bawah judul Marketplace . Anda juga dapat menavigasi ke wizard pembuatan secara langsung.

Langkah 2: Di halaman Buat Aplikasi Web + Database , isi formulir sebagai berikut.

  1. Grup Sumber Daya → Pilih Buat baru dan gunakan nama msdocs-python-postgres-tutorial.
  2. Wilayah → wilayah Azure mana pun di dekat Anda.
  3. Namamsdocs-python-postgres-XYZ di mana XYZ adalah tiga karakter acak. Nama ini harus unik di seluruh Azure.
  4. Stack runtimePython 3.12.
  5. DatabasePostgreSQL - Server Fleksibel dipilih secara default sebagai mesin database. Nama server dan nama database juga diatur secara default ke nilai yang sesuai.
  6. Paket hostingBasic. Setelah siap, Anda dapat meningkatkan skala ke tingkat harga produksi nanti.
  7. Pilih Tinjau + buat.
  8. Setelah validasi selesai, pilih Buat.

Langkah 3: Penyebaran membutuhkan waktu beberapa menit untuk diselesaikan. Setelah penyebaran selesai, pilih tombol Buka sumber daya . Anda diarahkan ke aplikasi App Service, tetapi sumber daya berikut dibuat:

  • Grup sumber daya → Kontainer untuk semua sumber daya yang dibuat.
  • Paket App Service → Menentukan sumber daya komputasi untuk App Service. Rencana Linux di tingkat Basic telah dibuat.
  • App Service → Mewakili aplikasi Anda dan berjalan dalam paket App Service.
  • Jaringan virtual → Terintegrasi dengan aplikasi App Service dan mengisolasi lalu lintas jaringan back-end.
  • Server fleksibel Azure Database for PostgreSQL → Hanya dapat diakses dari dalam jaringan virtual. Database dan pengguna dibuat untuk Anda di server.
  • Zona DNS privat → Memungkinkan resolusi DNS server PostgreSQL di jaringan virtual.

Langkah 4: Untuk aplikasi FastAPI, Anda harus memasukkan perintah startup sehingga App service dapat memulai aplikasi Anda. Pada halaman App Service:

  1. Di menu sebelah kiri, di bawah Pengaturan, pilih Konfigurasi.
  2. Di tab Pengaturan umum halaman Konfigurasi , masukkan src/entrypoint.sh di bidang Perintah Startup di bawah Pengaturan tumpukan.
  3. Pilih Simpan. Saat diminta, pilih Lanjutkan. Untuk mempelajari selengkapnya tentang konfigurasi dan startup aplikasi di App Service, lihat Mengonfigurasi aplikasi Linux Python untuk Azure App Service.

2. Verifikasi pengaturan koneksi

Wizard pembuatan telah menghasilkan variabel konektivitas sebagai pengaturan aplikasi untuk Anda. Pengaturan aplikasi adalah salah satu cara untuk menjaga rahasia koneksi keluar dari repositori kode Anda. Saat Anda siap untuk memindahkan rahasia Anda ke lokasi yang lebih aman, berikut adalah artikel tentang menyimpan di Azure Key Vault.

Langkah 1: Di halaman App Service, di menu sebelah kiri, pilih Variabel lingkungan.

Langkah 2: Di tab Pengaturan aplikasi dari halaman Variabel lingkungan , verifikasi bahwa AZURE_POSTGRESQL_CONNECTIONSTRING ada. string koneksi akan disuntikkan ke lingkungan runtime sebagai variabel lingkungan.

3. Menyebarkan kode sampel

Dalam langkah ini, Anda mengonfigurasi penyebaran GitHub menggunakan GitHub Actions. Ini hanya salah satu dari banyak cara untuk menyebarkan ke App Service, tetapi juga cara yang bagus untuk memiliki integrasi berkelanjutan dalam proses penyebaran Anda. Secara default, setiap tindakan seperti git push pada repositori GitHub Anda akan memulai proses build dan deploy.

Langkah 1: Di jendela browser baru:

  1. Masuk ke akun GitHub Anda.
  2. Arahkan ke https://github.com/Azure-Samples/msdocs-fastapi-postgresql-sample-app.
  3. Pilih Fork.
  4. Pilih Buat fork.

Langkah 2: Di halaman GitHub, buka Visual Studio Code di browser dengan menekan tombol . .

Langkah 3: Di Visual Studio Code di browser, buka src/fastapi/models.py di penjelajah. Lihat variabel lingkungan yang digunakan di lingkungan produksi, termasuk pengaturan aplikasi yang Anda lihat di halaman konfigurasi.

Langkah 4: Kembali ke halaman App Service, di menu sebelah kiri, di bawah Penyebaran, pilih Pusat Penyebaran.

Langkah 5: Di halaman Pusat Penyebaran:

  1. Di Sumber, pilih GitHub. Secara default, GitHub Actions dipilih sebagai penyedia build.
  2. Masuk ke akun GitHub Anda dan ikuti perintah untuk mengotorisasi Azure.
  3. Di Organisasi, pilih akun Anda.
  4. Di Repositori, pilih msdocs-fastapi-postgresql-sample-app.
  5. Di Cabang, pilih main.
  6. Pertahankan opsi default dipilih untuk Menambahkan alur kerja.
  7. Di bawah Jenis autentikasi, pilih Identitas yang ditetapkan pengguna.
  8. Di menu atas, pilih Simpan. App Service menerapkan file alur kerja ke dalam repositori GitHub yang dipilih, di direktori .github/workflows.

Langkah 6: Di halaman Pusat Penyebaran:

  1. Pilih Log. Proses penyebaran sudah dimulai.
  2. Di item log untuk eksekusi penyebaran, pilih Log Pembuatan/Penerapan.

Langkah 7: Anda dibawa ke repositori GitHub Anda dan melihat bahwa tindakan GitHub sedang berjalan. File alur kerja menentukan dua tahap terpisah, mem-build dan menyebarkan. Tunggu hingga eksekusi GitHub memperlihatkan status Selesai. Dibutuhkan sekitar 5 menit.

Mengalami masalah? Periksa panduan Pemecahan Masalah.

4. Hasilkan skema database

Di bagian sebelumnya, Anda menambahkan src/entrypoint.sh sebagai perintah startup untuk aplikasi Anda. entrypoint.sh berisi baris berikut: python3 src/fastapi_app/seed_data.py. Perintah ini memigrasikan database Anda. Di aplikasi sampel, ini hanya memastikan bahwa tabel yang benar dibuat di database Anda. Ini tidak mengisi tabel ini dengan data apa pun.

Di bagian ini, Anda akan menjalankan perintah ini secara manual untuk tujuan demonstrasi. Dengan database PostgreSQL yang dilindungi oleh jaringan virtual, cara term mudah untuk menjalankan perintah adalah dalam sesi SSH dengan kontainer App Service.

Langkah 1: Kembali ke halaman App Service, di menu sebelah kiri,

  1. Pilih SSH.
  2. Pilih Buka.

Langkah 2: Di terminal SSH, jalankan python3 src/fastapi_app/seed_data.py. Jika berhasil, App Service berhasil tersambung ke database. Hanya perubahan pada file di /home yang dapat bertahan di luar mulai ulang aplikasi. Perubahan di luar /home tidak dipertahankan.

5. Telusuri aplikasi

Langkah 1: Di halaman App Service:

  1. Dari menu sebelah kiri, pilih Gambaran Umum.
  2. Pilih URL aplikasi Anda.

Langkah 2: Tambahkan beberapa restoran ke daftar. Selamat, Anda menjalankan aplikasi web di Azure App Service, dengan konektivitas yang aman ke Azure Database for PostgreSQL.

6. Mengalirkan log diagnostik

Aplikasi sampel menggunakan modul pengelogan Pustaka Standar Python untuk membantu Anda mendiagnosis masalah dengan aplikasi Anda. Aplikasi sampel menyertakan panggilan ke pencatat seperti yang ditunjukkan dalam kode berikut.

@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)
    )

Langkah 1: Di halaman App Service:

  1. Dari menu sebelah kiri, di bawah Pemantauan, pilih Log App Service.
  2. Di bawah Pengelogan aplikasi, pilih Sistem File.
  3. Di menu atas, pilih Simpan.

Langkah 2: Dari menu sebelah kiri, pilih Aliran log. Anda melihat log untuk aplikasi Anda, termasuk log platform dan log dari dalam kontainer.

Peristiwa dapat memakan waktu beberapa menit untuk muncul di log diagnostik. Pelajari selengkapnya tentang pengelogan di aplikasi Python dalam seri tentang menyiapkan Azure Monitor untuk aplikasi Python Anda.

7. Membersihkan sumber daya

Setelah selesai, Anda dapat menghapus semua sumber daya dari langganan Azure dengan menghapus grup sumber daya.

Langkah 1: Di bilah pencarian di bagian atas portal Microsoft Azure:

  1. Masukkan nama grup sumber daya.
  2. Pilih grup sumber daya.

Langkah 2: Di halaman grup sumber daya, pilih Hapus grup sumber daya.

Langkah 3:

  1. Masukkan nama grup sumber daya untuk mengonfirmasi penghapusan Anda.
  2. Pilih Hapus.

1. Buat sumber daya Azure dan sebarkan aplikasi sampel

Dalam langkah ini, Anda membuat sumber daya Azure dan menyebarkan aplikasi sampel ke App Service di Linux. Langkah-langkah yang digunakan dalam tutorial ini membuat sekumpulan sumber daya aman secara default yang menyertakan App Service dan Azure Database for PostgreSQL.

  1. Jika Anda belum melakukannya, kloning cabang repositori starter-no-infra sampel di terminal lokal.

    git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-fastapi-postgresql-sample-app
    cd msdocs-fastapi-postgresql-sample-app
    

    Cabang kloning ini adalah titik awal Anda. Ini berisi aplikasi FastAPI berbasis data sederhana.

  2. Dari akar repositori, jalankan azd init.

    azd init --template msdocs-fastapi-postgresql-sample-app
    
  3. Saat diminta, berikan jawaban berikut:

    Pertanyaan Jawaban
    Direktori saat ini tidak kosong. Apakah Anda ingin menginisialisasi proyek di sini di '<your-directory>'? Y
    Apa yang ingin Anda lakukan dengan file-file ini? Jaga agar file saya yang ada tidak berubah
    Masukkan nama lingkungan baru Ketik nama unik. Templat azd menggunakan nama ini sebagai bagian dari nama DNS aplikasi web Anda di Azure (<app-name>.azurewebsites.net). Karakter alfanumerik dan tanda hubung diperbolehkan.
  4. Jalankan azd up perintah untuk menyediakan sumber daya Azure yang diperlukan dan menyebarkan kode aplikasi. Jika Anda belum masuk ke Azure, browser akan meluncurkan dan meminta Anda untuk masuk. Perintah azd up juga akan meminta Anda untuk memilih langganan dan lokasi yang diinginkan untuk men-deploy.

    azd up
    

    Perintah azd up dapat memakan waktu beberapa menit untuk diselesaikan. Ini juga mengkompilasi dan menyebarkan kode aplikasi Anda. Saat sedang berjalan, perintah menyediakan pesan tentang proses provisi dan penyebaran, termasuk tautan ke penyebaran di Azure. Setelah selesai, perintah juga menampilkan tautan ke aplikasi penyebaran.

    Templat azd ini berisi file (azure.yaml dan direktori infra ) yang menghasilkan arsitektur aman secara default dengan sumber daya Azure berikut:

    • Grup sumber daya → Kontainer untuk semua sumber daya yang dibuat.
    • Paket App Service → Menentukan sumber daya komputasi untuk App Service. Paket Linux di tingkat B1 ditentukan.
    • App Service → Mewakili aplikasi Anda dan berjalan dalam paket App Service.
    • Jaringan virtual → Terintegrasi dengan aplikasi App Service dan mengisolasi lalu lintas jaringan back-end.
    • Server fleksibel Azure Database for PostgreSQL → Hanya dapat diakses dari dalam jaringan virtual. Database dan pengguna dibuat untuk Anda di server.
    • Zona DNS privat → Memungkinkan resolusi DNS server PostgreSQL di jaringan virtual.
    • Ruang kerja Analitik Log → Bertindak sebagai kontainer target bagi aplikasi Anda untuk mengirimkan lognya, di mana Anda juga dapat mengkueri log.
  5. azd up Saat perintah selesai, catat nilai untuk ID Langganan (Guid), App Service, dan Grup Sumber Daya dalam output. Anda akan menggunakannya di bagian berikut. Output Anda akan terlihat mirip dengan output (parsial) berikut:

    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. Periksa database string koneksi

Templat azd menghasilkan variabel konektivitas untuk Anda sebagai pengaturan aplikasi. Pengaturan aplikasi adalah salah satu cara untuk menjaga rahasia koneksi keluar dari repositori kode Anda.

  1. Dalam file infra/resources.bicep, temukan pengaturan aplikasi dan temukan pengaturan untuk 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'
      }
    }
    
  2. AZURE_POSTGRESQL_CONNECTIONSTRING berisi string koneksi ke database Postgres di Azure. Anda perlu menggunakannya dalam kode Anda untuk menyambungkannya. Anda dapat menemukan kode yang menggunakan variabel lingkungan ini di 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. Periksa perintah startup

Azure App Service memerlukan perintah startup untuk menjalankan aplikasi FastAPI Anda. Templat azd mengatur perintah ini untuk Anda di instans App Service Anda.

  1. Dalam file infra/resources.bicep, temukan deklarasi untuk situs web Anda lalu temukan pengaturan untuk appCommandLine. Ini adalah pengaturan untuk perintah startup Anda.

    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'
      }
    
  2. Perintah startup menjalankan file src/entrypoint.sh. Periksa kode dalam file tersebut untuk memahami perintah yang dijalankan App Service untuk memulai aplikasi Anda:

    #!/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
    

Untuk mempelajari selengkapnya tentang konfigurasi dan startup aplikasi di App Service, lihat Mengonfigurasi aplikasi Linux Python untuk Azure App Service.

4. Hasilkan skema database

Anda mungkin telah memperhatikan di bagian sebelumnya bahwa entrypoint.sh berisi baris berikut: python3 src/fastapi_app/seed_data.py. Perintah ini memigrasikan database Anda. Di aplikasi sampel, ini hanya memastikan bahwa tabel yang benar dibuat di database Anda. Ini tidak mengisi tabel ini dengan data apa pun.

Di bagian ini, Anda akan menjalankan perintah ini secara manual untuk tujuan demonstrasi. Dengan database PostgreSQL yang dilindungi oleh jaringan virtual, cara term mudah untuk menjalankan perintah adalah dalam sesi SSH dengan kontainer App Service.

  1. Gunakan nilai App Service yang Anda catat sebelumnya dalam output azd untuk membuat URL untuk sesi SSH dan menavigasinya di browser:

  2. Di terminal SSH, jalankan python3 src/fastapi_app/seed_data.py. Jika berhasil, App Service berhasil tersambung ke database.

    Cuplikan layar yang menunjukkan perintah untuk dijalankan di shell SSH dan outputnya (FastAPI).

    Catatan

    Hanya perubahan pada file di /home yang dapat bertahan di luar mulai ulang aplikasi. Perubahan di luar /home tidak dipertahankan.

5. Telusuri aplikasi

  1. Dalam output azd, temukan URL aplikasi Anda dan navigasikan ke url tersebut di browser. URL terlihat seperti ini dalam output AZD:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: <URL>
     
  2. Tambahkan beberapa restoran ke daftar.

    Cuplikan layar aplikasi web FastAPI dengan PostgreSQL berjalan di Azure memperlihatkan ulasan restoran dan restoran (FastAPI).

    Selamat, Anda menjalankan aplikasi web di Azure App Service, dengan konektivitas yang aman ke Azure Database for PostgreSQL.

6. Mengalirkan log diagnostik

Azure App Service dapat mengambil log untuk membantu Anda mendiagnosis masalah dengan aplikasi Anda. Untuk kenyamanan, templat azd telah mengaktifkan pengelogan ke sistem file lokal.

Aplikasi sampel menggunakan modul pengelogan Pustaka Standar Python untuk log output. Aplikasi sampel mencakup panggilan ke pencatat seperti yang ditunjukkan di bawah ini.

@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)
    )

Untuk mengakses aliran log, buka aplikasi Anda di portal Microsoft Azure. Pilih Pemantauan>Aliran Log.

Peristiwa dapat memakan waktu beberapa menit untuk muncul di log diagnostik. Pelajari selengkapnya tentang pengelogan di aplikasi Python dalam seri tentang menyiapkan Azure Monitor untuk aplikasi Python Anda.

7. Membersihkan sumber daya

Untuk menghapus semua sumber daya Azure di lingkungan penyebaran saat ini, jalankan azd down.

azd down

Pemecahan Masalah

Tercantum di bawah ini adalah masalah yang mungkin Anda temui saat mencoba bekerja melalui tutorial ini dan langkah-langkah untuk mengatasinya.

Saya tidak dapat tersambung ke sesi SSH

Jika Anda tidak dapat terhubung ke sesi SSH, aplikasi itu sendiri telah gagal dimulai. Periksa log diagnostik untuk detailnya. Misalnya, jika Anda melihat kesalahan seperti KeyError: 'AZURE_POSTGRESQL_CONNECTIONSTRING', itu mungkin berarti bahwa variabel lingkungan hilang (Anda mungkin telah menghapus pengaturan aplikasi).

Saya mendapatkan kesalahan saat menjalankan migrasi database

Jika Anda mengalami kesalahan yang terkait dengan menyambungkan ke database, periksa apakah pengaturan aplikasi (AZURE_POSTGRESQL_CONNECTIONSTRING) telah diubah. Tanpa string koneksi itu, perintah migrasi tidak dapat berkomunikasi dengan database.

Tanya jawab umum

Berapa biaya untuk penyiapan ini?

Harga untuk sumber daya yang dibuat adalah sebagai berikut:

  • Paket App Service dibuat di tingkat Dasar dan dapat ditingkatkan atau diturunkan skalanya. Lihat Harga App Service.
  • Server fleksibel PostgreSQL dibuat dalam tingkat burstable terendah Standard_B1ms, dengan ukuran penyimpanan minimum, yang dapat ditingkatkan atau diturunkan skalanya. Lihat Harga Azure Database for PostgreSQL.
  • Jaringan virtual tidak dikenakan biaya kecuali Anda mengonfigurasi fungsionalitas tambahan, seperti peering. Lihat Harga Azure Virtual Network.
  • Zona DNS privat dikenakan biaya kecil. Lihat Harga Azure DNS.

Bagaimana cara menyambungkan ke server PostgreSQL yang diamankan di belakang jaringan virtual dengan alat lain?

  • Untuk akses dasar dari alat baris perintah, Anda dapat menjalankan psql dari terminal SSH aplikasi.
  • Untuk terhubung dari alat desktop, komputer Anda harus berada dalam jaringan virtual. Misalnya, itu bisa menjadi Azure VM yang terhubung ke salah satu subnet, atau komputer di jaringan lokal yang memiliki koneksi VPN situs-ke-situs dengan jaringan virtual Azure.
  • Anda juga dapat mengintegrasikan Azure Cloud Shell dengan jaringan virtual.

Bagaimana cara kerja pengembangan aplikasi lokal dengan GitHub Actions?

Menggunakan sebuah file alur kerja yang dibuat secara otomatis dari App Service sebagai contoh, masing-masing git push memulai proses build dan pengiriman baru. Dari klon lokal repositori GitHub, Anda membuat pembaruan yang diinginkan dan mengunggahnya ke GitHub. Contohnya:

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

Langkah berikutnya

Lanjutkan ke tutorial berikutnya untuk mempelajari cara mengamankan aplikasi Anda dengan domain dan sertifikat kustom.

Pelajari cara Azure App Service menjalankan aplikasi Python: