BLOG

AWS Systems Manager용 .NET Core 구성 공급자
작성일: 2019-01-04

저희는 Amazon.Extensions.Configuration.SystemsManager라는 새로운 NuGet 패키지를 출시했습니다. 이 NuGet 패키지는 응용 프로그램이 AWS Systems Manager 매개 변수 저장소의 응용 프로그램 구성 설정을 .NET Core 구성 시스템에 로드하는 방법을 단순화합니다.

 

.NET Core의 구성은 저희가 .NET 프레임워크에서 익숙했던 것과는 상당히 다릅니다. .Net 프레임워크에서는 구성 소스로 app.config/web.config만 사용했으며 다른 모든 소스에서는 사용자 정의 구성 솔루션을 생성해야 했습니다.

 

.NET Core 구성 시스템은 확장 가능하도록 구축되었습니다. 예를 들어 ASP.NET Core 응용 프로그램을 생성하는 경우 기본적으로 appsetings.json 파일, 명령줄 인수 및 환경 변수에서 구성 정보를 가져옵니다. 또한 다른 구성 소스 제공자를 연결한 다음 응용 프로그램이 동일한 인터페이스로 구성에 액세스하도록 할 수 있습니다.

 

AWS Systems Manager 매개 변수 저장소는 구성 데이터 관리 및 비밀 관리를 위한 안전한 계층적 스토리지를 제공합니다. 매개 변수 저장소를 사용하면 응용 프로그램 코드와 별도로 응용 프로그램 구성을 안전하게 저장할 수 있습니다.

 

Amazon.Extensions.Configuration.SystemsManager을 어떻게 사용할 수 있는지 살펴봅시다.

 

시작하기

시작하려면 먼저 몇 가지 구성 데이터를 추가하십시오. 이렇게 하려면 매개 변수 저장소 콘솔에 로그인하고 매개변수 생성을 선택하여 첫 번째 응용 프로그램 구성 값을 생성하십시오.

여기서 AWS KMS(AWS Key Management Service)를 사용하여 보안 문자열로 저장된 데이터베이스 연결 문자열에 대한 새 구성 매개 변수를 확인하십시오. 매개 변수 이름의 접두사가 /myapplication임을 확인하십시오. .NET Core 응용 프로그램을 위한 매개변수 저장소를 구성하려고 할 때, 응용 프로그램의 구성에 /myapplication으로 시작하는 모든 매개변수를 추가하게 됩니다.

 

이 구성 데이터를 저희의 응용 프로그램에 포함시키려면 저희는 Amazon.Extensions.Configuration.SystemsManager NuGet 패키지를 추가해야 합니다. 이 패키지는 .NET Core의 구성 시스템의 구성 공급자입니다.

 

그런 다음, 이 새로운 구성 공급자를 코드에서 사용할 수 있게 해야 합니다. ASP.NET Core 응용 프로그램을 위해서 Program.cs 파일에서 이 작업을 수행하고 WebHost 생성을 편집하여 ConfigureAppConfiguration을 호출하여 구성 공급자를 추가하십시오.

 

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>

WebHost.CreateDefaultBuilder(args)

.ConfigureAppConfiguration(builder =>

{

builder.AddSystemsManager(“/myapplication”);

})

.UseStartup<Startup>();

 

여기서 앞에서 추가한 데이터베이스 연결 문자열이 포함된 /myapplication으로 시작하는 매개 변수 저장소의 모든 매개 변수를 .NET Core 구성 시스템에 추가하십시오.

 

고급 설정

매개 변수 저장소에서 .NET Core 구성 시스템에 매개 변수를 쉽게 추가할 수 있는 방법을 알게 되었습니다. 또한 AddSystemManager의 오버로드 중 하나를 사용하여 구성 데이터를 다시 로드하는 빈도를 구성하고, 구성 데이터를 가져오는 오류를 처리하는 방법을 결정하고, 시스템 매니저 매개 변수 저장소를 호출할 때 사용할 AWS 인증 정보와 AWS 리전을 지정하십시오.

 

다음 조각은 이러한 매개 변수를 설정할 수 있는 방법을 보여줍니다.

 

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>

 

WebHost.CreateDefaultBuilder(args)

.ConfigureAppConfiguration(builder =>

{

builder.AddSystemsManager(configureSource =>

{

// Parameter Store prefix to pull configuration data from.

configureSource.Path = “/myapplication”;

 

// Reload configuration data every 5 minutes.

configureSource.ReloadAfter = TimeSpan.FromMinutes(5);

 

// Use custom logic to set AWS credentials and Region. Otherwise, the AWS SDK for .NET’s default logic

// will be used find credentials.

configureSource.AwsOptions = awsOptions;

 

// Configure if the configuration data is optional.

configureSource.Optional = true;

 

configureSource.OnLoadException += exceptionContext =>

{

// Add custom error handling. For example, look at the exceptionContext.Exception and decide

// whether to ignore the error or tell the provider to attempt to reload.

};

 

// Implement custom parameter process, which transforms Parameter Store names into

// names for the .NET Core configuration system.

configureSource.ParameterProcessor = customerProcess;

});

})

.UseStartup<Startup>();

 

피드백

이 라이브러리는 AWS .NET 오픈 소스 커뮤니티의 Ken Hundley에 의해 만들어졌습니다. 그는 소유하고 유지하기 위해 이 라이브러리를 AWS .NET 팀에 기부했습니다. 저희가 AWS와 .NET이 서로 잘 맞게 만드는 것을 도와준 Ken에게 감사의 인사를 드립니다.

 

GitHub 저장소는 여기, https://github.com/aws/aws-dotnet-extensions-configuration에서 찾을 수 있습니다.

 

원문 URL : https://aws.amazon.com/ko/blogs/developer/net-core-configuration-provider-for-aws-systems-manager/

** 메가존클라우드 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.