

 AWS SDK for .NET V3가 유지 관리 모드로 전환되었습니다.

[AWS SDK for .NET V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html)로 마이그레이션하는 것이 좋습니다. 마이그레이션 방법에 대한 자세한 내용과 정보는 [유지 관리 모드 공지](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/)를 참조하세요.

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

# AWSSDK.Extensions.NETCore.Setup 및 IConfiguration 인터페이스 사용
<a name="net-dg-config-netcore"></a>

(이 주제의 이전 제목은 ".NET Core AWS SDK for .NET 로 구성"입니다.)

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

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

**참고**  
자세한 내용은 [ASP.NET Core 구성](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration)을 참조하십시오.

.NET Core AWS SDK for .NET 에서를 쉽게 사용할 수 있도록 [AWSSDK.Extensions.NETCore.Setup](https://www.nuget.org/packages/AWSSDK.Extensions.NETCore.Setup/) NuGet 패키지를 사용할 수 있습니다. 많은 .NET Core 라이브러리와 마찬가지로 `IConfiguration` 인터페이스에 확장 메서드를 추가하여 AWS 구성을 원활하게 만듭니다.

이 패키지의 소스 코드는 [https://github.com/aws/aws-sdk-net/tree/aws-sdk-net-v3.7/extensions/src/AWSSDK.Extensions.NETCore.Setup](https://github.com/aws/aws-sdk-net/tree/aws-sdk-net-v3.7/extensions/src/AWSSDK.Extensions.NETCore.Setup)의 GitHub에 있습니다.

## AWSSDK.Extensions.NETCore.Setup 사용법
<a name="net-core-configuration-builder"></a>

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 인스턴스를 배포하면이 파일은 무시되고는 Amazon EC2 인스턴스에 대해 구성된 IAM 자격 증명 및 리전으로 AWS SDK for .NET 돌아갑니다.

다음 구성에서는 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 옵션에 액세스하려면에 추가된 `GetAWSOptions` 확장 방법을 호출합니다`IConfiguration`.

이 옵션을 통해 서비스 클라이언트를 생성하려면 `CreateServiceClient`를 호출합니다. 다음 예제에서는 Amazon S3 서비스 클라이언트를 생성하는 방법을 보여줍니다. ([AWSSDK.S3](https://www.nuget.org/packages/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 파일에서 허용되는 값
<a name="net-core-appsettings-values"></a>

다음 앱 구성 값은 `appsettings.Development.json` 파일에서 설정할 수 있습니다. 제시된 필드 이름은 소문자이어야 합니다. 이러한 설정에 대한 자세한 내용은 `[AWS.Runtime.ClientConfig](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TClientConfig.html)` 클래스를 참조하세요.
+ 리전
+ 프로필
+ ProfilesLocation
+ SignatureVersion
+ RegionEndpoint
+ UseHttp
+ ServiceURL
+ AuthenticationRegion
+ AuthenticationServiceName
+ MaxErrorRetry
+ LogResponse
+ BufferSize
+ ProgressUpdateInterval
+ ResignRetries
+ AllowAutoRedirect
+ LogMetrics
+ DisableLogging
+ UseDualstackEndpoint

## ASP.NET Core 종속성 주입
<a name="net-core-dependency-injection"></a>

*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 설명서 사이트](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection)에서 사용할 수 있습니다.

`AWSSDK.Extensions.NETCore.Setup` NuGet 패키지는 종속성 주입에 AWS 서비스를 추가하는 데 사용할 수 `IServiceCollection` 있는 새로운 확장 방법을에 추가합니다. 다음 코드는에서 읽는 AWS 옵션을 추가하여 서비스 목록에 Amazon S3 및 DynamoDB를 `IConfiguration` 추가하는 방법을 보여줍니다. ([AWSSDK.S3](https://www.nuget.org/packages/AWSSDK.S3) 및 [AWSSDK.DynamoDBv2](https://www.nuget.org/packages/AWSSDK.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;
    }

    ...

}
```