이 가이드에서는 컨테이너 이미지를 빌드하거나 관리하지 않고 DAB(Data API Builder)를 배포하여 코드 기반 배포 모델을 사용하여 Azure App Service 방법을 보여 줍니다. App Service는 TLS, 사용자 지정 도메인, 크기 조정, 모니터링 및 Microsoft Entra 인증에 대한 기본 제공 지원을 제공합니다.
Tip
환경에서 컨테이너를 사용하는 경우
사전 요구 사항
- 활성 구독이 있는 Azure 계정. 무료로 계정을 만듭니다.
- 데이터 API 작성기 CLI. CLI를 설치합니다.
- Azure CLI. Azure CLI를 설치합니다.
- .NET 8 이상 로컬에 설치됩니다.
- Azure에서 주소 지정 가능한 기존 지원 데이터베이스입니다.
구성 파일 빌드
DAB 구성 파일을 빌드하여 기존 데이터베이스에 연결합니다.
로컬 컴퓨터에 빈 디렉터리를 만들어 구성 파일 및 배포 아티팩트를 저장합니다.
를 사용하여
dab init새 기본 구성 파일을 초기화합니다.@env()함수를 사용하여DATABASE_CONNECTION_STRING환경 변수를 참조하면 자격 증명이 구성 파일에 저장되지 않습니다.dab init --database-type "<database-type>" --connection-string "@env('DATABASE_CONNECTION_STRING')"Important
<database-type>을/를 지원되는 데이터베이스 형식으로, 예를 들면mssql,postgresql,mysql또는cosmosdb_nosql로 교체합니다. 일부 데이터베이스 유형에는 초기화 시 추가 구성 설정이 필요합니다.구성에 하나 이상의 데이터베이스 엔터티를 추가합니다. 명령을
dab add사용하여 엔터티를 구성합니다. 필요한 만큼dab add을(를) 엔터티에 반복하십시오.dab add "<entity-name>" --source "<schema>.<table>" --permissions "anonymous:*"dab-config.json 파일의 내용을 열고 검토합니다. 다음을 확인합니다.
-
data-source.connection-string가@env('DATABASE_CONNECTION_STRING')을 사용합니다. - 엔터티와 사용 권한이 올바르게 설정되었습니다.
Important
에 리터럴 연결 문자열 또는 비밀을
dab-config.json포함하지 마세요. 런타임 시@env()환경 변수에서 값이 확인되도록 함수를 사용합니다.-
로컬 도구 매니페스트 만들기
배포 패키지에 DAB를 프로젝트 종속성으로 포함되도록 로컬 .NET 도구 매니페스트를 사용합니다. 이 방법은 App Service 내에 전역으로 설치된 도구에 의존하지 않습니다.
프로젝트 디렉터리에 .NET 로컬 도구 매니페스트를 만듭니다.
dotnet new tool-manifest로컬 도구로 데이터 API 작성기를 설치합니다.
dotnet tool install microsoft.dataapibuilder --prerelease에 매니페스트가 있는지 확인합니다
.config/dotnet-tools.json.메모
플래그는
--prerelease최신 Data API Builder 시험판 버전을 설치합니다. 플래그를 제거하여 안정적인 최신 릴리스를 대신 설치합니다.
로컬에서 테스트
Azure 배포하기 전에 런타임이 시작되고 엔드포인트가 작동하는지 확인합니다.
연결 문자열 로컬 환경 변수로 설정합니다.
$env:DATABASE_CONNECTION_STRING = "<your-connection-string>"로컬에서 DAB 런타임을 시작합니다.
dab startSwagger UI로 이동하거나 요청하여 REST 엔드포인트를 테스트합니다
/api/<entity-name>./graphql에서 GraphQL 엔드포인트를 테스트합니다.모든 엔드포인트를 확인한 후 런타임을 중지합니다.
App Service 리소스 만들기
App Service에서 DAB를 호스트하는 데 필요한 Azure 리소스를 만듭니다.
새 리소스 그룹을 만듭니다. 이 가이드의 모든 새 리소스에 이 리소스 그룹을 사용합니다.
az group create \ --name <resource-group-name> \ --location <location>Tip
리소스 그룹 msdocs-dab-appservice의 이름을 지정하는 것이 좋습니다.
App Service 요금제를 만듭니다.
az appservice plan create \ --name <plan-name> \ --resource-group <resource-group-name> \ --sku B1 \ --is-linux메모
이 가이드에서는 Linux에서 B1 (기본) 계층을 사용합니다.
.NET 8 런타임을 사용하여 웹앱을 만듭니다.
az webapp create \ --name <app-name> \ --resource-group <resource-group-name> \ --plan <plan-name> \ --runtime "DOTNETCORE:8.0"Tip
계획에 대한 사용 가능한 런타임을
az webapp list-runtimes --os linux로 유효성을 검사합니다.
App Service 설정 구성
App Service에서 DAB를 실행하는 데 필요한 환경 변수 및 시작 명령을 구성합니다.
App Service에 대한 인증 공급자를 구성합니다. 이 설정은 ID 정보에 대한 App Service의 기본 제공 인증(쉬운 인증)을 신뢰하도록 DAB에 지시합니다.
dab configure --runtime.host.authentication.provider AppServiceApp Service 애플리케이션 설정으로 데이터베이스 연결 문자열을 설정합니다.
az webapp config appsettings set \ --name <app-name> \ --resource-group <resource-group-name> \ --settings DATABASE_CONNECTION_STRING="<your-connection-string>"Tip
비밀을 포함하지 않는 연결 문자열 사용합니다. 대신 관리 ID 및 Microsoft Entra 인증을 사용하여 데이터베이스와 App Service 간의 액세스를 관리합니다. 자세한 내용은 관리 ID를 사용하는 Azure 서비스를 참조하세요.
로컬 도구 매니페스트를 복원하고 DAB를 시작하는 시작 스크립트를 만듭니다. 프로젝트 디렉터리에 이름이 지정된
startup.sh파일을 만듭니다.#!/bin/sh dotnet tool restore dotnet tool run dab startImportant
CRLF가 아닌 LF(Unix) 줄 끝을
startup.sh사용하는지 확인합니다. Windows 편집기에서는 기본적으로 CRLF를 사용하여 저장할 수 있으므로 Linux App Service 호스트에서 스크립트가 실패합니다.App Service에서 시작 명령을 설정합니다.
az webapp config set \ --name <app-name> \ --resource-group <resource-group-name> \ --startup-file "startup.sh"
App Service에 배포
ZIP 배포를 사용하여 프로젝트 파일을 패키지하고 App Service에 배포합니다.
프로젝트 파일이 포함된 배포 패키지를 만듭니다. 최소한 다음을 포함합니다.
dab-config.json.config/dotnet-tools.jsonstartup.sh
Compress-Archive -Path dab-config.json, .config, startup.sh -DestinationPath deploy.zip -ForceImportant
ZIP에는 루트 수준의 파일이 포함되어야 합니다. 파일이 포함된 부모 폴더를 압축하지 마세요. 보관 루트에는
dab-config.json,.config/, 및startup.sh를 직접 포함해야 합니다.App Service에 ZIP 패키지를 배포합니다.
az webapp deploy \ --resource-group <resource-group-name> \ --name <app-name> \ --src-path deploy.zip \ --type zip
배포 확인
배포 후 App Service에서 DAB가 성공적으로 시작되었는지 확인합니다.
App Service URL을 엽니다.
https://<app-name>.azurewebsites.net헬스 엔드포인트를 확인합니다.
https://<app-name>.azurewebsites.net/health로컬에서 테스트한 동일한 엔터티 경로를 사용하여 REST 및 GraphQL 엔드포인트를 테스트합니다. 배포된 앱은 동일한
dab-config.json항목을 사용하므로 엔드포인트 동작이 로컬 런타임과 일치해야 합니다.엔드포인트가 예기치 않은 오류를 반환하는 경우 애플리케이션 로깅을 사용하도록 설정하고 로그를 검토합니다.
az webapp log config \ --name <app-name> \ --resource-group <resource-group-name> \ --application-logging filesystem \ --level information az webapp log tail \ --name <app-name> \ --resource-group <resource-group-name>
인증 구성(선택 사항)
프로덕션 사용을 위해 Microsoft Entra ID App Service 엔드포인트를 보호합니다.
자세한 단계는 App Service 인증 구성을 참조하세요.
Important
AppService 인증 공급자는 App Service 인증에 의해 삽입된 헤더를 신뢰합니다. 프로덕션 환경에서 이 공급자를 사용할 때 App Service 인증이 사용하도록 설정되어 있는지 확인합니다. 자세한 내용은 간편한 인증(App Service)을 참조하세요.
메모
App Service 인증은 엔드포인트로의 접근을 보호합니다. DAB 엔터티 권한은 런타임에서 허용하는 작업을 계속 제어합니다. 역할 기반 액세스를 원하면 anonymous:* 대신 특정 역할을 사용하도록 엔터티 권한을 업데이트하세요.
자원을 정리하세요
샘플 애플리케이션 또는 리소스가 더 이상 필요하지 않은 경우 해당 배포 및 모든 리소스를 제거합니다.
az group delete \
--name <resource-group-name> \
--yes \
--no-wait
관련 콘텐츠
- Easy Auth (App Service) 인증
- 구성 파일 참조
- 런타임 호스트 및 인증 구성
- Azure Container Apps에 배포
- Application Insights와 통합