AWSSDK.Extensions.NETCore.Setup 및 IConfiguration 인터페이스 사용 - AWS SDK for .NET

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWSSDK.Extensions.NETCore.Setup 및 IConfiguration 인터페이스 사용

(이 주제의 이전 제목은 ".NET Core를 사용한 AWS SDK for .NET 구성"이었음)

.NET Core의 가장 큰 변경 사항 중 하나는 ConfigurationManager의 제거와 .NET Framework 및 ASP.NET 애플리케이션에서 사용되던 표준 app.configweb.config 파일의 제거입니다.

.NET Core 구성은 구성 공급자에 의해 설정된 키-값 페어를 기반으로 합니다. 구성 공급자는 명령줄 인수, 디렉터리 파일, 환경 변수, 설정 파일 등 다양한 구성 소스에서 구성 데이터를 키-값 페어로 읽어 들입니다.

참고

자세한 내용은 ASP.NET Core 구성을 참조하십시오.

.NET Core와 함께 AWS SDK for .NET를 쉽게 사용할 수 있도록 AWSSDK.Extensions.NETCore.Setup NuGet 패키지를 사용할 수 있습니다. 많은 .NET Core 라이브러리와 마찬가지로 이 패키지는 IConfiguration 인터페이스에 확장 메서드를 추가하여 AWS 구성을 원활하게 가져올 수 있습니다.

AWSSDK.Extensions.NETCore.Setup 사용법

Visual Studio의 ASP.NET Core 웹 애플리케이션 템플릿을 사용하거나 .NET Core CLI에서 dotnet new mvc ...를 실행하여 수행할 수 있는 ASP.NET Core MVC(모델-뷰-컨트롤러) 애플리케이션을 생성한다고 가정하겠습니다. 이러한 애플리케이션을 생성하는 경우 Startup.cs의 생성자는 appsettings.json과 같은 구성 공급자의 다양한 입력 소스에서 읽어 구성을 처리합니다.

public Startup(IConfiguration configuration) { Configuration = configuration; }

Configuration 객체를 사용하여 AWS 옵션을 얻으려면 먼저 AWSSDK.Extensions.NETCore.Setup NuGet 패키지를 추가합니다. 그런 다음, 다음에 설명한 대로 구성 파일에 해당 옵션을 추가합니다.

프로젝트에 추가된 파일 중 하나가 appsettings.Development.json입니다. 이는 EnvironmentName개발로 설정한 것에 해당합니다. 개발 중에는 로컬 테스트 중에만 읽을 수 있는 이 파일에 구성을 입력합니다. EnvironmentName프로덕션으로 설정된 Amazon EC2 인스턴스를 배포하면 이 파일은 무시되고 AWS SDK for .NET는 Amazon EC2 인스턴스용으로 구성된 IAM 보안 인증과 리전으로 폴백됩니다.

다음 구성에서는 AWS 설정 값을 제공하기 위해 프로젝트의 appsettings.Development.json 파일에서 추가할 수 있는 값들의 예를 보여줍니다.

{ "AWS": { "Profile": "local-test-profile", "Region": "us-west-2" }, "SupportEmail": "TechSupport@example.com" }

CSHTML 파일의 설정에 액세스하려면 Configuration 명령을 사용합니다.

@using Microsoft.Extensions.Configuration @inject IConfiguration Configuration <h1>Contact</h1> <p> <strong>Support:</strong> <a href='mailto:@Configuration["SupportEmail"]'>@Configuration["SupportEmail"]</a><br /> </p>

파일에 설정된 AWS 옵션에 코드를 통해 액세스하려면 IConfiguration에 추가된 GetAWSOptions 확장 메서드를 호출합니다.

이 옵션을 통해 서비스 클라이언트를 생성하려면 CreateServiceClient를 호출합니다. 다음 예제에서는 Amazon S3 서비스 클라이언트를 생성하는 방법을 보여줍니다. (AWSSDK.S3 NuGet 패키지를 프로젝트에 추가해야 합니다.)

var options = Configuration.GetAWSOptions(); IAmazonS3 client = options.CreateServiceClient<IAmazonS3>();

service1의 구성에는 us-west-2 리전이 포함되고 service2의 구성에 특수 엔드포인트 URL이 포함된 다음 예제와 같이 appsettings.Development.json 파일의 여러 항목을 사용하여 설정이 호환되지 않는 여러 서비스 클라이언트를 생성할 수도 있습니다.

{ "service1": { "Profile": "default", "Region": "us-west-2" }, "service2": { "Profile": "default", "ServiceURL": "URL" } }

그러면 JSON 파일의 항목을 사용하여 특정 서비스에 대한 옵션을 가져올 수 있습니다. 예를 들어 service1의 설정을 얻으려면 다음을 사용합니다.

var options = Configuration.GetAWSOptions("service1");

appsettings 파일에서 허용되는 값

다음 앱 구성 값은 appsettings.Development.json 파일에서 설정할 수 있습니다. 제시된 필드 이름은 소문자이어야 합니다. 이러한 설정에 대한 자세한 내용은 AWS.Runtime.ClientConfig 클래스를 참조하세요.

  • 리전

  • 프로필

  • 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 Core의 새로운 종속성 주입 시스템과도 통합됩니다. 애플리케이션의 Startup 클래스에서 ConfigureServices 메서드는 MVC 서비스가 추가되는 곳입니다. 애플리케이션에서 개체 프레임워크를 사용하는 경우 이 메서드는 그 프레임워크가 초기화되는 곳이기도 합니다.

public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc(); }
참고

.NET Core의 종속성 주입에 대한 배경 정보는 .NET Core 설명서 사이트에서 사용할 수 있습니다.

AWSSDK.Extensions.NETCore.Setup NuGet 패키지에서는 AWS 서비스를 종속성 주입에 추가할 때 사용할 수 있는 IServiceCollection에 새로운 확장 메서드를 추가합니다. 다음 코드에서는 IConfiguration에서 읽는 AWS 옵션을 추가하여 Amazon S3 및 DynamoDB를 서비스 목록에 추가하는 방법을 보여줍니다. (AWSSDK.S3AWSSDK.DynamoDBv2 NuGet 패키지를 프로젝트에 추가해야 합니다.)

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; } ... }