다음을 통해 공유


5부: 주 앱 종속성, 가져오기 문 및 환경 변수

이전 부분: 기본 앱 구현

이 섹션에서는 기본 애플리케이션에서 가져온 Python 라이브러리 및 기본 애플리케이션이 사용하는 환경 변수를 검토합니다. 앱이 Azure에 배포되면 이러한 환경 변수는 Azure App Service의 애플리케이션 설정을 통해 제공됩니다.

종속성 및 가져오기 문장

애플리케이션은 다음 라이브러리를 사용합니다.

  • Flask – 웹 API 정의
  • requests – 아웃바운드 API 호출을 수행하기 위한 표준 Python HTTP 클라이언트
  • azure.identity – Microsoft Entra ID 토큰 기반 인증 처리
  • azure.keyvault.secrets – Azure Key Vault에서 비밀을 안전하게 검색합니다.
  • azure.storage.queue – Azure Queue Storage와 상호 작용

이러한 종속성은 앱의 requirements.txt 파일에 포함되며 배포 또는 로컬 설치 중에 설치됩니다.

flask
requests
azure.identity
azure.keyvault.secrets
azure.storage.queue

Azure App Service에 앱을 배포하면 Azure는 호스트 서버에 이러한 요구 사항을 자동으로 설치합니다. 로컬로 실행할 때 pip install -r requirements.txt사용하여 환경에 설치합니다.

코드 파일은 코드에 사용되는 라이브러리 부분에 필요한 import 문으로 시작합니다.

from flask import Flask, request, jsonify
import requests, random, string, os
from datetime import datetime
from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential
from azure.storage.queue import QueueClient

환경 변수

앱 코드는 다음 네 가지 환경 변수에 따라 달라집니다.

변수
THIRD_PARTY_API_ENDPOINT https://msdocs-example-api.azurewebsites.net/api/RandomNumber에서 과 같은 타사 API의 URL입니다.
KEY_VAULT_URL 타사 API에 대한 액세스 키를 저장한 Azure Key Vault의 URL입니다.
THIRD_PARTY_API_SECRET_NAME 타사 API에 대한 액세스 키가 포함된 Key Vault의 비밀 이름입니다.
STORAGE_QUEUE_URL Azure에서 구성하는 Azure Storage 큐의 URL입니다(예: https://msdocsexamplemainapp.queue.core.windows.net/code-requests4부 참조). 큐 이름은 URL의 끝에 포함되므로 코드의 아무 곳에도 이름이 표시되지 않습니다.

이러한 변수를 설정하는 방법은 코드가 실행되는 위치에 따라 달라집니다.

  • 코드를 로컬로 실행할 때 사용 중인 명령 셸(예: PowerShell, Bash 또는 CMD) 내에서 이러한 변수를 만듭니다. (가상 머신에 앱을 배포하는 경우 비슷한 서버 쪽 변수를 만듭니다.) .env 파일에서 키-값 쌍을 읽고 환경 변수로 설정하는 python-dotenv와 같은 라이브러리를 사용할 수도 있습니다.

  • 이 연습과 같이 코드가 Azure App Service에 배포되면 서버 자체에 액세스할 수 없습니다. 대신 App Service 구성에서 이름이 같은 애플리케이션 설정을 정의합니다. 이러한 설정은 환경 변수로 애플리케이션에 자동으로 노출됩니다.

프로비저닝 스크립트는 Azure CLI 명령 az webapp config appsettings set사용하여 이러한 설정을 만듭니다. 네 개의 변수는 모두 단일 명령으로 설정됩니다.

Azure Portal을 통해 설정을 만들려면 Azure PortalApp Service 앱 구성을 참조하세요.

코드를 로컬로 실행하는 경우 로컬 서비스 주체에 대한 정보가 포함된 환경 변수도 지정해야 합니다. DefaultAzureCredential 이러한 값을 찾습니다. App Service에 배포된 경우 앱의 시스템 할당 관리 ID를 인증하는 대신 사용하므로 이러한 값을 설정할 필요가 없습니다.

변수
AZURE_TENANT_ID (Azure 테넌트 ID) Microsoft Entra 테넌트(디렉터리) ID입니다.
AZURE_CLIENT_ID 테넌트에서 앱 등록의 클라이언트(애플리케이션) ID입니다.
AZURE_CLIENT_SECRET 앱 등록에 대해 생성된 클라이언트 암호입니다.

자세한 내용은 로컬 개발 중에 서비스 주체를 사용하여 Azure 서비스에 Python 앱을 인증하는 방법에 대해참조하세요.