Поделиться через


Развертывание веб-приложения Python FastAPI с помощью PostgreSQL в Azure

В этом руководстве вы развернете веб-приложение Python на основе данных (FastAPI) в службе приложение Azure с помощью службы реляционной базы данных База данных Azure для PostgreSQL. поддержка службы приложение AzurePython в среде сервера Linux. Если вы хотите, ознакомьтесь с учебником Flask или руководством по Django.

Схема архитектуры, на которой показана Служба приложений с базой данных PostgreSQL в Azure.

Чтобы завершить работу с этим руководством, вам потребуется:

  • Учетная запись Azure с активной подпиской. Если у вас нет учетной записи Azure, ее можно создать бесплатно.
  • Знание Python с помощью разработки FastAPI

Перейти к концу

С установленным интерфейсом командной строки разработчика Azure можно перейти к концу руководства, выполнив следующие команды в пустом рабочем каталоге:

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

Пример приложения

Пример приложения Python с помощью платформы FastAPI предоставляется, чтобы помочь вам следовать вместе с этим руководством. Чтобы развернуть его без локального запуска, пропустите эту часть.

Чтобы запустить приложение локально, убедитесь, что на локальном компьютере установлен Python 3.8 или более поздней версии и PostgreSQL . Затем клонируйте ветвь примера репозитория starter-no-infra и перейдите в корневой каталог репозитория.

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

Создайте файл .env, как показано ниже, используя файл .env.sample в качестве руководства. Настройте для параметра DBNAME имя существующей базы данных в локальном экземпляре PostgreSQL. Задайте значения DBHOST, DBUSER и DBPASS в соответствии с настройками локального экземпляра PostgreSQL.

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

Создайте виртуальную среду для приложения:

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

Установка зависимостей:

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

Установите приложение в виде редактируемого пакета:

python3 -m pip install -e src

Запустите пример приложения со следующими командами:

# 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. Создание Служба приложений и PostgreSQL

В этом шаге вы создадите ресурсы Azure. Действия, используемые в этом руководстве, создают набор безопасных ресурсов по умолчанию, включающих Служба приложений и База данных Azure для PostgreSQL. Для процесса создания укажите:

  • Имя веб-приложения. Это имя используется в составе DNS-имени вашего веб-приложения в виде https://<app-name>.azurewebsites.net.
  • Регион для физического запуска приложения.
  • Стек среды выполнения для приложения. Здесь вы выбираете версию Python, используемую для вашего приложения.
  • План размещения для приложения. Это ценовая категория, которая включает набор функций и емкость масштабирования для вашего приложения.
  • Группа ресурсов для приложения. Группа ресурсов позволяет группировать (в логическом контейнере) все ресурсы Azure, необходимые для приложения.

Войдите на портал Azure и выполните следующие действия, чтобы создать ресурсы Службы приложений Azure.

Шаг 1. В портал Azure:

  1. Введите "веб-приложение база данных" в строке поиска в верхней части портала Azure.
  2. Выберите элемент с меткой Веб-приложение и база данных под заголовком Marketplace. Вы также можете перейти напрямую к мастеру создания.

Шаг 2. На странице "Создание веб-приложения + база данных " заполните форму следующим образом.

  1. Группа ресурсов → выбрать создать и использовать имя msdocs-python-postgres-tutorial.
  2. Регион → любой ближайший к вам регион Azure.
  3. Имяmsdocs-python-postgres-XYZ, где XYZ является тремя случайными символами. Это имя должно быть уникальным в Azure.
  4. Стек среды выполнения → Python 3.12.
  5. База данныхPostgreSQL — гибкий сервер по умолчанию выбирается в качестве ядра СУБД. Имя сервера и имя базы данных также задаются по умолчанию соответствующими значениями.
  6. План размещения — Базовый. Позже, когда все будет готово, вы сможете вертикально увеличить масштаб до рабочей ценовой категории.
  7. Выберите Review + create (Просмотреть и создать).
  8. После завершения проверки щелкните Создать.

Шаг 3. Развертывание занимает несколько минут. После завершения развертывания нажмите кнопку Перейти к ресурсу. Вы перейдете непосредственно в приложение Службы приложений, но будут созданы следующие ресурсы:

  • Группа ресурсов — Контейнер для всех созданных ресурсов.
  • План службы приложений — определяет вычислительные ресурсы для Службы приложений. Создается план Linux на уровне Базовый.
  • Служба приложений — представляет приложение и выполняется в плане службы приложений.
  • Виртуальная сеть — интегрирована с приложением Службы приложений и изолирует внутренний сетевой трафик.
  • База данных Azure для PostgreSQL гибкий сервер → доступен только из виртуальной сети. База данных и пользователь создаются на этом сервере.
  • Частная зона DNS зона → включает разрешение DNS сервера PostgreSQL в виртуальной сети.

Шаг 4. Для приложений FastAPI необходимо ввести команду запуска, чтобы служба приложений могли запустить приложение. На странице Служба приложений:

  1. В меню слева в разделе Параметры выберите Конфигурация.
  2. На вкладке "Общие параметры" на странице "Конфигурация" введите src/entrypoint.sh в поле "Команда запуска" в разделе "Параметры стека".
  3. Выберите Сохранить. При появлении запроса выберите Далее. Дополнительные сведения о настройке и запуске приложений в Служба приложений см. в статье "Настройка приложения Python Linux для службы приложение Azure".

2. Проверка параметров подключения

Мастер создания создал переменные подключения для вас уже в качестве параметров приложения. Параметры приложения — это один из способов сохранения секретов подключения из репозитория кода. Когда вы будете готовы переместить секреты в более безопасное расположение, ознакомьтесь со статьей по хранению в Azure Key Vault.

Шаг 1. На странице Служба приложений в меню слева выберите переменные среды.

Шаг 2. На вкладке "Параметры приложения" на странице переменных среды убедитесь, что AZURE_POSTGRESQL_CONNECTIONSTRINGон присутствует. Строка подключения будет внедрена в среду выполнения в качестве переменной среды.

3. Развертывание примера кода

На этом шаге вы настроите развертывание GitHub с помощью GitHub Actions. Это всего лишь один из множества способов развертывания в Службе приложений, но это также отличный способ обеспечения непрерывной интеграции в процессе развертывания. По умолчанию каждая команда git push из репозитория GitHub запускает действие сборки и развертывания.

Шаг 1. В новом окне браузера:

  1. Войдите в свою учетную запись GitHub.
  2. Перейдите к https://github.com/Azure-Samples/msdocs-fastapi-postgresql-sample-app.
  3. Выберите Создать вилку.
  4. Щелкните Создать вилку.

Шаг 2. На странице GitHub откройте Visual Studio Code в браузере, нажав клавишу . .

Шаг 3. В Visual Studio Code в браузере откройте src/fastapi/models.py в обозревателе. См. переменные среды, используемые в рабочей среде, включая параметры приложения, которые вы видели на странице конфигурации.

Шаг 4. Вернитесь на страницу Служба приложений в меню слева в разделе "Развертывание" выберите Центр развертывания.

Шаг 5. На странице Центра развертывания:

  1. В поле Источник выберите GitHub. По умолчанию в качестве поставщика сборки выбрано GitHub Actions.
  2. Войдите в свою учетную запись GitHub и следуйте инструкциям по авторизации Azure.
  3. В поле Организация выберите свою учетную запись.
  4. В репозитории выберите msdocs-fastapi-postgresql-sample-app.
  5. В поле Ветвь выберите main.
  6. Сохраните параметр по умолчанию, чтобы добавить рабочий процесс.
  7. В разделе " Тип проверки подлинности" выберите удостоверение, назначаемое пользователем.
  8. В меню сверху выберите Сохранить. Служба приложений фиксирует файл рабочего процесса в выбранном репозитории GitHub в каталоге .github/workflows.

Шаг 6. На странице Центра развертывания:

  1. Выберите Журналы. Прогон развертывания уже запущен.
  2. В элементе журнала для прогона развертывания выберите Журналы сборки и развертывания.

Шаг 7. Вы перейдете в репозиторий GitHub и увидите, что действие GitHub выполняется. Файл рабочего процесса определяет два отдельных этапа: сборку и развертывание. Дождитесь, пока в выполнении действия GitHub не будет показано состояние Завершено. Это занимает около 5 минут.

Возникли проблемы? Ознакомьтесь с руководством по устранению неполадок.

4. Создание схемы базы данных

В предыдущем разделе вы добавили src/entrypoint.sh в качестве команды запуска приложения. entrypoint.sh содержит следующую строку: python3 src/fastapi_app/seed_data.py Эта команда переносит базу данных. В примере приложения он гарантирует, что в базе данных создаются только правильные таблицы. Он не заполняет эти таблицы данными.

В этом разделе вы запустите эту команду вручную для демонстрационных целей. С базой данных PostgreSQL, защищенной виртуальной сетью, проще всего выполнить команду в сеансе SSH с контейнером Служба приложений.

Шаг 1. Назад на странице Служба приложений в меню слева

  1. Выберите SSH.
  2. Выберите Выполнить.

Шаг 2. В терминале SSH выполните команду python3 src/fastapi_app/seed_data.py. При успешном завершении Служба приложений успешно подключается к базе данных. После перезапуска приложения могут сохраняться только изменения в файлах в /home. Изменения за пределами /home не сохраняются.

5. Перейдите к приложению

Шаг 1. На странице Служба приложений:

  1. В меню слева выберите Обзор.
  2. Выберите URL-адрес своего приложения. Также можно перейти непосредственно по адресу https://<app-name>.azurewebsites.net.

Шаг 2. Добавьте в список несколько ресторанов. Поздравляем, вы запускаете веб-приложение в службе приложение Azure с безопасным подключением к База данных Azure для PostgreSQL.

6. Потоковая передача журналов диагностики

Пример приложения использует модуль ведения журнала стандартной библиотеки Python для диагностики проблем с приложением. Пример приложения включает вызовы средства ведения журнала, как показано в следующем коде.

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

Шаг 1. На странице Служба приложений:

  1. В меню слева в разделе "Мониторинг" выберите Служба приложений журналы.
  2. Под элементом Ведение журнала приложения выберите Файловая система.
  3. В меню сверху выберите Сохранить.

Шаг 2. В меню слева выберите поток журналов. Вы увидите журналы для своего приложения, включая журналы платформы и журналы из контейнера.

События могут занять несколько минут, чтобы отобразиться в журналах диагностики. Дополнительные сведения о ведении журнала в приложениях Python в серии о настройке Azure Monitor для приложения Python.

7. Очистка ресурсов

По завершении работы можно удалить все ресурсы из вашей подписки Azure, удалив соответствующую группу ресурсов.

Шаг 1. В строке поиска в верхней части портал Azure:

  1. Введите имя группы ресурсов.
  2. Выберите группу ресурсов.

Шаг 2. На странице группы ресурсов выберите "Удалить группу ресурсов".

Шаг 3.

  1. Введите имя группы ресурсов для подтверждения удаления.
  2. Выберите команду Удалить.

Снимок экрана: диалоговое окно подтверждения для удаления группы ресурсов на портале Azure. :

1. Создание ресурсов Azure и развертывание примера приложения

На этом шаге вы создадите ресурсы Azure и развернете пример приложения для Служба приложений в Linux. Действия, используемые в этом руководстве, создают набор безопасных ресурсов по умолчанию, включающих Служба приложений и База данных Azure для PostgreSQL.

  1. Если вы еще не сделали этого, клонируйте ветвь примера репозитория starter-no-infra в локальном терминале.

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

    Эта клонированная ветвь является отправной точкой. Он содержит простое приложение FastAPI для диска данных.

  2. Выполните команду azd initиз корневого каталога репозитория.

    azd init --template msdocs-fastapi-postgresql-sample-app
    
  3. При появлении запроса укажите следующие ответы:

    Вопрос Ответ
    Текущий каталог не пуст. Вы хотите инициализировать проект здесь в каталоге<>? Y
    Что вы хотите сделать с этими файлами? Сохранение существующих файлов без изменений
    Введите новое имя среды Введите уникальное имя. Шаблон azd использует это имя как часть DNS-имени веб-приложения в Azure (<app-name>.azurewebsites.net). Разрешены буквенно-цифровые символы и дефисы.
  4. azd up Выполните команду, чтобы подготовить необходимые ресурсы Azure и развернуть код приложения. Если вы еще не вошли в Azure, браузер запустит и попросит вас войти. Команда azd up также предложит выбрать нужную подписку и расположение для развертывания.

    azd up
    

    Выполнение azd up команды может занять несколько минут. Он также компилирует и развертывает код приложения. Во время выполнения команда предоставляет сообщения о процессе подготовки и развертывания, включая ссылку на развертывание в Azure. По завершении команда также отображает ссылку на приложение развертывания.

    Этот шаблон azd содержит файлы (azure.yaml и инфракрасный каталог), создающие безопасную архитектуру по умолчанию со следующими ресурсами Azure:

    • Группа ресурсов — Контейнер для всех созданных ресурсов.
    • План службы приложений — определяет вычислительные ресурсы для Службы приложений. Указан план Linux на уровне B1 .
    • Служба приложений — представляет приложение и выполняется в плане службы приложений.
    • Виртуальная сеть — интегрирована с приложением Службы приложений и изолирует внутренний сетевой трафик.
    • База данных Azure для PostgreSQL гибкий сервер → доступен только из виртуальной сети. База данных и пользователь создаются на этом сервере.
    • Частная зона DNS зона → включает разрешение DNS сервера PostgreSQL в виртуальной сети.
    • Рабочая область Log Analytics → выступает в качестве целевого контейнера для вашего приложения для отправки журналов, где можно также запросить журналы.
  5. azd up По завершении команды запишите значения идентификатора подписки (GUID), Служба приложений и группы ресурсов в выходных данных. Они используются в следующих разделах. Выходные данные будут выглядеть примерно так:

    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. Проверка строка подключения базы данных

Шаблон azd создает переменные подключения для вас в качестве параметров приложения. Параметры приложения — это один из способов сохранения секретов подключения из репозитория кода.

  1. infra/resources.bicep В файле найдите параметры приложения и найдите параметр для 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содержит строка подключения в базу данных Postgres в Azure. Его необходимо использовать в коде для подключения к нему. Код, использующий эту переменную среды, можно найти в 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. Проверка команды запуска

приложение Azure службе требуется команда запуска для запуска приложения FastAPI. Azd template задает эту команду в Служба приложений экземпляре.

  1. infra/resources.bicep В файле найдите объявление для веб-сайта, а затем найдите параметрappCommandLine. Это параметр команды запуска.

    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. Команда запуска запускает файл src/entrypoint.sh. Изучите код в этом файле, чтобы понять команды, которые Служба приложений запуска приложения:

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

Дополнительные сведения о настройке и запуске приложений в Служба приложений см. в статье "Настройка приложения Python Linux для службы приложение Azure".

4. Создание схемы базы данных

Возможно, вы заметили в предыдущем разделе, что entrypoint.sh содержит следующую строку: python3 src/fastapi_app/seed_data.py Эта команда переносит базу данных. В примере приложения он гарантирует, что в базе данных создаются только правильные таблицы. Он не заполняет эти таблицы данными.

В этом разделе вы запустите эту команду вручную для демонстрационных целей. С базой данных PostgreSQL, защищенной виртуальной сетью, проще всего выполнить команду в сеансе SSH с контейнером Служба приложений.

  1. Используйте значение Служба приложений, которое вы указали ранее в выходных данных azd и шаблоне ниже, чтобы создать URL-адрес сеанса SSH и перейти к нему в браузере:

    https://<app-name>.scm.azurewebsites.net/webssh/host
    
  2. В терминале SSH выполните команду python3 src/fastapi_app/seed_data.py. При успешном завершении Служба приложений успешно подключается к базе данных.

    Снимок экрана: команды для выполнения в оболочке SSH и их выходных данных (FastAPI).

    Примечание.

    После перезапуска приложения могут сохраняться только изменения в файлах в /home. Изменения за пределами /home не сохраняются.

5. Перейдите к приложению

  1. В выходных данных azd найдите URL-адрес приложения и перейдите к нему в браузере. URL-адрес выглядит следующим образом в выходных данных AZD:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: https://<app-name>.azurewebsites.net/
     
  2. Добавьте несколько ресторанов в список.

    Снимок экрана веб-приложения FastAPI с PostgreSQL, работающим в Azure, где показаны рестораны и отзывы о ресторанах (FastAPI).

    Поздравляем, вы запускаете веб-приложение в службе приложение Azure с безопасным подключением к База данных Azure для PostgreSQL.

6. Потоковая передача журналов диагностики

служба приложение Azure может записывать журналы для диагностики проблем с приложением. Для удобства шаблон azd уже включил ведение журнала в локальной файловой системе.

В примере приложения для вывода журналов используется модуль ведения журнала стандартной библиотеки Python. Пример приложения включает вызовы средства ведения журнала, как показано ниже.

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

Используйте значения идентификатора подписки (GUID), группы ресурсов и Служба приложений, которые вы указали ранее в выходных данных azd и шаблоне, показанном ниже, для создания URL-адреса для потоковой передачи журналов Служба приложений и перехода к нему в браузере.

https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream

События могут занять несколько минут, чтобы отобразиться в журналах диагностики. Дополнительные сведения о ведении журнала в приложениях Python в серии о настройке Azure Monitor для приложения Python.

7. Очистка ресурсов

Чтобы удалить все ресурсы Azure в текущей среде развертывания, выполните команду azd down.

azd down

Устранение неполадок

Ниже приведены проблемы, которые могут возникнуть при попытке работы с этим руководством и инструкциями по их устранению.

Не удается подключиться к сеансу SSH

Если вы не можете подключиться к сеансу SSH, само приложение не удалось запустить. Дополнительные сведения см. в журналах диагностики . Например, если вы видите ошибку, KeyError: 'AZURE_POSTGRESQL_CONNECTIONSTRING'это может означать, что переменная среды отсутствует (возможно, вы удалили параметр приложения).

При выполнении миграции базы данных возникает ошибка

Если возникают какие-либо ошибки, связанные с подключением к базе данных, проверьте, были ли изменены параметры приложения (AZURE_POSTGRESQL_CONNECTIONSTRING). Без этого строка подключения команда миграции не может взаимодействовать с базой данных.

Часто задаваемые вопросы

Сколько стоит такая конфигурация?

Цены на созданные ресурсы приведены следующим образом:

  • План службы приложений создается на уровне Базовый, и его можно масштабировать вверх или вниз. См. цены на Службу приложений.
  • Гибкий сервер PostgreSQL создается на самом низком уровне с максимальным объемом памяти Standard_B1ms с минимальным размером хранилища, который можно масштабировать вверх или вниз. Цены на Базу данных Azure для PostgreSQL.
  • Плата за виртуальную сеть не взимается, если только вы не настроите дополнительные функциональные возможности, такие как пиринг. См. цены на виртуальные сети Azure.
  • За частную зону DNS взимается небольшая плата. См. цены на Azure DNS.

Разделы справки подключиться к серверу PostgreSQL, защищенному за виртуальной сетью с другими средствами?

  • Для базового доступа из программы командной строки можно запустить psql из терминала SSH приложения.
  • Чтобы подключиться из классического средства, компьютер должен находиться в виртуальной сети. Например, это может быть виртуальная машина Azure, подключенная к одной из подсетей, или компьютер в локальной сети с VPN-подключением типа "сеть — сеть" к виртуальной сети Azure.
  • Вы также можете интегрировать Azure Cloud Shell с виртуальной сетью.

Как осуществляется разработка локальных приложений с использованием GitHub Actions?

Используя автоматически созданный файл рабочего процесса из Служба приложений в качестве примера, каждый git push запускает новую сборку и развертывание. Из локального клона репозитория GitHub необходимо внести необходимые обновления и отправить их в GitHub. Например:

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

Следующие шаги

Перейдите к следующему руководству, чтобы узнать, как защитить приложение с помощью личного домена и сертификата.

Узнайте, как Служба приложений запускает приложение Python: