Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве вы развернете веб-приложение Python на основе данных в Службе приложений Azure с помощью службы реляционной базы данных Azure для PostgreSQL . Служба приложений Azure поддерживает Python в среде сервера Linux. В этой статье используется приложение Flask . К альтернативным вариантам относятся 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
Запустите пример
В качестве отправной точки настройте пример приложения на основе данных. Для удобства пример репозитория включает конфигурацию контейнера разработки . Контейнер разработки имеет все необходимое для разработки приложения. Он включает базу данных, кэш и все переменные среды, необходимые образцу приложения. Контейнер разработки может выполняться в пространстве кода 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?
Есть проблемы? Ознакомьтесь с разделом "Устранение неполадок".
Создание службы приложений и PostgreSQL
В этом разделе описано, как создать ресурсы Azure. В этом руководстве создается набор безопасных ресурсов по умолчанию, включающих службу приложений и базу данных Azure для PostgreSQL. Для процесса создания вы указываете:
- Название для веб-приложения. Он используется в качестве части DNS-имени приложения.
- Регион, в котором приложение будет физически работать в мире. Это также часть DNS-имени приложения.
- Стек среды выполнения для приложения. Версия Python, используемая для приложения.
- План размещения для приложения. Ценовая категория, которая включает набор функций и емкость масштабирования для приложения.
- Группа ресурсов для приложения. Группа ресурсов позволяет группировать ресурсы Azure для приложения в логическом контейнере.
Войдите на портал Azure и выполните следующие действия, чтобы создать ресурсы Службы приложений Azure.
Шаг 1. На портале Azure:
- В верхней части портала Azure введите базу данных веб-приложения в строке поиска.
- В разделе заголовка Marketplace выберите элемент, помеченный веб-приложением и базой данных. Вы также можете перейти к созданию веб-приложения напрямую.
Шаг 2. На странице "Создание веб-приложения + база данных " заполните форму следующим образом.
- Группа ресурсов: выберите "Создать" и используйте имя msdocs-flask-postgres-tutorial.
- Регион: любой регион Azure рядом с вами.
- Имя: msdocs-python-postgres-XYZ.
- Стек среды выполнения: Python 3.14.
- База данных: PostgreSQL — гибкий сервер по умолчанию выбирается в качестве ядра СУБД. Имя сервера и имя базы данных также устанавливаются по умолчанию на соответствующие значения.
- Добавление кэша Azure для Redis?: нет.
- План размещения: базовый. Когда вы будете готовы, вы можете перейти на производственную ценовую категорию.
- Выберите "Рецензирование и создание".
- После завершения проверки нажмите кнопку "Создать".
Шаг 3. Развертывание занимает несколько минут. После завершения развертывания выберите Перейти к ресурсу. Развертывание создает следующие ресурсы:
- Группа ресурсов: контейнер для всех созданных ресурсов.
- План службы приложений: определяет вычислительные ресурсы для службы приложений. Развертывание создает план Linux на уровне "Базовый".
- App Service: представляет ваше приложение и запускается в плане App Service.
- Виртуальная сеть: интегрирована с приложением службы приложений и изолирует внутренний сетевой трафик.
- Сетевые интерфейсы: представляет частные IP-адреса, по одному для каждой из частных конечных точек.
- Гибкий сервер Базы данных Azure для PostgreSQL: доступен только из виртуальной сети. На сервере создаются база данных и пользователь для вас.
- Частные зоны DNS: обеспечивает разрешение DNS для хранилища ключей и сервера базы данных в виртуальной сети.
Секреты безопасного подключения
Процесс развертывания создает переменные подключения для вас в качестве параметров приложения. Рекомендуется ради безопасности полностью исключить хранение секретов в службе приложений. Переместите секреты в хранилище ключей и измените параметры приложения на ссылки на Key Vault с помощью коннекторов служб.
Шаг 1. Получите существующую строку подключения:
- В меню слева на странице "Служба приложений" выберите Параметры>переменные среды.
- Выберите AZURE_POSTGRESQL_CONNECTIONSTRING.
- В поле "Добавление и изменение приложения" в поле "Значение " найдите пароль= в конце строки.
- Скопируйте строку пароля после пароля= для последующего использования. Этот параметр приложения позволяет подключаться к базе данных 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.
- Создание хранилища ключей.
- Создание подключения к хранилищу ключей с использованием управляемой идентичности, назначенной системой.
- Обновление подключений сервиса для хранения секретов в хранилище ключей.
Есть проблемы? Ознакомьтесь с разделом "Устранение неполадок".
Развертывание примера кода
В этом разделе описана настройка развертывания 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 В рабочем режиме мое приложение работает в веб-приложении App Service, которое использует Azure Service Connector для подключения к гибкому серверу PostgreSQL с использованием клиента Django. Какие имена переменных окружения мне нужно использовать? Copilot может напомнить вам о варианте кода, аналогичном 2: без использования GitHub Copilot, и даже подсказать, что изменения необходимо внести в файл azureproject/production.py.
- Откройте azureproject/production.py в обозревателе и добавьте предложение кода. GitHub Copilot не дает вам одинаковый ответ каждый раз. Ответы не всегда верны. Вам, возможно, потребуется задать больше вопросов, чтобы уточнить его ответ. Советы см. в статье "Что можно сделать с помощью GitHub Copilot в моем пространстве кода?
Шаг 4 (вариант 2: без GitHub Copilot):
- Откройте azureproject/production.py в обозревателе.
- Найдите закомментированный код (строки 3–8) и раскомментируйте его.
Это изменение создает строку подключения для SQLAlchemy с помощью
AZURE_POSTGRESQL_USER,AZURE_POSTGRESQL_PASSWORDAZURE_POSTGRESQL_HOSTиAZURE_POSTGRESQL_NAME.
Шаг 5.
- Выберите расширение Контроль версий.
- В текстовом поле введите сообщение о фиксации, похожее на
Configure Azure database connection. Или выберите
и позвольте GitHub Copilot сгенерировать для вас сообщение коммита. - Нажмите кнопку "Зафиксировать", а затем подтвердите значение "Да".
- Нажмите кнопку "Синхронизировать изменения 1", а затем нажмите кнопку "ОК".
Шаг 6. Вернитесь на страницу Центра развертывания на портале Azure:
- Выберите журналы, а затем нажмите кнопку "Обновить ", чтобы увидеть новое выполнение развертывания.
- В элементе журнала для запуска развертывания выберите запись «Журналы сборки и развертывания» с последней меткой времени.
Шаг 7. Вы перейдете в репозиторий GitHub. Действие GitHub выполняется. Файл рабочего процесса определяет два отдельных этапа, сборку и развертывание. Дождитесь, пока запуск GitHub не покажет статус успешно. Это занимает около 5 минут.
Есть проблемы? Ознакомьтесь с руководством по устранению неполадок.
Создание схемы базы данных
С помощью базы данных PostgreSQL, защищенной виртуальной сетью, проще всего запустить миграцию базы данных Flask в сеансе SSH с контейнером Linux в службе приложений.
Шаг 1. Вернитесь на страницу службы приложений в меню слева.
- Выберите Средства разработки>SSH.
- Нажмите кнопку "Перейти".
Шаг 2. В сеансе SSH выполните команду flask db upgrade. Если это удается, служба приложений успешно подключается к базе данных.
Подсказка
В SSH-сессии только изменения в файлах в /home могут сохраняться после перезапуска приложения. Изменения вне /home не сохраняются.
Есть проблемы? Ознакомьтесь с разделом "Устранение неполадок".
Переход в приложение
Шаг 1. На странице службы приложений :
- В меню слева выберите "Обзор".
- Выберите URL-адрес вашего приложения.
Шаг 2. Добавьте несколько ресторанов в список. Поздравляем, вы запускаете веб-приложение в службе приложение Azure с безопасным подключением к База данных Azure для PostgreSQL.
Трансляция журналов диагностики
Служба 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".
Очистите ресурсы
Когда вы закончите, вы можете удалить все ресурсы из вашей подписки Azure, удалив группу ресурсов.
Шаг 1. В строке поиска в верхней части портала Azure:
- Введите имя группы ресурсов.
- Выберите группу ресурсов.
Шаг 2. На странице группы ресурсов выберите "Удалить группу ресурсов".
Шаг 3.
- Чтобы подтвердить удаление, введите имя группы ресурсов.
- Нажмите кнопку "Удалить".
- Подтвердите удаление еще раз.
Создание ресурсов 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 занимает больше всего времени. Позже измените код для работы со Службой приложений и разверните изменения с помощью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, необходимо внести небольшие изменения.
Есть проблемы? Ознакомьтесь с разделом "Устранение неполадок".
Использование строки подключения к базе данных
Шаблон 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 показывает вам прямую ссылку на страницу настроек приложения. Найдите ссылку и откройте ее в новой вкладке браузера.
Есть проблемы? Ознакомьтесь с разделом "Устранение неполадок".
Изменение примера кода и повторное развертывание
В пространстве кода GitHub запустите новый сеанс чата, выбрав представление чата , а затем выберите +.
Спросите, @workspace Как приложение подключается к базе данных? Copilot может дать вам некоторое объяснение
SQLAlchemy, например о том, как настроен URI подключения в azureproject/development.py и azureproject/production.py.Спросите, @workspace В режиме производства мое приложение работает в веб-приложении App Service, которое использует Azure Service Connector для подключения к гибкому серверу PostgreSQL с использованием типа клиента Django. Какие названия переменных окружения мне нужно использовать? Copilot может предложить вам код, похожий на вариант 2: без шагов GitHub Copilot и даже порекомендовать внести изменения в файл azureproject/production.py.
Откройте azureproject/production.py в обозревателе и добавьте предложение кода.
GitHub Copilot не дает вам одинаковый ответ каждый раз. Ответы не всегда верны. Вам, возможно, потребуется задать больше вопросов, чтобы уточнить его ответ. Советы см. в статье "Что можно сделать с помощью GitHub Copilot в моем пространстве кода?".
В терминале выполните
azd deploy.azd deploy
Есть проблемы? Ознакомьтесь с разделом "Устранение неполадок".
Создание схемы базы данных
С помощью базы данных PostgreSQL, защищенной виртуальной сетью, проще всего запустить миграцию базы данных Flask в сеансе SSH с контейнером Linux в службе приложений.
В выводе AZD найдите URL для SSH-сессии и перейдите к нему в браузере. Это выглядит так на выходе:
Open SSH session to App Service container at: <URL>В SSH-сессии выполните команду
flask db upgrade. Если это удается, служба приложений успешно подключается к базе данных.Примечание
Только изменения файлов в
/homeмогут сохраняться после перезапуска приложения. Изменения вне/homeне сохраняются.
Есть проблемы? Ознакомьтесь с разделом "Устранение неполадок".
Переход в приложение
В выводе AZD найдите URL вашего приложения и откройте его в браузере. URL выглядит следующим образом в выводе AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <URL>Добавьте несколько ресторанов в список.
Поздравляю! Вы запускаете веб-приложение в Службе приложений Azure с безопасным подключением к Базе данных Azure для PostgreSQL.
Есть проблемы? Ознакомьтесь с разделом "Устранение неполадок".
Трансляция журналов диагностики
Служба приложений 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.
Есть проблемы? Ознакомьтесь с разделом "Устранение неполадок".
Очистите ресурсы
Чтобы удалить все ресурсы 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.