

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

# 사용자 지정 ASP.NET Core Elastic Beanstalk 배포
<a name="deployment-beanstalk-custom-netcore"></a>

이 주제에서는 Elastic Beanstalk 및 Toolkit for Visual Studio로 ASP.NET Core 애플리케이션을 생성할 때 배포가 작동하는 방법과 배포를 사용자 지정할 수 있는 작업을 설명합니다.

Toolkit for Visual Studio에서 배포 마법사를 완료하면 툴킷이 애플리케이션을 번들링하여 Elastic Beanstalk로 전송합니다. 애플리케이션 번들을 생성하는 첫 번째 단계는 **publish** 명령을 사용하여 애플리케이션의 게시를 준비하기 위해 새 dotnet CLI를 사용하는 것입니다. 프레임워크 및 구성은 마법사의 설정에서 **publish** 명령으로 전달됩니다. 따라서 `configuration`에 대한 **릴리즈** 및 `framework`에 대한 **netcoreapp1.0**을 선택한 경우 툴킷은 다음 명령을 실행합니다.

 `dotnet publish --configuration Release --framework netcoreapp1.0` 

**publish** 명령이 끝나면 도구 키트가 게시 폴더에 새로운 배포 매니페스트를 씁니다. 배포 매니페스트는 **aws-windows-deployment-manifest.json**이라는 JSON 파일이며, Elastic Beanstalk Windows 컨테이너(버전 1.2 이상)가 이 파일을 읽어 애플이케이션을 배포하는 방법을 결정합니다. 예를 들어, IIS 루트에 배포할 ASP.NET Core 애플리케이션의 경우 도구 키트가 다음과 같은 미니페스트 파일을 생성합니다.

```
{
  "manifestVersion": 1,
  "deployments": {

    "aspNetCoreWeb": [
      {
        "name": "app",
        "parameters": {
          "appBundle": ".",
          "iisPath": "/",
          "iisWebSite": "Default Web Site"
        }
      }
    ]
  }
}
```

`appBundle` 속성은 애플리케이션 비트가 매니페스트 파일에 관련된 위치를 나타냅니다. 이 속성은 디렉터리 또는 ZIP 아카이브를 가리킬 수 있습니다. `iisPath` 및 `iisWebSite` 속성은 IIS에서 애플리케이션을 호스팅할 위치를 나타냅니다.

## 매니페스트 사용자 지정
<a name="tkv-deploy-beanstalk-custom-netcore-manifest"></a>

게시 폴더에 매니페스트 파일이 없는 경우에만 도구 키트가 이 파일을 씁니다. 파일이 존재하면 도구 키트가 매니페스트의 `appBundle` 섹션 아래에 나열된 첫 번째 애플리케이션에서 `iisPath`, `iisWebSite` 및 `aspNetCoreWeb` 속성을 업데이트합니다. 그러면 **aws-windows-deployment-manifest.json**을 프로젝트에 추가하고 매니페스트를 사용자 지정할 수 있습니다. Visual Studio에서 ASP.NET Core 웹 애플리케이션에 대해 이 작업을 수행하려면 프로젝트 루트에 새 JSON 파일을 추가하고 이름을 **aws-windows-deployment-manifest.json**으로 지정합니다.

매니페스트는 이름이 **aws-windows-deployment-manifest.json**이고 프로젝트 루트에 있어야 합니다. Elastic Beanstalk 컨테이너가 루트에서 매니페스트를 찾고 발견하면 배포 도구를 호출합니다. 파일이 없으면 Elastic Beanstalk 컨테이너는 아카이브가 **msdeploy** 아카이브라고 가정하는 이전 배포 도구로 폴백됩니다.

dotnet CLI `publish` 명령에 매니페스트를 포함하려면 `project.json`의 `include` 아래 include 섹션에 매니페스트 파일을 포함하도록 `publishOptions` 파일을 업데이트하십시오.

```
{
   "publishOptions": {
     "include": [
       "wwwroot",
       "Views",
       "Areas/**/Views",
       "appsettings.json",
       "web.config",
       "aws-windows-deployment-manifest.json"
     ]
   }
 }
```

앱 번들에 포함되도록 선언했기 때문에 애플리케이션 배포 방법을 추가로 구성할 수 있습니다. 배포 마법사가 지원하는 것 이상으로 배포를 사용자 지정할 수 있습니다. AWS**aws-windows-deployment-manifest.json 파일**에 대한 JSON 스키마를 정의했으며, Toolkit for Visual Studio를 설치할 때 설치 프로그램에서 스키마의 URL을 등록했습니다.

`windows-deployment-manifest.json`을 열면 [Schema] 드롭다운 상자에 선택한 스키마 URL이 표시됩니다. URL로 이동하여 매니페스트에 설정할 수 있는 항목의 전체 설명을 볼 수 있습니다. 스키마를 선택하면 매니페스트를 편집하는 동안 Visual Studio가 IntelliSense를 제공합니다.

지원되는 사용자 지정에는 애플리케이션을 실행할 IIS 애플리케이션 풀을 구성하는 기능이 있습니다. 다음 예제에서는 60분마다 프로세스를 재생하는 IIS 애플리케이션 풀("customPool")을 정의하고 `"appPool": "customPool"`을 사용하여 애플리케이션에 할당하는 방법을 보여줍니다.

```
{
  "manifestVersion": 1,
  "iisConfig": {
    "appPools": [
      {
        "name": "customPool",
        "recycling": {
          "regularTimeInterval": 60
        }
      }
    ]
  },
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "app",
        "parameters": {
          "appPool": "customPool"
        }
      }
    ]
  }
}
```

또한 매니페스트는 설치, 다시 시작 제거 작업 전후에 실행할 Windows PowerShell 스크립트를 선언할 수 있습니다. 예를 들어, 다음 매니페스트는 Windows PowerShell 스크립트 `PostInstallSetup.ps1`을 실행하여 ASP.NET Core 애플리케이션이 IIS에 배포된 후 추가 설정 작업을 수행합니다. 이처럼 스크립트를 추가할 때 `project.json` 파일에서와 같이 스크립트가 `aws-windows-deployment-manifest.json` 파일의 publishOptions 아래에 있는 include 섹션에 추가되도록 하십시오. 그렇지 않으면 스크립트가 dotnet CLI **publish** 명령의 일부로 포함되지 않습니다.

```
{
  "manifestVersion": 1,
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "app",
        "scripts": {
          "postInstall": {
            "file": "SetupScripts/PostInstallSetup.ps1"
          }
        }
      }
    ]
  }
}
```

## ebextensions
<a name="tkv-deploy-beanstalk-custom-netcore-ebextensions"></a>

Elastic Beanstalk **.ebextensions** 구성 파일은 다른 모든 Elastic Beanstalk 컨테이너와 마찬가지로 지원됩니다. ebextensions를 ASP.NET Core 애플리케이션에 포함하려면 `.ebextensions` 파일의 `include` 아래에 있는 `publishOptions` 섹션에 `project.json` 디렉터리를 추가하십시오. ebextensions 체크아웃에 대한 자세한 내용은 [Elastic Beanstalk 개발자 안내서](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html)를 참조하십시오.