빠른 시작: Azure App Configuration을 사용하여 ASP.NET Core 앱 만들기
이 빠른 시작에서는 Azure App Configuration을 사용하여 ASP.NET Core 앱을 위한 앱 설정의 스토리지 및 관리를 외부에 배치합니다. ASP.NET Core는 하나 이상의 구성 공급자 설정을 사용하여 단일 키-값 기반 구성 개체를 빌드합니다. App Configuration은 .NET 구성 공급자 라이브러리를 제공합니다. 따라서 App Configuration을 앱에 대한 추가 구성 원본으로 사용할 수 있습니다. 기존 앱이 있는 경우 App Configuration 사용을 시작하려면 앱 시작 코드를 약간만 변경하면 됩니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 체험 계정 만들기
- App Configuration 저장소. 저장소를 만듭니다.
- .NET SDK 6.0 이상
팁
Azure Cloud Shell은 이 문서의 명령줄을 실행하는 데 사용할 수 있는 무료 대화형 셸입니다. .NET SDK를 포함하여 미리 설치된 일반적인 Azure 도구가 있습니다. Azure 구독에 로그인한 경우 shell.azure.com에서 Azure Cloud Shell을 시작합니다. Azure Cloud Shell에 대한 자세한 내용은 설명서를 참조하세요.
키-값 추가
App Configuration 저장소에 다음 키-값을 추가하고 레이블 및 콘텐츠 형식은 기본값으로 둡니다. Azure Portal 또는 CLI를 사용하여 저장소에 키-값을 추가하는 방법에 대한 자세한 내용은 키-값 만들기로 이동합니다.
키 | 값 |
---|---|
TestApp:Settings:BackgroundColor | 흰색 |
TestApp:Settings:FontColor | 검정색 |
TestApp:Settings:FontSize | 24 |
TestApp:Settings:Message | Azure App Configuration의 데이터 |
ASP.NET Core 웹앱 만들기
.NET CLI(명령줄 인터페이스)를 사용하여 새 ASP.NET Core 웹앱 프로젝트를 만듭니다. Azure Cloud Shell은 이러한 도구를 제공합니다. Windows, macOS 및 Linux 플랫폼에서 사용할 수도 있습니다.
다음 명령을 실행하여 새 TestAppConfig 폴더에 ASP.NET Core 웹앱을 만듭니다.
dotnet new webapp --output TestAppConfig
App Configuration 저장소에 연결
Microsoft Entra ID(권장) 또는 연결 문자열 사용하여 App Configuration 스토어에 연결합니다.
프로젝트의 디렉터리 TestAppConfig로 이동하고 다음 명령을 실행하여 NuGet 패키지 참조를 추가합니다.
dotnet add package Microsoft.Azure.AppConfiguration.AspNetCore dotnet add package Azure.Identity
TestAppConfig 폴더로 이동하고 다음 명령을 실행하여 애플리케이션에 대한 사용자 암호를 만듭니다.
이 명령은 Secret Manager를 사용하여 App Configuration 저장소에 대한 엔드포인트를 저장하는 비밀 이름을
Endpoints:AppConfiguration
저장합니다.<your-App-Configuration-endpoint>
자리 표시자를 App Configuration 저장소의 엔드포인트로 바꿉 있습니다. Azure Portal의 App Configuration 저장소 개요 블레이드에서 엔드포인트를 찾을 수 있습니다.dotnet user-secrets init dotnet user-secrets set Endpoints:AppConfiguration "<your-App-Configuration-endpoint>"
Program.cs 열고 다음 네임스페이스를 추가합니다.
using Microsoft.Extensions.Configuration; using Microsoft.Azure.AppConfiguration.AspNetCore; using Azure.Identity;
파일에서 메서드를 호출
AddAzureAppConfiguration
하여 App Configuration 저장소에 연결합니다Program.cs
.App Configuration 저장소에 인증하는 데 사용합니다
DefaultAzureCredential
. 지침에 따라 자격 증명에 App Configuration 데이터 판독기 역할을 할당합니다. 애플리케이션을 실행하기 전에 권한이 전파될 수 있는 충분한 시간을 허용해야 합니다.var builder = WebApplication.CreateBuilder(args); // Retrieve the endpoint string endpoint = builder.Configuration.GetValue<string>("Endpoints:AppConfiguration") ?? throw new InvalidOperationException("The setting `Endpoints:AppConfiguration` was not found."); // Load configuration from Azure App Configuration builder.Configuration.AddAzureAppConfiguration(options => { options.Connect(new Uri(endpoint), new DefaultAzureCredential()); }); // The rest of existing code in program.cs // ... ...
이 코드는 App Configuration 저장소에서 레이블이 없는 모든 키 값을 로드합니다. App Configuration에서 데이터를 로드하는 방법에 대한 자세한 내용은 App Configuration 공급자 API 참조를 참조하세요.
App Configuration 저장소에서 읽기
이 예제에서는 App Configuration 저장소에서 구성한 설정을 사용하여 해당 콘텐츠를 표시하도록 웹 페이지를 업데이트합니다.
프로젝트 디렉터리의 루트에서 Settings.cs 파일을 추가합니다. 사용하려는 구성에 대해 강력한 형식의
Settings
클래스를 정의합니다. 네임스페이스를 프로젝트의 이름으로 바꿉니다.namespace TestAppConfig { public class Settings { public string BackgroundColor { get; set; } public long FontSize { get; set; } public string FontColor { get; set; } public string Message { get; set; } } }
구성의
TestApp:Settings
섹션을Settings
개체에 바인딩합니다.Program.cs를 다음 코드로 업데이트하고 파일의 시작 부분에
TestAppConfig
네임스페이스를 추가합니다.using TestAppConfig; // Existing code in Program.cs // ... ... builder.Services.AddRazorPages(); // Bind configuration "TestApp:Settings" section to the Settings object builder.Services.Configure<Settings>(builder.Configuration.GetSection("TestApp:Settings")); var app = builder.Build(); // The rest of existing code in program.cs // ... ...
Pages 디렉터리에서 Index.cshtml.cs를 열고
IndexModel
클래스를 다음 코드로 업데이트합니다.using Microsoft.Extensions.Options
네임스페이스가 아직 없는 경우 파일 첫 부분에 추가합니다.public class IndexModel : PageModel { private readonly ILogger<IndexModel> _logger; public Settings Settings { get; } public IndexModel(IOptionsSnapshot<Settings> options, ILogger<IndexModel> logger) { Settings = options.Value; _logger = logger; } }
Pages 디렉터리에서 Index.cshtml을 열고 콘텐츠를 다음 코드로 업데이트합니다.
@page @model IndexModel @{ ViewData["Title"] = "Home page"; } <style> body { background-color: @Model.Settings.BackgroundColor; } h1 { color: @Model.Settings.FontColor; font-size: @(Model.Settings.FontSize)px; } </style> <h1>@Model.Settings.Message</h1>
로컬로 앱 빌드 및 실행
.NET CLI를 사용하여 앱을 빌드하려면 프로젝트의 루트 디렉터리로 이동합니다. 명령 셸에서 다음 명령을 실행합니다.
dotnet build
빌드가 성공적으로 완료되면 다음 명령을 실행하여 웹앱을 로컬로 실행합니다.
dotnet run
dotnet run
명령의 출력에는 두 개의 URL이 포함됩니다. 브라우저를 열고 이러한 URL 중 하나로 이동하여 애플리케이션에 액세스합니다. 예:https://localhost:5001
Azure Cloud Shell에서 작업하는 경우 웹 미리 보기 단추와 구성을 차례로 선택합니다. 미리 보기에 대한 포트를 구성하라는 메시지가 표시되면 5000을 입력하고 ‘열기 및 찾기’를 선택합니다.
웹 페이지는 다음과 같습니다.
리소스 정리
이 문서에서 만든 리소스를 계속 사용하지 않으려면 여기서 만든 리소스 그룹을 삭제하여 요금이 부과되지 않도록 합니다.
Important
리소스 그룹을 삭제하면 다시 되돌릴 수 없습니다. 리소스 그룹 및 포함된 모든 리소스가 영구적으로 삭제됩니다. 잘못된 리소스 그룹 또는 리소스를 자동으로 삭제하지 않도록 합니다. 유지하려는 다른 리소스가 포함된 리소스 그룹 내에서 이 문서에 대한 리소스를 만든 경우 리소스 그룹을 삭제하는 대신 해당 창에서 각 리소스를 개별적으로 삭제합니다.
- Azure Portal에 로그인하고 리소스 그룹을 선택합니다.
- 이름으로 필터링 상자에서 리소스 그룹의 이름을 입력합니다.
- 결과 목록에서 리소스 그룹 이름을 선택하여 개요를 확인합니다.
- 리소스 그룹 삭제를 선택합니다.
- 리소스 그룹 삭제를 확인하는 메시지가 표시됩니다. 리소스 그룹의 이름을 입력하여 확인하고 삭제를 선택합니다.
잠시 후, 리소스 그룹 및 모든 해당 리소스가 삭제됩니다.
다음 단계
이 빠른 시작에서 관련 정보는 다음과 같습니다.
- 새 App Configuration 저장소를 프로비저닝했습니다.
- App Configuration 공급자 라이브러리를 사용하여 App Configuration 저장소에 연결됩니다.
- 구성 공급자 라이브러리를 사용하여 App Configuration 저장소의 키-값을 읽습니다.
- App Configuration 저장소에서 구성한 설정을 사용하여 웹 페이지를 표시했습니다.
구성 설정을 동적으로 새로 고치도록 ASP.NET Core 웹앱을 구성하는 방법을 알아보려면 다음 자습서를 계속 진행하세요.