.NET Core에서 사용되는 .NET용 AWS SDK 구성
.NET Core의 가장 큰 변화 중 하나는 ConfigurationManager와 .NET Framework 및 ASP.NET 응용 프로그램과 함께 사용되는 표준 app.config 및 web.config 파일이 제거된 것이다. 기존의 .NET 응용 프로그램의 경우, AWS SDK for .NET은 이 구성 시스템을 사용하여 AWS 자격 증명 및 지역을 설정하므로 코드에서 이를 수행할 필요가 없다.
.NET 코어의 구성 시스템은 모든 위치에서 모든 유형의 입력 소스를 허용한다. 또한 구성 객체는 표준 .NET 응용 프로그램의 ConfigurationManager와 같은 전역적 단일 객체가 아니므로 .NET용 AWS SDK에는 이 객체의 설정을 읽을 수 있는 액세스 권한이 없다.
참고
.NET Core 구성 시스템에 대한 배경 지식은 .NET Core 문서의 구성(Configuration) 항목을 참조하면 된다.
.NET Core용 AWS SDK for .NET을 쉽게 사용할 수 있도록 AWSSDK.Extensions.NETCore.Setup NuGet 패키지를 사용할 수 있다. 많은 .NET Core 라이브러리와 마찬가지로 IConfiguration 인터페이스에 확장 메서드를 추가하여 AWS 구성을 완벽하게 유지한다.
AWSSDK.Extensions.NETCore.Setup 사용하기
Visual Studio에서 ASP.NET Core MVC 응용 프로그램을 만들면 Startup.cs의 생성자는 ConfigurationBuilder를 사용하고 구성 속성을 기본 제공 IConfiguration 개체로 설정하여 다양한 입력 소스를 읽음으로써 구성을 처리한다.
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
Configuration 객체를 사용하여 AWS 옵션을 얻으려면 먼저 AWSSDK.Extensions.NETCore.Setup NuGet 패키지를 추가해야 한다. 그런 다음 옵션을 구성 파일에 추가한다. ConfigurationBuilder에 추가된 파일 중 하나는 $"appsettings.{env.EnvironmentName}.json"이다(Notice one of the files added to the Builder is called $"appsettings.{env.EnvironmentName}.json"). 프로젝트 속성에서 디버그 탭을 보면 이 파일이 개발(Development)로 설정되어 있음을 알 수 있다. 로컬 테스트 중에는 읽기 전용인 appsettings.Development.json 파일에 구성을 넣을 수 있기 때문에 로컬 테스트에 유용하다. EnvironmentName이 Production으로 설정된 Amazon EC2 인스턴스를 배포하면 이 파일은 무시되고 .NET용 AWS SDK는 Amazon EC2 인스턴스 용으로 구성된 IAM 자격 증명 및 영역으로 다시 돌아간다.
아래의 구성은 AWS 설정을 제공하기 위해 프로젝트의 appsettings.Development.json 파일에 추가 할 수 있는 값의 예를 보여준다.
{
"AWS": {
"Profile": "local-test-profile",
"Region": "us-west-2"
}
}
코드에서 파일에 설정된 AWS 옵션에 액세스하려면 IConfiguration에 추가된 GetAWSOptions 확장 메소드를 호출하면 된다. 이러한 옵션에서 서비스 클라이언트를 생성하려면 CreateServiceClient를 호출하면 된다. 다음 예제 코드는 Amazon S3 서비스 클라이언트를 만드는 방법을 보여준다.
var options = Configuration.GetAWSOptions();
IAmazonS3 client = options.CreateServiceClient<IAmazonS3>();
appsettings 파일에 허용되는 값
다음 app 구성값은 appsettings.Development.json 파일에서 설정할 수 있다. 필드 이름은 아래 목록에 표시된 대소문자를 사용해야 한다. 이러한 설정에 대한 자세한 내용은 AWS.Runtime.ClientConfg 클래스를 참조하면 된다.
- Region
- Profile
- ProfilesLocation
- SignatureVersion
- RegionEndpoint
- UseHttp
- ServiceURL
- AuthenticationRegion
- AuthenticationServiceName
- MaxErrorRetry
- LogResponse
- BufferSize
- ProgressUpdateInterval
- ResignRetries
- AllowAutoRedirect
- LogMetrics
- DisableLogging
- UseDualstackEndpoint
ASP.NET Core 종속성 인젝션
AWSSDK.Extensions.NETCore.Setup NuGet 패키지는 ASP.NET 코어의 새로운 종속성 인젝션 시스템과도 통합된다. Startup의 ConfigureServices 메서드는 MVC 서비스가 추가되는 곳이다. 응용 프로그램이 Entity Framework를 사용하는 경우 이 인스턴스도 초기화된다.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
}
참고
.NET Core의 종속성 인젝션에 대한 배경은 .NET Core 문서 사이트에서 볼 수 있다.
AWSSDK.Extensions.NETCore.Setup NuGet 패키지는 AWS 서비스를 종속성 인젝션에 추가하는데 사용할 수 있는 새로운 확장 메서드를 IServiceCollection에 추가한다. 다음 코드는 Amazon S3 및 DynamoDB를 우리의 서비스 목록에 추가하기 위해 IConfiguration에서 읽어온 AWS 옵션을 추가하는 방법을 보여준다.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddDefaultAWSOptions(Configuration.GetAWSOptions());
services.AddAWSService<IAmazonS3>();
services.AddAWSService<IAmazonDynamoDB>();
}
이제 MVC 컨트롤러가 IAmazonS3 또는 IAmazonDynamoDB를 생성자의 매개 변수로 사용하면 종속성 인젝션 시스템이 해당 서비스를 전달한다.
public class HomeController : Controller
{
IAmazonS3 S3Client { get; set; }
public HomeController(IAmazonS3 s3Client)
{
this.S3Client = s3Client;
}
...
}
[유니티 어필리에이트 프로그램]
아래의 링크를 통해 에셋을 구매하시거나 유니티를 구독하시면 수익의 일부가 베르에게 수수료로 지급되어 채널의 운영에 도움이 됩니다.
[투네이션]
[Patreon]
[디스코드 채널]
'Amazon Web Services' 카테고리의 다른 글
[AWS SDK for .NET] AWS 지역 선택 (0) | 2017.10.17 |
---|---|
[AWS SDK for .NET] AWS 자격 증명 구성하기(Configuring AWS Credentials) (0) | 2017.10.17 |
[AWS SDK for .NET] 코드 예제 (0) | 2017.10.16 |
[AWS SDK for .NET] .NET용 AWS SDK 버전 3으로 코드 마이그레이션하기 (0) | 2017.10.16 |
[AWS SDK for .NET] 재시도 및 시간 초과(Retries and Timeouts) (0) | 2017.10.16 |