Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве вы развернёте основанное на данных веб-приложение на Python (Flask) в службе Azure App Service с использованием сервиса реляционной базы данных Azure Database for PostgreSQL. Служба приложений Azure поддерживает Python в среде сервера Linux. Если вы хотите, ознакомьтесь с руководством по Django или учебником FastAPI .
В этом учебнике вы узнаете, как:
- Создайте архитектуру изначально безопасной службы приложений, PostgreSQL и кеша Redis.
- Обеспечьте безопасность секретов подключения, используя управляемую идентификацию и ссылки на Key Vault.
- Разверните образец Python-приложения в службе приложений из репозитория GitHub.
- Доступ к Служба приложений строка подключения и параметрам приложения в коде приложения.
- Внесите обновления и заново разверните код приложения.
- Генерируйте схему базы данных, запуская миграции базы данных.
- Транслируйте диагностические журналы из Azure.
- Управляйте приложением в Azure-портале.
- Подготовьте ту же архитектуру и разверните её с помощью Azure Developer CLI.
- Оптимизируйте ваш процесс разработки с помощью GitHub Codespaces и GitHub Copilot.
Предпосылки
- Учетная запись Azure с активной подпиской. Если у вас нет учетной записи Azure, ее можно создать бесплатно.
- аккаунт GitHub. Вы также можете получить его бесплатно.
- Знание Python с разработкой на Flask.
- (Необязательно) Чтобы попробовать GitHub Copilot, необходима учетная запись GitHub Copilot. Доступна 30-дневная бесплатная пробная версия.
- Учетная запись Azure с активной подпиской. Если у вас нет учетной записи Azure, ее можно создать бесплатно.
- аккаунт GitHub. Вы также можете получить его бесплатно.
- Установлен интерфейс командной строки разработчика Azure. Вы можете следовать шагам в Azure Cloud Shell, так как в нем уже установлен Azure Developer CLI.
- Знание Python с разработкой на Flask.
- (Необязательно) Чтобы попробовать GitHub Copilot, необходима учетная запись GitHub Copilot. Доступна 30-дневная бесплатная пробная версия.
Перейти к концу
Если вы просто хотите просмотреть пример приложения в этом руководстве, работающем в Azure, просто выполните следующие команды в Azure Cloud Shell и следуйте указаниям:
mkdir msdocs-flask-postgresql-sample-app
cd msdocs-flask-postgresql-sample-app
azd init --template msdocs-flask-postgresql-sample-app
azd up
1. Запустите пример
Сначала вы создаете пример приложения, основанного на данных, как отправную точку. Для удобства пример репозитория включает конфигурацию контейнера разработки . Dev-контейнер содержит всё необходимое для разработки приложения, включая базу данных, кэш и все переменные окружения, необходимые для примера приложения. Контейнер разработки может выполняться в пространстве кода GitHub, что означает, что вы можете запустить пример на любом компьютере с веб-браузером.
Примечание
Если вы используете это руководство вместе с вашим приложением, ознакомьтесь с описанием файла requirements.txt в README.md , чтобы узнать, какие пакеты потребуются.
Шаг 1. В новом окне браузера:
- Войдите в свой аккаунт GitHub.
- Перейти к https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app/fork.
- Снимите выбор Копировать только основную ветку. Вы хотите все ветки.
- Выберите "Создать форк".
Шаг 2. В GitHub fork:
- Выберите main>starter-no-infra для начальной ветви. Этот ветвь содержит только пример проекта и без файлов или конфигурации, связанных с Azure.
- Выберите пространство кода> код" на начальном экране без инфраструктуры.
Кодовое пространство настраивается в течение нескольких минут, и в конце оно запускает
pip install -r requirements.txt
для вашего репозитория.
Шаг 3: В терминале кодового пространства:
- Выполните миграции базы данных с
flask db upgrade
. - Запустите приложение с
flask run
. - Когда появится уведомление
Your application running on port 5000 is available.
, нажмите кнопку "Открыть в браузере". Вы должны увидеть пример приложения в новой вкладке браузера. Чтобы остановить приложение, введитеCtrl
+C
.
Подсказка
Вы можете попросить GitHub Copilot об этом репозитории. Рассмотрим пример.
- @workspace Что делает этот проект?
- @workspace Что делает папка devcontainer?
Есть проблемы? Ознакомьтесь с разделом "Устранение неполадок".
2. Создайте службу приложений и PostgreSQL
На этом этапе вы создаёте ресурсы Azure. Шаги, использованные в этом руководстве, создают набор защищённых по умолчанию ресурсов, включая App Service и базу данных Azure для PostgreSQL. Для процесса создания вы указываете:
- Название для веб-приложения. Он используется в качестве части DNS-имени приложения.
- Регион, в котором приложение будет физически работать в мире. Он также используется как часть DNS-имени вашего приложения.
- Стек среды выполнения для приложения. Здесь вы выбираете версию Python для использования в вашем приложении.
- План размещения для приложения. Это уровень цен, который включает набор функций и возможности масштабирования для вашего приложения.
- Группа ресурсов для приложения. Группа ресурсов позволяет вам сгруппировать (в логический контейнер) все ресурсы Azure, необходимые для приложения.
Войдите на портал Azure и выполните следующие действия, чтобы создать ресурсы Службы приложений Azure.
Шаг 1. На портале Azure:
- Введите "web app database" в строку поиска в верхней части портала Azure.
- Выберите элемент, помеченный веб-приложением и базой данных в заголовке Marketplace . Вы также можете перейти непосредственно к мастеру создания.
Шаг 2. На странице "Создание веб-приложения + база данных " заполните форму следующим образом.
- Группа ресурсов: выберите "Создать" и используйте имя msdocs-flask-postgres-tutorial.
- Регион: любой регион Azure рядом с вами.
- Имя: msdocs-python-postgres-XYZ.
- Стек среды выполнения: Python 3.12.
- База данных: PostgreSQL — гибкий сервер по умолчанию выбирается в качестве ядра СУБД. Имя сервера и имя базы данных также устанавливаются по умолчанию на соответствующие значения.
- Добавление кэша Azure для Redis?: нет.
- План размещения: базовый. Когда вы будете готовы, вы можете перейти на производственную ценовую категорию.
- Выберите "Рецензирование и создание".
- После завершения проверки нажмите кнопку "Создать".
Шаг 3. Развертывание занимает несколько минут. После завершения развертывания нажмите кнопку "Перейти к ресурсу ". Вы сразу попадаете в приложение App Service, но при этом создаются следующие ресурсы:
- Группа ресурсов: контейнер для всех созданных ресурсов.
- План службы приложений: определяет вычислительные ресурсы для службы приложений. Создается план Linux на уровне "Базовый ".
- App Service: представляет ваше приложение и запускается в плане App Service.
- Виртуальная сеть: интегрирована с приложением службы приложений и изолирует внутренний сетевой трафик.
- Сетевые интерфейсы: представляет частные IP-адреса, по одному для каждой из частных конечных точек.
- Гибкий сервер Базы данных Azure для PostgreSQL: доступен только из виртуальной сети. На сервере создаются база данных и пользователь для вас.
- Частные зоны DNS: обеспечивает разрешение DNS для хранилища ключей и сервера базы данных в виртуальной сети.
3. Безопасное подключение секретов
Мастер создания создал переменные подключения для вас уже в качестве параметров приложения. Тем не менее, лучшей практикой безопасности является полностью исключить хранящиеся секреты из App Service. Вы переместите учетные данные в хранилище ключей и измените параметры приложения на ссылки Хранилища ключей с помощью сервисных коннекторов.
Шаг 1. Получение существующей строки подключения
- В левом меню страницы "Служба приложений" выберите Параметры > Переменные среды.
- Выберите AZURE_POSTGRESQL_CONNECTIONSTRING.
- В разделе "Добавление и изменение параметра приложения" в поле "Значение " найдите часть password= в конце строки.
- Скопируйте строку пароля после password= для последующего использования. Этот параметр приложения позволяет подключаться к базе данных Postgres, защищенной за частной конечной точкой. Однако секрет сохраняется непосредственно в приложении службы приложений, что не является лучшим вариантом. Вы измените это.
Шаг 2. Создание хранилища ключей для безопасного управления секретами
- В верхней строке поиска введите "хранилище ключей", а затем выберите Marketplace>Key Vault.
- В группе ресурсов выберите msdocs-python-postgres-tutorial.
- В имени хранилища ключей введите имя, состоящее только из букв и чисел.
- В регионе задайте для него то же расположение, что и группа ресурсов.
Шаг 3. Защита хранилища ключей с помощью частной конечной точки
- Выберите вкладку "Сеть".
- Отмена выбора включения общедоступного доступа.
- Выберите "Создать частную конечную точку".
- В группе ресурсов выберите msdocs-python-postgres-tutorial.
- В диалоговом окне в расположении выберите то же расположение, что и приложение службы приложений.
- В поле Name введите msdocs-python-postgres-XYZVaultEndpoint.
- В виртуальной сети выберите msdocs-python-postgres-XYZVnet.
- В подсетиmsdocs-python-postgres-XYZSubnet.
- Нажмите кнопку "ОК".
- Выберите "Просмотр и создание", а затем нажмите кнопку "Создать". Дождитесь завершения развертывания хранилища ключей. Вы должны увидеть "Ваше развертывание завершено."
Шаг 4. Настройка соединителя PostgreSQL
- В верхней строке поиска введите msdocs-python-postgres, а затем выберите ресурс службы приложений msdocs-python-postgres-XYZ.
- На странице "Служба приложений" в меню слева выберите "Параметры > соединителя службы". Уже есть разъём, который мастер создания приложения создал для вас.
- Установите флажок рядом с соединителем PostgreSQL, а затем нажмите кнопку "Изменить".
- В типе клиента выберите Django. Несмотря на то что у вас есть приложение Flask, клиент Django в соединителе службы PostgreSQL предоставляет переменные базы данных в отдельных параметрах вместо одной строки подключения. Отдельные переменные проще использовать в коде приложения, который использует SQLAlchemy для подключения к базе данных.
- Перейдите на вкладку "Проверка подлинности ".
- Вставьте пароль, скопированный ранее.
- Выберите "Сохранить секрет" в Key Vault.
- В разделе "Подключение к Key Vault" выберите "Создать". Диалоговое окно «Создание соединения» открыто поверх окна редактирования.
Шаг 5. Установка подключения к Key Vault
- В диалоговом окне "Создание подключения" для подключения Key Vault в Key Vault выберите созданное ранее хранилище ключей.
- Выберите "Рецензирование и создание".
- После завершения проверки нажмите кнопку "Создать".
Шаг 6. Завершение параметров соединителя PostgreSQL
- Вы вернулись в диалоговое окно редактирования для defaultConnector. На вкладке «Аутентификация» дождитесь создания соединителя хранилища ключей. По завершении раскрывающийся список подключения Key Vault автоматически выбирает его.
- Нажмите кнопку "Далее" — сеть.
- Нажмите кнопку "Сохранить". Подождите, пока появится уведомление об успешном обновлении .
Шаг 7. Проверка интеграции Key Vault
- В меню слева снова выберите Параметры > Переменные среды.
- Рядом с AZURE_POSTGRESQL_PASSWORD выберите "Показать значение". Значение должно быть
@Microsoft.KeyVault(...)
. Это означает, что это ссылка на хранилище ключей , так как секрет теперь управляется в хранилище ключей.
Вкратце, процесс защиты ваших секретов подключения включал:
- Извлечение секретов подключения из переменных окружения приложения App Service.
- Создание хранилища ключей.
- Создание подключения к хранилищу ключей с использованием управляемой идентичности, назначенной системой.
- Обновление подключений сервиса для хранения секретов в хранилище ключей.
Есть проблемы? Ознакомьтесь с разделом "Устранение неполадок".
4. Развернуть пример кода
На этом шаге вы настроите развертывание GitHub с помощью GitHub Actions. Это всего лишь один из многих способов развертывания на App Service, но также отличный способ обеспечить непрерывную интеграцию в вашем процессе развертывания. По умолчанию каждый git push
из репозитория GitHub запускает действие сборки и развертывания.
Шаг 1. В меню слева выберитеЦентр развертывания>.
Шаг 2. На странице Центра развертывания:
- В источнике выберите GitHub. По умолчанию GitHub Actions выбирается в качестве поставщика сборки.
- Войдите в свой аккаунт GitHub и следуйте указаниям, чтобы авторизовать Azure.
- В организации выберите свою учетную запись.
- В репозитории выберите msdocs-flask-postgresql-sample-app.
- В Branch выберите starter-no-infra. Это та же ветка, в которой вы работали с вашим примером приложения, без файлов или конфигураций, связанных с Azure.
- Для типа проверки подлинности выберите удостоверение, назначаемое пользователем.
- В верхнем меню нажмите кнопку "Сохранить".
Служба приложений помещает файл рабочего процесса в выбранный репозиторий GitHub, в каталог
.github/workflows
. По умолчанию центр развертывания создаёт пользовательскую назначенную идентичность для рабочего процесса, чтобы аутентифицироваться с помощью Microsoft Entra (аутентификация OIDC). Дополнительные сведения о вариантах проверки подлинности см. в разделе "Развертывание в службе приложений" с помощью GitHub Actions.
Шаг 3. Вернитесь в пространство кода GitHub вашего форка, выполните команду git pull origin starter-no-infra
.
Это перемещает новый зафиксированный файл рабочего процесса в ваше пространство кода.
Шаг 4 (вариант 1: с GitHub Copilot):
- Запустите новый сеанс чата, выбрав представление чата , а затем выберите +.
- Спросите: "@workspace Как приложение подключается к базе данных?". Copilot может дать вам некоторое описание
SQLAlchemy
настройки URI подключения в azureproject/development.py и azureproject/production.py. - Спросите: "@workspace В рабочем режиме мое приложение работает в веб-приложении службы приложений, которое использует соединитель службы Azure для подключения к гибкому серверу PostgreSQL с помощью типа клиента Django. Что такое имена переменных среды, которые мне нужно использовать? Copilot может дать вам предложение кода, аналогичное варианту 2: без действий GitHub Copilot ниже и даже сообщить вам, чтобы внести изменения в файл azureproject/production.py .
- Откройте azureproject/production.py в обозревателе и добавьте предложение кода. GitHub Copilot не дает одинаковый ответ каждый раз и не всегда правильный. Вам, возможно, потребуется задать больше вопросов, чтобы уточнить его ответ. Советы см. в статье "Что можно сделать с помощью GitHub Copilot в моем пространстве кода?".
Шаг 4 (вариант 2: без GitHub Copilot):
- Откройте Program.cs в обозревателе.
- Найдите закомментированный код (строки 3–8) и раскомментируйте его.
Это создает строку подключения для SQLAlchemy с использованием
AZURE_POSTGRESQL_USER
,AZURE_POSTGRESQL_PASSWORD
,AZURE_POSTGRESQL_HOST
иAZURE_POSTGRESQL_NAME
.
Шаг 5.
- Выберите расширение Контроль версий.
- В текстовом поле введите сообщение о фиксации, похожее на
Configure Azure database connection
. Или выберитеи позвольте GitHub Copilot сгенерировать для вас сообщение коммита.
- Нажмите кнопку "Зафиксировать", а затем подтвердите значение "Да".
- Нажмите кнопку "Синхронизировать изменения 1", а затем нажмите кнопку "ОК".
Шаг 6. Вернитесь на страницу Центра развертывания на портале Azure:
- Перейдите на вкладку "Журналы" , а затем нажмите кнопку "Обновить ", чтобы увидеть новое выполнение развертывания.
- В элементе журнала для запуска развертывания выберите запись «Журналы сборки и развертывания» с последней меткой времени.
Шаг 7. Вы перейдете в репозиторий GitHub и увидите, что действие GitHub выполняется. Файл рабочего процесса определяет два отдельных этапа: сборка и развертывание. Дождитесь, пока запуск GitHub не покажет статус успешно. Это занимает около 5 минут.
Есть проблемы? Ознакомьтесь с руководством по устранению неполадок.
5. Генерация схемы базы данных
С помощью базы данных PostgreSQL, защищенной виртуальной сетью, проще всего запустить миграцию базы данных Flask в сеансе SSH с контейнером Linux в службе приложений.
Шаг 1. Вернитесь на страницу службы приложений в меню слева.
- Выберите Средства разработки>SSH.
- Нажмите кнопку "Перейти".
Шаг 2. В сеансе SSH выполните команду flask db upgrade
. Если это удается, служба приложений успешно подключается к базе данных.
Подсказка
В SSH-сессии только изменения в файлах в /home
могут сохраняться после перезапуска приложения. Изменения вне /home
не сохраняются.
Есть проблемы? Ознакомьтесь с разделом "Устранение неполадок".
6. Перейдите к приложению
Шаг 1. На странице службы приложений:
- В меню слева выберите "Обзор".
- Выберите URL-адрес вашего приложения.
Шаг 2. Добавьте несколько ресторанов в список. Поздравляем, вы запускаете веб-приложение в службе приложение Azure с безопасным подключением к База данных Azure для PostgreSQL.
7. Транслируйте диагностические журналы
Служба Azure App Service фиксирует все журналы консоли, чтобы помочь вам диагностировать проблемы с вашим приложением. Примерное приложение включает операторы print()
, чтобы продемонстрировать эту возможность, как показано ниже.
@app.route('/', methods=['GET'])
def index():
print('Request for index page received')
restaurants = Restaurant.query.all()
return render_template('index.html', restaurants=restaurants)
Шаг 1. На странице службы приложений:
- В меню слева выберите Мониторинг>Журналы службы приложений.
- В разделе "Ведение журнала приложений" выберите файловую систему.
- В верхнем меню нажмите кнопку "Сохранить".
Шаг 2. В меню слева выберите поток журналов. Вы видите журналы для вашего приложения, включая журналы платформы и журналы из контейнера.
Узнайте больше о логгировании в Python-приложениях в серии статей о настройке Azure Monitor для вашего приложения на Python.
8. Очистите ресурсы
Когда вы закончите, вы можете удалить все ресурсы из вашей подписки Azure, удалив группу ресурсов.
Шаг 1. В строке поиска в верхней части портала Azure:
- Введите имя группы ресурсов.
- Выберите группу ресурсов.
Шаг 2. На странице группы ресурсов выберите "Удалить группу ресурсов".
Шаг 3.
- Введите имя группы ресурсов, чтобы подтвердить удаление.
- Нажмите кнопку "Удалить".
- Подтвердите удаление еще раз.
2. Создание ресурсов Azure и развертывание примера приложения
На этом этапе вы создаете ресурсы Azure и размещаете образец приложения в службе приложений на Linux. Шаги, использованные в этом руководстве, создают набор защищённых по умолчанию ресурсов, включая App Service и базу данных Azure для PostgreSQL.
Контейнер разработки уже имеет интерфейс командной строки разработчика Azure (AZD).
Выполните команду
azd init
из корневого каталога репозитория.azd init --template python-app-service-postgresql-infra
При появлении запроса укажите следующие ответы:
Вопрос Ответ Текущая директория не пуста. Хотите инициализировать проект здесь, в '<your-directory>'? Y Что вы хотите сделать с этими файлами? Сохранение существующих файлов без изменений Введите новое имя окружения Введите уникальное имя. Шаблон AZD использует это имя как часть имени DNS вашего веб-приложения в Azure ( <app-name>-<hash>.azurewebsites.net
). Допустимы буквенно-цифровые символы и дефисы.Войдите в Azure, выполнив команду
azd auth login
и следуя инструкциям:azd auth login
Создайте необходимые ресурсы Azure с помощью команды
azd provision
. Выполните указания, чтобы выбрать нужную подписку и местоположение для ресурсов Azure.azd provision
Команде
azd provision
требуется около 15 минут для завершения (больше всего времени занимает кэш Redis). Позже вы измените ваш код, чтобы он работал с App Service, и примените изменения с помощьюazd deploy
. Когда команда выполняется, она предоставляет сообщения о процессе подготовки и развертывания, включая ссылку на развертывание в Azure.Этот шаблон AZD содержит файлы (azure.yaml и каталог infra), создающие защищенную по умолчанию архитектуру со следующими ресурсами Azure:
- Группа ресурсов: контейнер для всех созданных ресурсов.
- План службы приложений: определяет вычислительные ресурсы для службы приложений. Создается план Linux на уровне "Базовый ".
- App Service: представляет ваше приложение и запускается в плане App Service.
- Виртуальная сеть: интегрирована с приложением службы приложений и изолирует внутренний сетевой трафик.
- Частные конечные точки: доступ к конечным точкам для хранилища ключей и кэша Redis в виртуальной сети.
- Сетевые интерфейсы: представляет частные IP-адреса, по одному для каждой из частных конечных точек.
- Гибкий сервер Базы данных Azure для PostgreSQL: доступен только из виртуальной сети. На сервере создаются база данных и пользователь для вас.
- Частная зона DNS: включает разрешение DNS сервера PostgreSQL в виртуальной сети.
- Рабочая область Log Analytics: выступает в качестве целевого контейнера для вашего приложения для отправки журналов, где можно также запрашивать журналы.
- Кэш Azure для Redis: доступен только через приватную конечную точку.
- Хранилище ключей: доступно только из своей частной конечной точки. Используется для управления секретами в приложении App Service.
После того как команда завершит создание ресурсов и впервые развернет код приложения, развернутое образец приложение еще не работает, так как необходимо внести небольшие изменения, чтобы подключиться к базе данных в Azure.
Есть проблемы? Ознакомьтесь с разделом "Устранение неполадок".
3. Использование строки подключения к базе данных
Шаблон AZD, который вы используете, уже создал переменные подключения в виде настроек приложения и выводит их в терминал для вашего удобства. Настройки приложения — это один из способов уберечь секреты подключения от попадания в ваш репозиторий кода.
Во выводе AZD найдите настройки
AZURE_POSTGRESQL_USER
,AZURE_POSTGRESQL_PASSWORD
,AZURE_POSTGRESQL_HOST
иAZURE_POSTGRESQL_NAME
. Чтобы сохранить секреты в безопасности, отображаются только названия настроек. Они выглядят так на выходе AZD.App Service app has the following connection settings: - AZURE_POSTGRESQL_NAME - AZURE_POSTGRESQL_HOST - AZURE_POSTGRESQL_USER - AZURE_POSTGRESQL_PASSWORD - AZURE_REDIS_CONNECTIONSTRING - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPE
Для вашего удобства шаблон AZD показывает вам прямую ссылку на страницу настроек приложения. Найдите ссылку и откройте ее в новой вкладке браузера.
Есть проблемы? Ознакомьтесь с разделом "Устранение неполадок".
4. Измените образец кода и перезапустите.
В пространстве кода GitHub запустите новый сеанс чата, выбрав представление чата , а затем выберите +.
Спросите: "@workspace Как приложение подключается к базе данных?". Copilot может дать вам некоторое описание
SQLAlchemy
настройки URI подключения в azureproject/development.py и azureproject/production.py.Спросите: "@workspace В рабочем режиме мое приложение работает в веб-приложении службы приложений, которое использует соединитель службы Azure для подключения к гибкому серверу PostgreSQL с помощью типа клиента Django. Что такое имена переменных среды, которые мне нужно использовать? Copilot может дать вам предложение кода, аналогичное варианту 2: без действий GitHub Copilot ниже и даже сообщить вам, чтобы внести изменения в файл azureproject/production.py .
Откройте azureproject/production.py в обозревателе и добавьте предложение кода.
GitHub Copilot не дает одинаковый ответ каждый раз и не всегда правильный. Вам, возможно, потребуется задать больше вопросов, чтобы уточнить его ответ. Советы см. в статье "Что можно сделать с помощью GitHub Copilot в моем пространстве кода?".
В терминале выполните
azd deploy
.azd deploy
Есть проблемы? Ознакомьтесь с разделом "Устранение неполадок".
5. Генерация схемы базы данных
С помощью базы данных PostgreSQL, защищенной виртуальной сетью, проще всего запустить миграцию базы данных Flask в сеансе SSH с контейнером Linux в службе приложений.
В выводе AZD найдите URL для SSH-сессии и перейдите к нему в браузере. Это выглядит так на выходе:
Open SSH session to App Service container at: <URL>
В SSH-сессии выполните команду
flask db upgrade
. Если это удается, служба приложений успешно подключается к базе данных.Примечание
Только изменения файлов в
/home
могут сохраняться после перезапуска приложения. Изменения вне/home
не сохраняются.
Есть проблемы? Ознакомьтесь с разделом "Устранение неполадок".
6. Перейдите к приложению
В выводе AZD найдите URL вашего приложения и откройте его в браузере. URL выглядит следующим образом в выводе AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <URL>
Добавьте несколько ресторанов в список.
Поздравляем, вы запускаете веб-приложение в службе приложение Azure с безопасным подключением к База данных Azure для PostgreSQL.
Есть проблемы? Ознакомьтесь с разделом "Устранение неполадок".
7. Транслируйте диагностические журналы
Служба приложений Azure может записывать журналы консоли, чтобы помочь вам в диагностике проблем с вашим приложением. Для удобства шаблон AZD уже включает запись журналов в локальную файловую систему и пересылает журналы в рабочую область Log Analytics.
Образец приложения включает операторы print()
, чтобы продемонстрировать эту возможность, как показано в следующем фрагменте.
@app.route('/', methods=['GET'])
def index():
print('Request for index page received')
restaurants = Restaurant.query.all()
return render_template('index.html', restaurants=restaurants)
В выводе AZD найдите ссылку для потоковой передачи журналов службы приложений и перейдите по ней в браузере.
Узнайте больше о логгировании в Python-приложениях в серии статей о настройке Azure Monitor для вашего приложения на Python.
Есть проблемы? Ознакомьтесь с разделом "Устранение неполадок".
8. Очистите ресурсы
Чтобы удалить все ресурсы Azure в текущей среде развертывания, выполните azd down
и следуйте инструкциям.
azd down
Устранение неполадок
Ниже перечислены проблемы, с которыми вы можете столкнуться при работе с этим учебным пособием, и шаги по их решению.
Я не могу подключиться к SSH-сессии.
Если вы не можете подключиться к сеансу SSH, значит, само приложение не удалось запустить. Дополнительные сведения см. в журналах диагностики . Например, если вы видите ошибку, KeyError: 'AZURE_POSTGRESQL_HOST'
это может означать, что переменная среды отсутствует (возможно, вы удалили параметр приложения).
У меня возникает ошибка при запуске миграций базы данных.
Если вы столкнётесь с ошибками, связанными с подключением к базе данных, проверьте, были ли изменены или удалены настройки приложения (AZURE_POSTGRESQL_USER
, AZURE_POSTGRESQL_PASSWORD
, AZURE_POSTGRESQL_HOST
, и AZURE_POSTGRESQL_NAME
). Без этой строки подключения команда миграции не может взаимодействовать с базой данных.
Часто задаваемые вопросы
- Сколько стоит эта настройка?
- Как подключиться к серверу PostgreSQL, который защищён в виртуальной сети с помощью других инструментов?
- Как разработка локальных приложений работает с GitHub Actions?
- Как выполнить отладку ошибок во время развертывания GitHub Actions?
- У меня нет разрешений на создание удостоверения, назначаемого пользователем
- Что можно сделать с помощью GitHub Copilot в моем пространстве кода?
Сколько стоит этот набор?
Цены на созданные ресурсы следующие:
- План службы приложений создается на уровне "Базовый" и может масштабироваться вверх или вниз. См. цены на службу приложений.
- Гибкий сервер PostgreSQL создается на самом низком уровне, Standard_B1ms с минимальным размером хранилища, который можно масштабировать вверх или вниз. См. цены на Базу данных Azure для PostgreSQL.
- Виртуальная сеть не требует оплаты, если вы не настроите дополнительные функции, такие как пиринг. См. цены на виртуальную сеть Azure.
- Частная зона DNS предполагает небольшую плату. См. цены на Azure DNS.
Как мне подключиться к серверу PostgreSQL, который защищён за виртуальной сетью, с помощью других инструментов?
- Для базового доступа из командной строки вы можете запустить
psql
из SSH-сеанса приложения. - Чтобы подключиться с помощью настольного инструмента, ваш компьютер должен находиться в виртуальной сети. Например, это может быть виртуальная машина Azure, подключенная к одной из подсетей, или компьютер в локальной сети с VPN-подключением типа "сеть — сеть " с виртуальной сетью Azure.
- Вы также можете интегрировать Azure Cloud Shell с виртуальной сетью.
Как местная разработка приложений работает с GitHub Actions?
Используя сгенерированный автоматически файл рабочего процесса из App Service в качестве примера, каждый git push
запускает новый процесс сборки и развёртывания. Из локального клона репозитория GitHub вы делаете необходимые обновления и отправляете их на GitHub. Рассмотрим пример.
git add .
git commit -m "<some-message>"
git push origin main
Как отлаживать ошибки во время развертывания с помощью GitHub Actions?
Если какой-либо шаг завершится ошибкой в автоматически сгенерированном файле рабочего процесса GitHub, попробуйте изменить неудачную команду, чтобы получить более подробный вывод. Например, вы можете получить больше данных от команды python
, добавив опцию -d
. Закоммитьте и отправьте свои изменения, чтобы инициировать очередное развертывание на App Service.
У меня нет разрешений для создания идентификатора, назначенного пользователем.
См. Настройка развертывания GitHub Actions в Центре развертывания.
Что я могу сделать с GitHub Copilot в своем рабочем пространстве?
Возможно, вы заметили, что вид чата GitHub Copilot уже был доступен для вас, когда вы создавали пространство разработки. Для удобства мы добавим расширение чата GitHub Copilot в определение контейнера (см. статью .devcontainer/devcontainer.json). Однако вам нужна учетная запись GitHub Copilot (доступна бесплатная пробная версия 30 дней).
Несколько советов для вас, когда вы разговариваете с GitHub Copilot:
- В одном сеансе чата вопросы и ответы основаны друг на друге, и вы можете корректировать свои вопросы, чтобы уточнить ответ, который вы получаете.
- По умолчанию GitHub Copilot не имеет доступа к каким-либо файлам в вашем репозитории. Чтобы задать вопросы о файле, сначала откройте его в редакторе.
- Чтобы GitHub Copilot имел доступ ко всем файлам в репозитории при подготовке своих ответов, начните свой вопрос с
@workspace
. Для получения дополнительной информации, см. Use the @workspace agent. - В чате GitHub Copilot может предложить изменения и даже указать, где их следует внести (с помощью
@workspace
), но ему не разрешается делать изменения за вас. Решать вам, добавлять ли предлагаемые изменения и тестировать их.
Следующие шаги
Перейдите к следующему учебнику, чтобы узнать, как защитить ваше приложение с помощью пользовательского домена и сертификата.
Узнайте, как служба приложений запускает приложение Python.