빠른 시작: Azure App Configuration을 사용하여 ASP.NET Core 앱 만들기

이 빠른 시작에서는 Azure App Configuration을 사용하여 ASP.NET Core 앱을 위한 앱 설정의 스토리지 및 관리를 외부에 배치합니다. ASP.NET Core는 하나 이상의 구성 공급자 설정을 사용하여 단일 키-값 기반 구성 개체를 빌드합니다. App Configuration은 .NET 구성 공급자 라이브러리를 제공합니다. 따라서 App Configuration을 앱에 대한 추가 구성 원본으로 사용할 수 있습니다. 기존 앱이 있는 경우 App Configuration 사용을 시작하려면 앱 시작 코드를 약간만 변경하면 됩니다.

필수 조건

Azure Cloud Shell은 이 문서의 명령줄 지침을 실행하는 데 사용할 수 있는 무료 대화형 셸입니다. .NET SDK를 포함하여 미리 설치된 일반적인 Azure 도구가 있습니다. Azure 구독에 로그인한 경우 shell.azure.com에서 Azure Cloud Shell을 시작합니다. Azure Cloud Shell에 대한 자세한 내용은 설명서를 참조하세요.

키-값 추가

App Configuration 저장소에 다음 키 값을 추가하고 레이블콘텐츠 형식에 기본값을 그대로 둡니다. Azure Portal 또는 CLI를 사용하여 저장소에 키-값을 추가하는 방법에 대한 자세한 내용은 키-값 만들기로 이동합니다.

TestApp:설정:BackgroundColor 흰색
TestApp:설정:FontColor 검정색
TestApp:설정:FontSize 24
TestApp:설정:Message Azure 앱 구성의 데이터

ASP.NET Core 웹앱 만들기

.NET CLI(명령줄 인터페이스)를 사용하여 새 ASP.NET Core 웹앱 프로젝트를 만듭니다. Azure Cloud Shell이러한 도구를 제공합니다. Windows, macOS 및 Linux 플랫폼에서 사용할 수도 있습니다.

다음 명령을 실행하여 새 TestAppConfig 폴더에 ASP.NET Core 웹앱을 만듭니다.

dotnet new webapp --output TestAppConfig --framework net6.0

App Configuration 저장소에 커넥트

  1. 프로젝트의 디렉터리 TestAppConfig로 이동하고 다음 명령을 실행하여 Microsoft.Azure.AppConfiguration.AspNetCore NuGet 패키지 참조를 추가합니다.

    dotnet add package Microsoft.Azure.AppConfiguration.AspNetCore
    
  2. 다음 명령을 실행합니다. 이 명령은 비밀 관리자를 사용하여 App Configuration 저장소에 대한 연결 문자열을 저장하는 ConnectionStrings:AppConfig라는 비밀을 저장합니다. <your_connection_string> 자리 표시자를 App Configuration 저장소의 연결 문자열 바꿉다. 연결 문자열은 Azure Portal에 있는 App Configuration 저장소의 액세스 키에서 찾을 수 있습니다.

    dotnet user-secrets init
    dotnet user-secrets set ConnectionStrings:AppConfig "<your_connection_string>"
    

    일부 셸은 따옴표로 묶이지 않는 한 연결 문자열 잘립니다. dotnet user-secrets list 명령의 출력에 전체 연결 문자열이 표시되는지 확인합니다. 그렇지 않으면 명령을 다시 실행하고 연결 문자열 따옴표로 묶습니다.

    비밀 관리자는 프로젝트 트리 외부에 비밀을 저장하므로 소스 코드 내에서 비밀이 실수로 공유되지 않도록 방지할 수 있습니다. 비밀 관리자는 웹앱을 로컬로 테스트하는 데만 사용됩니다. App Service와 같은 앱이 Azure에 배포되면 연결 문자열, 애플리케이션 설정 또는 환경 변수를 사용하여 연결 문자열을 저장합니다. 또는 연결 문자열 모두 사용하지 않도록 관리 ID 또는 다른 Microsoft Entra ID를 사용하여 App Configuration에 연결할 수 있습니다.

  3. Program.cs 열고 메서드를 호출 AddAzureAppConfiguration 하여 Azure 앱 구성을 추가 구성 원본으로 추가합니다.

    var builder = WebApplication.CreateBuilder(args);
    
    // Retrieve the connection string
    string connectionString = builder.Configuration.GetConnectionString("AppConfig");
    
    // Load configuration from Azure App Configuration
    builder.Configuration.AddAzureAppConfiguration(connectionString);
    
    // The rest of existing code in program.cs
    // ... ...
    

    이 코드는 연결 문자열을 사용하여 App Configuration 저장소에 연결하고 ‘레이블이 없는’‘모든’ 키-값을 로드합니다. App Configuration 공급자에 대한 자세한 내용은 App Configuration 공급자 API 참조를 참조하세요.

App Configuration 저장소에서 읽기

이 예제에서는 App Configuration 저장소에서 구성한 설정을 사용하여 해당 콘텐츠를 표시하도록 웹 페이지를 업데이트합니다.

  1. 프로젝트 디렉터리의 루트에서 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; }
        }
    }
    
  2. 구성의 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
    // ... ...
    
  3. 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;
        }
    }
    
  4. 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>
    

로컬로 앱 빌드 및 실행

  1. .NET CLI를 사용하여 앱을 빌드하려면 프로젝트의 루트 디렉터리로 이동합니다. 명령 셸에서 다음 명령을 실행합니다.

    dotnet build
    
  2. 빌드가 성공적으로 완료되면 다음 명령을 실행하여 웹앱을 로컬로 실행합니다.

    dotnet run
    
  3. 명령의 dotnet run 출력에는 두 개의 URL이 포함됩니다. 브라우저를 열고 이러한 URL 중 하나로 이동하여 애플리케이션에 액세스합니다. 예: https://localhost:5001

    Azure Cloud Shell에서 작업하는 경우 웹 미리 보기 단추와 구성선택합니다. 미리 보기에 대한 포트를 구성하라는 메시지가 표시되면 5000을 입력하고 ‘열기 및 찾기’를 선택합니다.

    Screenshot of Azure Cloud Shell. Locate Web Preview.

    웹 페이지는 다음과 같습니다. Screenshot of the browser.Launching quickstart app locally.

리소스 정리

이 문서에서 만든 리소스를 계속 사용하지 않으려면 여기서 만든 리소스 그룹을 삭제하여 요금이 부과되지 않도록 합니다.

Important

리소스 그룹을 삭제하면 다시 되돌릴 수 없습니다. 리소스 그룹 및 포함된 모든 리소스가 영구적으로 삭제됩니다. 잘못된 리소스 그룹 또는 리소스를 자동으로 삭제하지 않도록 합니다. 유지하려는 다른 리소스가 포함된 리소스 그룹 내에서 이 문서에 대한 리소스를 만든 경우 리소스 그룹을 삭제하는 대신 해당 창에서 각 리소스를 개별적으로 삭제합니다.

  1. Azure Portal에 로그인하고 리소스 그룹을 선택합니다.
  2. 이름으로 필터링 상자에서 리소스 그룹의 이름을 입력합니다.
  3. 결과 목록에서 리소스 그룹 이름을 선택하여 개요를 확인합니다.
  4. 리소스 그룹 삭제를 선택합니다.
  5. 리소스 그룹 삭제를 확인하는 메시지가 표시됩니다. 리소스 그룹의 이름을 입력하여 확인하고 삭제를 선택합니다.

잠시 후, 리소스 그룹 및 모든 해당 리소스가 삭제됩니다.

다음 단계

이 빠른 시작에서 관련 정보는 다음과 같습니다.

  • 새 App Configuration 저장소를 프로비전했습니다.
  • App Configuration 공급자 라이브러리를 사용하여 App Configuration 저장소에 연결됩니다.
  • 구성 공급자 라이브러리를 사용하여 App Configuration 저장소의 키-값을 읽습니다.
  • App Configuration 저장소에서 구성한 설정을 사용하여 웹 페이지를 표시했습니다.

구성 설정을 동적으로 새로 고치도록 ASP.NET Core 웹앱을 구성하는 방법을 알아보려면 다음 자습서를 계속 진행하세요.