이 문서에서는 Python web 앱 개발하여 Azure 배포하도록 로컬 환경을 설정하는 방법을 보여 줍니다. 웹앱은 순수 Python 또는 Django, Flask 또는 FastAPI 같은 일반적인 Python 기반 웹 프레임워크 중 하나를 사용할 수 있습니다.
Azure App Service, Azure Container Apps 또는 Azure Static Web Apps 같은 서비스에 로컬로 개발된 Python 웹앱을 배포할 수 있습니다. 배포에는 많은 옵션이 있습니다. 예를 들어 App Service 배포의 경우 코드, Docker 컨테이너 또는 정적 웹앱에서 배포하도록 선택할 수 있습니다. 코드에서 배포하는 경우 Visual Studio Code, Azure CLI, 로컬 Git 리포지토리 또는 GitHub 작업을 사용하여 배포할 수 있습니다. Docker 컨테이너에 배포하는 경우 Azure Container Registry, Docker Hub 또는 프라이빗 레지스트리에서 배포할 수 있습니다.
이 문서를 계속 진행하기 전에 개발 환경 설정에서 Python 및 Azure 개발 환경을 설정하는 방법에 대한 지침을 참조하세요. 다음 섹션에서는 Python 웹앱 개발과 관련된 설정 및 구성에 대해 설명합니다.
Python 웹앱 개발을 위해 로컬 환경을 설정한 후에는 다음 문서를 처리할 준비가 된 것입니다.
- Quickstart: Azure App Service Python(Django 또는 Flask) 웹앱을 만듭니다.
Tutorial: Azure - 시스템 할당된 관리 ID를 사용하여 Flask 웹앱을 Azure에 만들고 배포하기
Visual Studio Code 사용하기
Visual Studio Code IDE(통합 개발 환경)는 Python 웹앱을 개발하고 웹앱에서 사용하는 Azure 리소스를 쉽게 사용할 수 있는 방법입니다.
팁
Python 확장을 설치해야 합니다. VS Code에서 Python 작업에 대한 개요는 VS Code에서 Python 시작 참조하세요.
VS Code에서는 VS 코드 확장 통해 Azure 리소스로 작업합니다. 확장 보기에서 또는 키 조합 Ctrl+Shift+X를 사용하여 확장을 설치할 수 있습니다. Python 웹앱의 경우 다음 확장 중 하나 이상을 사용할 수 있습니다.
Azure App Service 확장을 사용하면 Visual Studio Code 내에서 Azure App Service 상호 작용할 수 있습니다. App Service는 웹 사이트 및 웹 API를 비롯한 웹 애플리케이션에 대해 완전히 관리되는 호스팅을 제공합니다.
Azure Static Web Apps 확장을 사용하면 VS Code에서 직접 Azure Static Web Apps 만들 수 있습니다. Static Web Apps 서버리스이며 정적 콘텐츠 호스팅에 적합합니다.
컨테이너 작업을 계획하는 경우 다음을 설치합니다.
Docker 확장 프로그램으로 컨테이너를 로컬로 빌드하고 작업할 수 있습니다. 예를 들어 컨테이너용 Web Apps을 사용하여 Azure App Service 컨테이너화된 Python 웹앱을 실행할 수 있습니다.
Visual Studio Code 직접 컨테이너화된 앱을 만들고 배포하는 Azure Container Apps 확장입니다.
다른 확장에는 Azure Storage, Azure 데이터베이스 및 Azure 리소스 확장이 포함됩니다. 필요에 따라 항상 이러한 확장 및 기타 확장을 추가할 수 있습니다.
일반적인 IDE 인터페이스에서 예상한 대로 Visual Studio Code 확장에 액세스할 수 있습니다. VS Code 명령 팔레트를 사용하여 다양한 키워드 지원을 사용할 수 있습니다. 명령 팔레트에 액세스하려면 키 조합 Ctrl+Shift+P를 사용합니다. 명령 팔레트는 Azure 리소스에서 수행할 수 있는 모든 가능한 작업을 확인하는 좋은 방법입니다. 다음 스크린샷은 App Service에 대한 몇 가지 작업을 보여 줍니다.
Visual Studio Code에서 Dev Containers 사용하기
Python 개발자는 종종 가상 환경에 의존하여 특정 프로젝트에 대해 격리되고 자체 포함된 환경을 만듭니다. 가상 환경을 사용하면 개발자가 각 프로젝트에 대해 종속성, 패키지 및 Python 버전을 개별적으로 관리할 수 있으므로 다른 패키지 버전이 필요할 수 있는 여러 프로젝트 간의 충돌을 방지할 수 있습니다.
Python virtualenv 또는 venv 같은 환경을 관리하는 데 사용할 수 있는 인기 있는 옵션이 있습니다. Visual Studio Code Dev Container 확장(오펜스 개발 컨테이너 사양 기준)을 사용하면 Docker 컨테이너를 완전한 기능을 갖춘 컨테이너화된 환경으로 사용할 수 있습니다. 이를 통해 개발자는 모든 필수 도구, 종속성 및 미리 구성된 확장으로 일관되고 쉽게 재현할 수 있는 도구 체인을 정의할 수 있습니다. 즉, 시스템 요구 사항, 셸 구성 또는 다른 언어를 완전히 사용하는 경우 Dev Container를 사용하여 기본 Python 환경 외부에 있을 수 있는 프로젝트의 모든 부분을 명시적으로 구성할 수 있습니다.
예를 들어 개발자는 프로젝트 데이터베이스 및 샘플 데이터, Redis 서버, Nginx, 프런트 엔드 코드, React와 같은 클라이언트 라이브러리 등과 함께 PostgreSQL 데이터베이스 서버를 포함하여 프로젝트에서 작업하는 데 필요한 모든 것을 포함하도록 단일 Dev Container를 구성할 수 있습니다. 또한 컨테이너에는 프로젝트 코드, Python 런타임 및 올바른 버전이 있는 모든 Python 프로젝트 종속성이 포함되었습니다. 마지막으로 컨테이너는 전체 팀에서 동일한 도구를 사용할 수 있도록 설치할 Visual Studio Code 확장을 지정할 수 있습니다. 따라서 새 개발자가 팀에 합류하면 도구, 종속성 및 데이터를 비롯한 전체 환경이 로컬 컴퓨터에 복제할 준비가 되어 있으며 즉시 작업을 시작할 수 있습니다.
Visual Studio 2022에서 작업하기
Visual Studio 2022는 Python 애플리케이션 개발을 지원하고 Azure 리소스에 액세스하고 배포할 수 있는 많은 기본 제공 도구 및 확장을 지원하는 완전한 기능을 갖춘 IDE(통합 개발 환경)입니다. Azure Python 웹앱을 빌드하기 위한 대부분의 설명서는 Visual Studio Code 사용에 중점을 두고 있지만, Visual Studio 2022는 이미 설치되어 있고, 사용이 편하고, .NET 또는 C++ 프로젝트에 사용하는 경우 유용한 옵션입니다.
일반적으로 Visual Studio | Python 설명서를 참조하여 Visual Studio 2022에서 Python을 사용하는 것과 관련된 모든 설명서를 확인할 수 있습니다.
설치 단계는
Visual Studio를 참조하세요. 이 단계에서는 Python 워크로드를 Visual Studio 2022에 설치하는 단계를 안내합니다. 웹 개발에 Python 사용하는 일반적인 워크플로는 Quickstart: Visual Studio 사용하여 첫 번째 Python 웹앱 만들기를 참조하세요. 이 문서는 처음부터 Python 웹 애플리케이션을 빌드하는 방법을 이해하는 데 유용하지만 Azure 배포는 포함하지 않습니다.
Visual Studio 2022를 사용하여 Azure 리소스를 관리하고 Azure 배포하려면
Azure Visual Studio 참조하세요. 이 설명서의 대부분은 .NET 구체적으로 언급하지만, Azure 리소스를 관리하고 Azure 배포하는 도구는 프로그래밍 언어에 관계없이 동일하게 작동합니다. Visual Studio 2022에서 지정된 Azure 관리 또는 배포 작업에 사용할 수 있는 기본 제공 도구가 없는 경우 항상 Azure CLI 명령 사용할 수 있습니다.
다른 IDE와 함께 작업하기
Azure 명시적으로 지원하지 않는 다른 IDE에서 작업하는 경우 Azure CLI 사용하여 Azure 리소스를 관리합니다. 다음 스크린샷에서는 PyCharm IDE에서 간단한 Flask 웹앱이 열립니다.
az webapp up 명령을 사용하여 웹앱을 Azure App Service 배포할 수 있습니다. 스크린샷에서 CLI 명령은 PyCharm 포함된 터미널 에뮬레이터 내에서 실행됩니다. IDE에 포함된 에뮬레이터가 없는 경우 터미널과 동일한 명령을 사용할 수 있습니다. Azure CLI 컴퓨터에 설치해야 하며 두 경우 모두 액세스할 수 있어야 합니다.
Azure CLI 명령
Azure CLI 명령을 사용하여 웹앱에서 로컬로 작업하는 경우 일반적으로 다음 명령을 사용합니다.
| 명령 | 묘사 |
|---|---|
| az webapp | 웹앱을 관리합니다. 웹앱을 만들거나 로컬 작업 영역에서 만들어 배포할 수 있는 create 및 up 하위 명령어가 포함됩니다. |
| az container app | Azure Container Apps 관리합니다. |
| az staticwebapp | Azure Static Web Apps 관리합니다. |
| az group | 리소스 그룹 및 템플릿 배포를 관리합니다. 하위 명령 create 사용하여 Azure 리소스를 배치할 리소스 그룹을 만듭니다. |
| az appservice | App Service 계획을 관리합니다. |
| az config | Azure CLI 구성을 관리합니다. 키 입력을 저장하려면 다른 명령에서 자동으로 사용하는 기본 위치 또는 리소스 그룹을 정의할 수 있습니다. |
다음은 웹앱 및 관련 리소스를 만들고 az webapp up 사용하여 한 명령으로 Azure 배포하는 Azure CLI 명령의 예입니다. 웹앱의 루트 디렉터리에서 명령을 실행합니다.
az webapp up \
--runtime PYTHON:3.9 \
--sku B1 \
--logs
이 예제에 대한 자세한 내용은 Quickstart: Azure App Service Python(Django 또는 Flask) 웹앱 배포를 참조하세요.
일부 Azure 워크플로의 경우 Azure Cloud Shell에서 Azure CLI를 사용할 수도 있다는 점을 기억하세요. Azure Cloud Shell Azure 리소스를 관리하기 위한 대화형 인증 브라우저 액세스 가능 셸입니다.
Azure SDK 키 패키지
Python 웹앱에서는 Python
다음 표에서는 웹앱 개발에 일반적으로 사용되는 일부 패키지를 나열합니다. 를 사용하여 pip가상 환경에 패키지를 직접 설치할 수 있습니다. 또는 Python PyPI(패키지 인덱스) 이름을 requirements.txt 파일에 넣습니다.
| SDK 문서 | 설치하다 | 패키지 인덱스 Python |
|---|---|---|
| Azure ID | pip install azure-identity |
azure-identity |
| Azure Storage Blobs | pip install azure-storage-blob |
azure-storage-blob |
| Azure Cosmos DB | pip install azure-cosmos |
azure-cosmos |
| Azure Key Vault 시크릿 | pip install azure-keyvault-secrets |
azure-keyvault-secrets |
azure-identity 패키지를 사용하면 웹앱이 Microsoft Entra ID 인증할 수 있습니다. 웹앱 코드에서 인증하려면 패키지에서 DefaultAzureCredential 을 azure-identity 사용합니다. 다음 예제에서는 Azure Storage 액세스하는 방법을 보여줍니다. 패턴은 다른 Azure 리소스와 유사합니다.
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
azure_credential = DefaultAzureCredential()
blob_service_client = BlobServiceClient(
account_url=account_url,
credential=azure_credential)
DefaultAzureCredential 환경 변수 또는 Azure CLI 로그인과 같은 계정 정보를 미리 정의된 위치에서 찾습니다.
DefaultAzureCredential 논리에 대한 자세한 정보는 Azure SDK for Python을 사용하여 Python 앱을 Azure 서비스에 인증하기 문서를 참조하세요.
Python 기반 웹 프레임워크
Python 웹앱 개발에서는 종종 Python 기반 웹 프레임워크로 작업합니다. 이러한 프레임워크는 페이지 템플릿, 세션 관리, 데이터베이스 액세스와 같은 기능을 제공하며 HTTP 요청 및 응답 개체에 쉽게 액세스할 수 있습니다. 프레임워크를 사용하면 일반적인 기능을 위해 휠을 다시 만드는 것을 방지할 수 있습니다.
세 가지 일반적인 Python 웹 프레임워크는 Django, Flask 및 FastAPI입니다. 이러한 웹 프레임워크 및 기타 웹 프레임워크를 Azure 사용할 수 있습니다.
다음 예제에서는 이러한 프레임워크를 로컬로 빠르게 시작하는 방법을 보여 줍니다. 이러한 명령을 실행하면 Azure 배포할 수 있는 간단한 애플리케이션이 됩니다. 가상 환경 내에서 이러한 명령을 실행합니다.
1단계:pip를 사용하여 프레임워크를 다운로드합니다.
2단계: hello world 앱을 만듭니다.
django-admin startproject 명령을 사용하여 샘플 프로젝트를 만듭니다. 프로젝트에는 앱을 실행하기 위한 진입점 역할을 하는 manage.py 파일이 포함되어 있습니다.
django-admin startproject hello_world
3단계: 코드를 로컬로 실행합니다.
4단계: hello world 앱을 찾아봅니다.
이 시점에서 requirements.txt 파일을 추가합니다. 그런 다음, 웹앱을 Azure에 배포하거나 Docker를 사용하여 컨테이너화한 후 배포합니다.
다음 단계
- Quickstart: Azure App Service Python(Django 또는 Flask) 웹앱을 만듭니다.
Tutorial: Azure - 시스템 할당된 관리 ID를 사용하여 Flask 웹앱을 Azure에 만들고 배포하기