

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

# Elastic Beanstalk를 사용하여 .NET Windows 애플리케이션 배포
<a name="create_deploy_NET"></a>

***AWS 개발자 센터에서 .NET* 확인**  
  
*.Net 개발자 센터*를 들러보셨나요? .NET의 모든 것을 위한 원스톱 숍입니다 AWS.  
자세한 내용은 [AWS 개발자 센터의 .NET을](https://aws.amazon.com/developer/language/net) 참조하세요.

이 장에서는 ASP.NET 및 .NET Core Windows 웹 애플리케이션을 구성하고 배포하는 방법에 대한 지침을 제공합니다 AWS Elastic Beanstalk. Elastic Beanstalk를 통해 Amazon Web Services를 사용하여 .NET (Windows) 웹 애플리케이션을 손쉽게 배포, 관리 및 규모 조정할 수 있습니다.

Elastic Beanstalk 명령줄 인터페이스(EB CLI)를 사용하거나 Elastic Beanstalk 콘솔을 사용하여 단 몇 분 만에 애플리케이션을 배포할 수 있습니다. Elastic Beanstalk 애플리케이션을 배포한 후 EB CLI를 계속 사용하여 애플리케이션 및 환경을 관리하거나 AWS CLI Elastic Beanstalk 콘솔 또는 APIs를 사용할 수 있습니다.

이 장에서는 다음 자습서를 제공합니다.
+ [Windows 기반의 .NET Core 애플리케이션에 대한 QuickStart](dotnet-quickstart.md) - EB CLI를 사용하여 *Hello World* .NET Core Windows 애플리케이션을 생성하고 배포하기 위한 단계별 지침입니다.
+ [ASP.NET에 대한 QuickStart](aspnet-quickstart.md) - AWS Toolkit for Visual Studio를 사용하여 *Hello World* ASP.NET 애플리케이션을 생성하고 배포하는 단계별 지침입니다.

Windows .NET Core 애플리케이션 개발과 관련된 도움이 필요한 경우 다음과 같은 다양한 리소스를 참조할 수 있습니다
+  [.NET 개발 포럼](https://forums.aws.amazon.com/forum.jspa?forumID=61) - 질문을 게시하고 피드백을 받습니다.
+ [.NET 개발자 센터](https://aws.amazon.com/net/) - 샘플 코드, 설명서, 도구 및 추가 리소스를 받을 수 있는 원스톱 숍입니다.
+ [AWS SDK for .NET 설명서](https://aws.amazon.com/documentation/sdk-for-net/) - SDK 설정 및 코드 샘플 실행, SDK의 기능, SDK의 API 작업에 대한 자세한 정보를 읽습니다.

**참고**  
이 플랫폼은 작업자 환경을 지원하지 않습니다. 자세한 내용은 [Elastic Beanstalk 작업자 환경](using-features-managing-env-tiers.md) 섹션을 참조하십시오.

**Topics**
+ [QuickStart: Windows 기반의 .NET Core 애플리케이션을 Elastic Beanstalk에 배포](dotnet-quickstart.md)
+ [QuickStart: Elastic Beanstalk에 ASP.NET 애플리케이션 배포](aspnet-quickstart.md)
+ [.NET 개발 환경 설정](dotnet-devenv.md)
+ [Elastic Beanstalk .NET Windows 플랫폼 사용](create_deploy_NET.container.console.md)
+ [.NET 애플리케이션 환경에 Amazon RDS DB 인스턴스 추가](create_deploy_NET.rds.md)
+ [는 AWS Toolkit for Visual Studio](dotnet-toolkit.md)
+ [온프레미스 .NET 애플리케이션을 Elastic Beanstalk로 마이그레이션](dotnet-onpremmigration.md)
+ [Elastic Beanstalk의 사용 중지된 Windows Server 구성 요소에 대한 권장 사항](dotnet-deprecation-recommendations.md)

# QuickStart: Windows 기반의 .NET Core 애플리케이션을 Elastic Beanstalk에 배포
<a name="dotnet-quickstart"></a>

이 QuickStart 자습서에서는 Windows에서 .NET Core 애플리케이션을 생성하고 AWS Elastic Beanstalk 환경에 배포하는 프로세스를 안내합니다.

**프로덕션용으로 사용 불가**  
예제는 설명용으로만 제공됩니다. 예제 애플리케이션을 프로덕션 환경에서 사용하지 마세요.

**Topics**
+ [AWS 계정](#dotnet-quickstart-aws-account)
+ [사전 조건](#dotnet-quickstart-prereq)
+ [1단계: Windows 기반의 .NET Core 애플리케이션 생성](#dotnet-quickstart-create-app)
+ [2단계: 로컬에서 애플리케이션 실행](#dotnet-quickstart-run-local)
+ [3단계: EB CLI를 사용하여 Windows 기반의 .NET Core 애플리케이션 배포](#dotnet-quickstart-deploy)
+ [4단계: Elastic Beanstalk에서 애플리케이션 실행](#dotnet-quickstart-run-eb-ap)
+ [5단계: 정리](#go-tutorial-cleanup)
+ [AWS 애플리케이션을 위한 리소스](#dotnet-quickstart-eb-resources)
+ [다음 단계](#dotnet-quickstart-next-steps)
+ [Elastic Beanstalk 콘솔을 사용하여 배포](#dotnet-quickstart-console)

## AWS 계정
<a name="dotnet-quickstart-aws-account"></a>

아직 AWS 고객이 아닌 경우 AWS 계정을 생성해야 합니다. 가입하면 Elastic Beanstalk 및 필요한 기타 AWS 서비스에 액세스할 수 있습니다.

이미 AWS 계정이 있는 경우 로 이동할 수 있습니다[사전 조건](#dotnet-quickstart-prereq).

### AWS 계정 생성
<a name="dotnet-quickstart-aws-account-procedure"></a>

#### 에 가입 AWS 계정
<a name="sign-up-for-aws"></a>

이 없는 경우 다음 단계를 AWS 계정완료하여 생성합니다.

**에 가입하려면 AWS 계정**

1. [https://portal.aws.amazon.com/billing/signup](https://portal.aws.amazon.com/billing/signup)을 엽니다.

1. 온라인 지시 사항을 따르세요.

   등록 절차 중 전화 또는 텍스트 메시지를 받고 전화 키패드로 확인 코드를 입력하는 과정이 있습니다.

   에 가입하면 AWS 계정*AWS 계정 루트 사용자*이 생성됩니다. 루트 사용자에게는 계정의 모든 AWS 서비스 및 리소스에 액세스할 권한이 있습니다. 보안 모범 사례는 사용자에게 관리 액세스 권한을 할당하고, 루트 사용자만 사용하여 [루트 사용자 액세스 권한이 필요한 작업](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)을 수행하는 것입니다.

AWS 는 가입 프로세스가 완료된 후 확인 이메일을 보냅니다. 언제든지 [https://aws.amazon.com/](https://aws.amazon.com/)으로 이동하고 **내 계정**을 선택하여 현재 계정 활동을 확인하고 계정을 관리할 수 있습니다.

#### 관리자 액세스 권한이 있는 사용자 생성
<a name="create-an-admin"></a>

에 가입한 후 일상적인 작업에 루트 사용자를 사용하지 않도록 관리 사용자를 AWS 계정보호 AWS IAM Identity Center, AWS 계정 루트 사용자활성화 및 생성합니다.

**보안 AWS 계정 루트 사용자**

1.  **루트 사용자를** 선택하고 AWS 계정 이메일 주소를 입력하여 계정 소유자[AWS Management Console](https://console.aws.amazon.com/)로에 로그인합니다. 다음 페이지에서 비밀번호를 입력합니다.

   루트 사용자를 사용하여 로그인하는 데 도움이 필요하면 *AWS Sign-In 사용 설명서*의 [루트 사용자로 로그인](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial)을 참조하세요.

1. 루트 사용자의 다중 인증(MFA)을 활성화합니다.

   지침은 *IAM 사용 설명서*의 [AWS 계정 루트 사용자(콘솔)에 대한 가상 MFA 디바이스 활성화를 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html).

**관리자 액세스 권한이 있는 사용자 생성**

1. IAM Identity Center를 활성화합니다.

   지침은 *AWS IAM Identity Center 사용 설명서*의 [AWS IAM Identity Center설정](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html)을 참조하세요.

1. IAM Identity Center에서 사용자에게 관리 액세스 권한을 부여합니다.

   를 자격 증명 소스 IAM Identity Center 디렉터리 로 사용하는 방법에 대한 자습서는 사용 *AWS IAM Identity Center 설명서*[의 기본값으로 사용자 액세스 구성을 IAM Identity Center 디렉터리](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) 참조하세요.

**관리 액세스 권한이 있는 사용자로 로그인**
+ IAM IDentity Center 사용자로 로그인하려면 IAM Identity Center 사용자를 생성할 때 이메일 주소로 전송된 로그인 URL을 사용합니다.

  IAM Identity Center 사용자를 사용하여 로그인하는 데 도움이 필요하면 *AWS Sign-In 사용 설명서*[의 AWS 액세스 포털에 로그인](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html)을 참조하세요.

**추가 사용자에게 액세스 권한 할당**

1. IAM Identity Center에서 최소 권한 적용 모범 사례를 따르는 권한 세트를 생성합니다.

   지침은 *AWS IAM Identity Center 사용 설명서*의 [Create a permission set](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html)를 참조하세요.

1. 사용자를 그룹에 할당하고, 그룹에 Single Sign-On 액세스 권한을 할당합니다.

   지침은 *AWS IAM Identity Center 사용 설명서*의 [그룹 추가](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html)를 참조하세요.

## 사전 조건
<a name="dotnet-quickstart-prereq"></a>

이 설명서의 절차를 수행하기 위해서는 실행 명령줄을 입력할 쉘 또는 터미널이 필요합니다. 명령은 프롬프트 기호(>)와 해당하는 경우 현재 디렉터리 이름 뒤에 목록으로 표시됩니다.

```
C:\eb-project> this is a command
this is output
```

### EB CLI
<a name="dotnet-quickstart-prereq.ebcli"></a>

또한 본 자습서는 Elastic Beanstalk 명령줄 인터페이스(EB CLI)를 사용합니다. EB CLI 설치 및 구성에 대한 자세한 내용은 [설정 스크립트를 사용하여 EB CLI 설치(권장)](eb-cli3.md#eb-cli3-install) 및 [EB CLI 구성](eb-cli3-configuration.md) 단원을 참조하세요.

### Windows 기반의 .NET Core
<a name="dotnet-quickstart-prereq.runtime"></a>

로컬 시스템에 .NET SDK가 설치되어 있지 않은 경우 [.NET 설명서](https://learn.microsoft.com/en-us/dotnet/) 웹 사이트의 [.NET 다운로드](https://dotnet.microsoft.com/en-us/download) 링크를 따라 설치할 수 있습니다.

다음 명령을 실행하여 .NET SDK 설치를 확인합니다.

```
C:\> dotnet --info
```

## 1단계: Windows 기반의 .NET Core 애플리케이션 생성
<a name="dotnet-quickstart-create-app"></a>

프로젝트 디렉터리를 만듭니다.

```
C:\> mkdir eb-dotnetcore
C:\> cd eb-dotnetcore
```

그런 후 다음 명령을 실행하여 Hello World RESTful 웹 서비스 애플리케이션 샘플을 생성합니다.

```
C:\eb-dotnetcore> dotnet new web --name HelloElasticBeanstalk
C:\eb-dotnetcore> cd HelloElasticBeanstalk
```

## 2단계: 로컬에서 애플리케이션 실행
<a name="dotnet-quickstart-run-local"></a>

애플리케이션을 로컬에서 실행하려면 다음 명령을 입력합니다.

```
C:\eb-dotnetcore\HelloElasticBeasntalk> dotnet run
```

출력은 다음 텍스트와 같습니다.

```
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: https://localhost:7222
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5228
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
      Content root path: C:\Users\Administrator\eb-dotnetcore\HelloElasticBeanstalk
```

**참고**  
이 `dotnet` 명령은 애플리케이션을 로컬에서 실행할 때 무작위로 포트를 선택합니다. 이 예제에서 포트는 5228입니다. 애플리케이션을 Elastic Beanstalk 환경에 배포하면 애플리케이션은 포트 5000에서 실행됩니다.

웹 브라우저에 `http://localhost:port` URL 주소를 입력합니다. 이 특정 예제의 경우 명령은 `http://localhost:5228`입니다. 웹 브라우저에 ‘Hello World\$1’가 표시됩니다.

## 3단계: EB CLI를 사용하여 Windows 기반의 .NET Core 애플리케이션 배포
<a name="dotnet-quickstart-deploy"></a>

다음 명령을 실행하여 이 애플리케이션에 대한 Elastic Beanstalk 환경을 생성합니다.

 

**환경을 생성하고 Windows 기반의 .NET Core 애플리케이션을 배포하려면**

1. `HelloElasticBeanstalk` 디렉터리에서 다음 명령을 실행하여 애플리케이션을 게시하고 압축합니다.

   ```
   C:\eb-dotnetcore\HelloElasticBeasntalk> dotnet publish -o site
   C:\eb-dotnetcore\HelloElasticBeasntalk> cd site
   C:\eb-dotnetcore\HelloElasticBeasntalk\site> Compress-Archive -Path * -DestinationPath ../site.zip
   C:\eb-dotnetcore\HelloElasticBeasntalk\site> cd ..
   ```

1. 다음 콘텐츠로 `aws-windows-deployment-manifest.json`이라는 `HelloElasticBeanstalk`에서 새로운 파일을 생성합니다.

   ```
   {
       "manifestVersion": 1,
       "deployments": {
           "aspNetCoreWeb": [
           {
               "name": "test-dotnet-core",
               "parameters": {
                   "appBundle": "site.zip",
                   "iisPath": "/",
                   "iisWebSite": "Default Web Site"
               }
           }
           ]
       }
   }
   ```

1. **eb init** 명령으로 EB CLI 리포지토리를 초기화합니다.

   ```
   C:\eb-dotnetcore\HelloElasticBeasntalk> eb init -p iis dotnet-windows-server-tutorial --region us-east-2
   ```

   이 명령은 이름이 `dotnet-windows-server-tutorial`인 애플리케이션을 생성하고 최신 Windows Server 플랫폼 버전을 통해 환경을 생성하도록 로컬 리포지토리를 구성합니다.

1. 환경을 만들고 **eb create**로 해당 환경에 애플리케이션을 배포합니다. Elastic Beanstalk는 애플리케이션에 대한 zip 파일을 자동으로 빌드하고 포트 5000에서 시작합니다.

   ```
   C:\eb-dotnetcore\HelloElasticBeasntalk> eb create dotnet-windows-server-env
   ```

   Elastic Beanstalk에서 환경을 생성하는 데 약 5분이 걸립니다.

## 4단계: Elastic Beanstalk에서 애플리케이션 실행
<a name="dotnet-quickstart-run-eb-ap"></a>

환경 생성 프로세스가 완료되면 **eb open**으로 웹 사이트를 엽니다.

```
C:\eb-dotnetcore\HelloElasticBeasntalk> eb open
```

축하합니다\$1 Elastic Beanstalk를 사용하여 Windows 기반의 .NET Core 애플리케이션을 배포했습니다\$1 그러면 애플리케이션에 대해 생성된 도메인 이름을 사용하여 브라우저 창이 열립니다.

## 5단계: 정리
<a name="go-tutorial-cleanup"></a>

애플리케이션 작업을 완료하면 환경을 종료할 수 있습니다. Elastic Beanstalk는 환경과 연결된 모든 AWS 리소스를 종료합니다.

EB CLI를 사용하여 Elastic Beanstalk 환경을 종료하려면 다음 명령을 실행하세요.

```
C:\eb-dotnetcore\HelloElasticBeasntalk> eb terminate
```

## AWS 애플리케이션을 위한 리소스
<a name="dotnet-quickstart-eb-resources"></a>

단일 인스턴스 애플리케이션을 생성했습니다. 이 애플리케이션은 단일 EC2 인스턴스를 사용하는 간단한 샘플 애플리케이션 역할을 하므로 로드 밸런싱이나 오토 스케일링이 필요하지 않습니다. 단일 인스턴스 애플리케이션의 경우 Elastic Beanstalk는 다음 AWS 리소스를 생성합니다.
+ **EC2 인스턴스** - 선택한 플랫폼에서 웹 앱을 실행하도록 구성된 Amazon EC2 가상 머신입니다.

  특정 언어 버전, 프레임워크, 웹 컨테이너 또는 조합을 지원하도록 각 플랫폼마다 실행하는 소프트웨어, 구성 파일 및 스크립트 세트가 다릅니다. 대부분의 플랫폼에서는 웹 앱 앞의 웹 트래픽을 처리하고, 웹 앱으로 요청을 전달하고, 정적 자산을 제공하고, 액세스 및 오류 로그를 생성하는 역방향 프록시로 Apache 또는 nginx를 사용합니다.
+ **인스턴스 보안 그룹** - 포트 80에서 수신 트래픽을 허용하도록 구성된 Amazon EC2 보안 그룹입니다. 이 리소스를 통해 로드 밸런서의 HTTP 트래픽이 웹 앱을 실행하는 EC2 인스턴스에 도달할 수 있습니다. 기본적으로 다른 포트에서는 트래픽이 허용되지 않습니다.
+ **Amazon S3 버킷(Amazon S3 bucket)** - Elastic Beanstalk 사용 시 생성된 소스 코드, 로그 및 기타 아티팩트의 스토리지 위치입니다.
+ **Amazon CloudWatch 경보** - 환경의 인스턴스에 대한 로드를 모니터링하는 두 개의 CloudWatch 경보로, 로드가 너무 높거나 너무 낮은 경우 트리거됩니다. 경보가 트리거되면 이에 대한 응답으로 Auto Scaling 그룹이 스케일 업 또는 축소됩니다.
+ **CloudFormation 스택** - Elastic Beanstalk는 CloudFormation 를 사용하여 환경에서 리소스를 시작하고 구성 변경 사항을 전파합니다. 리소스는 [CloudFormation 콘솔](https://console.aws.amazon.com/cloudformation)에서 볼 수 있는 템플릿에서 정의됩니다.
+  **도메인 이름(Domain name)** - **subdomain*.*region*.elasticbeanstalk.com* 형식으로 웹 앱으로 라우팅되는 도메인 이름입니다.

이러한 모든 리소스는 Elastic Beanstalk에서 관리합니다. 사용자가 환경을 종료하면 Elastic Beanstalk는 환경에 있는 모든 리소스를 종료합니다.

## 다음 단계
<a name="dotnet-quickstart-next-steps"></a>

애플리케이션을 실행하는 환경이 있으면 언제든 다른 애플리케이션 또는 애플리케이션의 새 버전을 배포할 수 있습니다. EC2 인스턴스를 프로비저닝하거나 다시 시작할 필요가 없기 때문에 새 애플리케이션 버전을 매우 빠르게 배포할 수 있습니다. Elastic Beanstalk 콘솔을 사용하여 새로운 환경을 탐색할 수도 있습니다. 자세한 단계는 이 가이드의 *시작하기* 장의 [환경 탐색](GettingStarted.md#GettingStarted.Explore)을 참조하세요.

**더 많은 자습서 보기**  
다른 예제 애플리케이션으로 다른 자습서를 사용하려는 경우 [ASP.NET에 대한 QuickStart](aspnet-quickstart.md) 단원을 참조하세요.

샘플 애플리케이션을 하나 이상 배포하고 로컬에서 Windows 기반의 .NET Core 애플리케이션을 개발하고 실행할 준비가 된 경우 [.NET 개발 환경 설정](dotnet-devenv.md) 단원을 참조하세요.

## Elastic Beanstalk 콘솔을 사용하여 배포
<a name="dotnet-quickstart-console"></a>

Elastic Beanstalk 콘솔을 사용하여 샘플 애플리케이션을 시작할 수도 있습니다. 자세한 단계는 이 가이드의 *시작하기* 장의 [예제 애플리케이션 생성](GettingStarted.md#GettingStarted.CreateApp)을 참조하세요.

# QuickStart: Elastic Beanstalk에 ASP.NET 애플리케이션 배포
<a name="aspnet-quickstart"></a>

이 QuickStart 자습서에서는 ASP.NET 애플리케이션을 생성하고 AWS Elastic Beanstalk 환경에 배포하는 프로세스를 안내합니다.

**프로덕션용으로 사용 불가**  
예제는 설명용으로만 제공됩니다. 예제 애플리케이션을 프로덕션 환경에서 사용하지 마세요.

**Topics**
+ [내 AWS 계정](#aspnet-quickstart-aws-account)
+ [사전 조건](#aspnet-quickstart-prereq)
+ [1단계: ASP.NET 애플리케이션 생성](#aspnet-quickstart-create-app)
+ [2단계: 로컬에서 애플리케이션 실행](#aspnet-quickstart-run-local)
+ [3단계:를 사용하여 ASP.NET 애플리케이션 배포 AWS Toolkit for Visual Studio](#aspnet-quickstart-deploy)
+ [4단계: Elastic Beanstalk에서 애플리케이션 실행](#aspnet-quickstart-run-eb-ap)
+ [5단계: 정리](#aspnet-quickstart-cleanup)
+ [AWS 애플리케이션을 위한 리소스](#aspnet-quickstart-eb-resources)
+ [다음 단계](#aspnet-quickstart-next-steps)
+ [Elastic Beanstalk 콘솔을 사용하여 배포](#aspnet-quickstart-console)

## 내 AWS 계정
<a name="aspnet-quickstart-aws-account"></a>

아직 AWS 고객이 아닌 경우 AWS 계정을 생성해야 합니다. 가입하면 Elastic Beanstalk 및 필요한 기타 AWS 서비스에 액세스할 수 있습니다.

이미 AWS 계정이 있는 경우 로 이동할 수 있습니다[사전 조건](#aspnet-quickstart-prereq).

### AWS 계정 생성
<a name="aspnet-quickstart-aws-account-procedure"></a>

#### 에 가입 AWS 계정
<a name="sign-up-for-aws"></a>

이 없는 경우 다음 단계를 AWS 계정완료하여 생성합니다.

**에 가입하려면 AWS 계정**

1. [https://portal.aws.amazon.com/billing/signup](https://portal.aws.amazon.com/billing/signup)을 엽니다.

1. 온라인 지시 사항을 따르세요.

   등록 절차 중 전화 또는 텍스트 메시지를 받고 전화 키패드로 확인 코드를 입력하는 과정이 있습니다.

   에 가입하면 AWS 계정*AWS 계정 루트 사용자*이 생성됩니다. 루트 사용자에게는 계정의 모든 AWS 서비스 및 리소스에 액세스할 권한이 있습니다. 보안 모범 사례는 사용자에게 관리 액세스 권한을 할당하고, 루트 사용자만 사용하여 [루트 사용자 액세스 권한이 필요한 작업](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)을 수행하는 것입니다.

AWS 는 가입 프로세스가 완료된 후 확인 이메일을 보냅니다. 언제든지 [https://aws.amazon.com/](https://aws.amazon.com/)으로 이동하고 **내 계정**을 선택하여 현재 계정 활동을 확인하고 계정을 관리할 수 있습니다.

#### 관리자 액세스 권한이 있는 사용자 생성
<a name="create-an-admin"></a>

에 가입한 후 일상적인 작업에 루트 사용자를 사용하지 않도록 관리 사용자를 AWS 계정보호 AWS IAM Identity Center, AWS 계정 루트 사용자활성화 및 생성합니다.

**보안 AWS 계정 루트 사용자**

1.  **루트 사용자를** 선택하고 AWS 계정 이메일 주소를 입력하여 계정 소유자[AWS Management Console](https://console.aws.amazon.com/)로에 로그인합니다. 다음 페이지에서 비밀번호를 입력합니다.

   루트 사용자를 사용하여 로그인하는 데 도움이 필요하면 *AWS Sign-In 사용 설명서*의 [루트 사용자로 로그인](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial)을 참조하세요.

1. 루트 사용자의 다중 인증(MFA)을 활성화합니다.

   지침은 *IAM 사용 설명서*의 [AWS 계정 루트 사용자(콘솔)에 대한 가상 MFA 디바이스 활성화를 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html).

**관리자 액세스 권한이 있는 사용자 생성**

1. IAM Identity Center를 활성화합니다.

   지침은 *AWS IAM Identity Center 사용 설명서*의 [AWS IAM Identity Center설정](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html)을 참조하세요.

1. IAM Identity Center에서 사용자에게 관리 액세스 권한을 부여합니다.

   를 자격 증명 소스 IAM Identity Center 디렉터리 로 사용하는 방법에 대한 자습서는 사용 *AWS IAM Identity Center 설명서*[의 기본값으로 사용자 액세스 구성을 IAM Identity Center 디렉터리](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) 참조하세요.

**관리 액세스 권한이 있는 사용자로 로그인**
+ IAM IDentity Center 사용자로 로그인하려면 IAM Identity Center 사용자를 생성할 때 이메일 주소로 전송된 로그인 URL을 사용합니다.

  IAM Identity Center 사용자를 사용하여 로그인하는 데 도움이 필요하면 *AWS Sign-In 사용 설명서*[의 AWS 액세스 포털에 로그인](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html)을 참조하세요.

**추가 사용자에게 액세스 권한 할당**

1. IAM Identity Center에서 최소 권한 적용 모범 사례를 따르는 권한 세트를 생성합니다.

   지침은 *AWS IAM Identity Center 사용 설명서*의 [Create a permission set](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html)를 참조하세요.

1. 사용자를 그룹에 할당하고, 그룹에 Single Sign-On 액세스 권한을 할당합니다.

   지침은 *AWS IAM Identity Center 사용 설명서*의 [그룹 추가](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html)를 참조하세요.

## 사전 조건
<a name="aspnet-quickstart-prereq"></a>

이 QuickStart 자습서에서는 "Hello World" 애플리케이션을 생성하고 Visual Studio 및를 사용하여 Elastic Beanstalk 환경에 배포하는 방법을 안내합니다 AWS Toolkit for Visual Studio.

### Visual Studio
<a name="aspnet-quickstart-prereq.vs"></a>

Visual Studio를 다운로드하고 설치하려면 Visual Studio [다운로드 페이지](https://visualstudio.microsoft.com/downloads/)의 지침을 따릅니다. 이 예제에서는 Visual Studio 2022를 사용합니다. Visual Studio 설치 중에 다음과 같은 특정 항목을 선택합니다.
+ **워크로드** 탭에서 **ASP.NET 및 웹 개발**을 선택합니다.
+ **개별 구성 요소** 탭에서 **.NET Framework 4.8 개발 도구**와 **.NET Framework 프로젝트 및 항목 템플릿**을 선택합니다.

### AWS Toolkit for Visual Studio
<a name="aspnet-quickstart-prereq.aws-vs-tk"></a>

다운로드 및 설정하려면 AWS Toolkit for Visual Studio 사용 설명서의 [시작하기](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/getting-set-up.html) 주제의 지침을 AWS Toolkit for Visual Studio 따르세요.

## 1단계: ASP.NET 애플리케이션 생성
<a name="aspnet-quickstart-create-app"></a>

그 다음, Elastic Beanstalk 환경에 배포할 애플리케이션을 생성합니다. ‘Hello World’ ASP.NET 웹 애플리케이션을 생성합니다.

**ASP.NET 애플리케이션을 생성하려면**

1. Visual Studio를 시작합니다. **파일** 메뉴에서 **신규**를 선택한 다음, **프로젝트**를 선택합니다.

1. **새 프로젝트 생성** 대화 상자가 표시됩니다. **ASP.NET 웹 애플리케이션(.NET Framework)**을 선택한 후 **다음**을 선택합니다.

1. **새 프로젝트 구성** 대화 상자에서 **프로젝트 이름**에 `eb-aspnet`을 입력합니다. **프레임워크** 드롭다운 메뉴에서 **.NET Framework 4.8**을 선택한 다음, **생성**을 선택합니다.

   프로젝트 디렉터리를 기록합니다. 이 예제에서 프로젝트 디렉터리 이름은 `C:\Users\Administrator\source\repos\eb-aspnet\eb-aspnet`입니다.

1. **새 ASP.NET 웹 애플리케이션 생성** 대화 상자가 표시됩니다. **비어 있는** 템플릿을 선택합니다. 그런 다음 **생성**을 선택합니다.

   현재 Visual Studio를 사용하여 비어 있는 ASP.NET 웹 애플리케이션 프로젝트를 생성했습니다. 다음으로 ASP.NET 웹 애플리케이션의 진입점 역할을 하는 웹 양식을 생성합니다.

1. **프로젝트** 메뉴에서 **새 항목 추가**를 선택합니다. **새 항목 추가** 페이지에서 **웹 양식**을 선택하고 이름을 `Default.aspx`로 지정합니다. 그런 다음 **추가**를 선택합니다.

1. 다음을 `Default.aspx:`로 추가합니다.

   ```
   <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="eb_aspnet.Default" %>
   
   <!DOCTYPE html>
   
   <html xmlns="https://www.w3.org/1999/xhtml">
   <head runat="server">
       <title>Hello Elastic Beanstalk!</title>
   </head>
   <body>
       <form id="body" runat="server">
           <div>
               Hello Elastic Beanstalk! This is an ASP.NET on Windows Server application.
           </div>
       </form>
   </body>
   </html>
   ```

## 2단계: 로컬에서 애플리케이션 실행
<a name="aspnet-quickstart-run-local"></a>

Visual Studio의 **디버그** 메뉴에서 **디버깅 시작**을 선택하여 애플리케이션을 로컬에서 실행합니다. 페이지에 ‘Hello Elastic Beanstalk\$1 This is an ASP.NET on Windows Server application.’이 표시됩니다.

## 3단계:를 사용하여 ASP.NET 애플리케이션 배포 AWS Toolkit for Visual Studio
<a name="aspnet-quickstart-deploy"></a>

다음 단계에 따라 Elastic Beanstalk 환경을 생성하고 해당 환경에 새 애플리케이션을 배포하세요.

**환경을 생성하고 ASP.NET 애플리케이션을 배포하려면**

1. **솔루션 탐색기**에서 애플리케이션을 마우스 오른쪽 버튼으로 클릭한 후 ** AWS Elastic Beanstalk에 게시**를 선택합니다.

1. 새로운 Elastic Beanstalk 애플리케이션 및 환경의 이름을 선택합니다.

1. 이후에는 Elastic Beanstalk에서 제공하는 기본값으로 진행하거나 원하는 옵션 및 설정을 수정할 수 있습니다.

1. **검토** 페이지에서 **배포**를 선택합니다. 이렇게 하면 ASP.NET 웹 애플리케이션이 패키징되어 Elastic Beanstalk에 배포됩니다.

   Elastic Beanstalk에서 환경을 생성하는 데 약 5분이 걸립니다. Elastic Beanstalk 배포 기능은 새롭게 개발된 코드에 사용할 수 있게 될 때까지 환경을 모니터링합니다. **Env:<**environment name**>** 탭에서 환경의 상태를 확인할 수 있습니다.

## 4단계: Elastic Beanstalk에서 애플리케이션 실행
<a name="aspnet-quickstart-run-eb-ap"></a>

환경을 생성하는 프로세스가 완료되면 **Env:<**environment name**>** 탭에 애플리케이션을 시작하는 도메인 URL 등의 환경 및 애플리케이션에 대한 정보가 표시됩니다. 이 탭에서 이 URL을 선택하거나 복사하여 웹 브라우저에 붙여넣습니다.

축하합니다\$1 Elastic Beanstalk를 사용하여 ASP.NET 애플리케이션을 배포했습니다\$1

## 5단계: 정리
<a name="aspnet-quickstart-cleanup"></a>

애플리케이션 작업을 마치면 AWS Toolkit for Visual Studio에서 환경을 종료할 수 있습니다.

**환경을 종료하려면**

1. **AWS Explorer**에서 Elastic Beanstalk 노드와 애플리케이션 노드를 확장합니다. 애플리케이션 환경을 마우스 오른쪽 버튼으로 클릭하고 **Terminate Environment(환경 종료)**를 선택합니다.

1. 메시지가 표시되면 **예**를 선택하여 환경을 종료하고자 함을 확인합니다. Elastic Beanstalk가 환경에서 실행 중인 AWS 리소스를 종료하는 데 몇 분 정도 걸립니다.

## AWS 애플리케이션을 위한 리소스
<a name="aspnet-quickstart-eb-resources"></a>

단일 인스턴스 애플리케이션을 생성했습니다. 이 애플리케이션은 단일 EC2 인스턴스를 사용하는 간단한 샘플 애플리케이션 역할을 하므로 로드 밸런싱이나 오토 스케일링이 필요하지 않습니다. 단일 인스턴스 애플리케이션의 경우 Elastic Beanstalk는 다음 AWS 리소스를 생성합니다.
+ **EC2 인스턴스** - 선택한 플랫폼에서 웹 앱을 실행하도록 구성된 Amazon EC2 가상 머신입니다.

  특정 언어 버전, 프레임워크, 웹 컨테이너 또는 조합을 지원하도록 각 플랫폼마다 실행하는 소프트웨어, 구성 파일 및 스크립트 세트가 다릅니다. 대부분의 플랫폼에서는 웹 앱 앞의 웹 트래픽을 처리하고, 웹 앱으로 요청을 전달하고, 정적 자산을 제공하고, 액세스 및 오류 로그를 생성하는 역방향 프록시로 Apache 또는 nginx를 사용합니다.
+ **인스턴스 보안 그룹** - 포트 80에서 수신 트래픽을 허용하도록 구성된 Amazon EC2 보안 그룹입니다. 이 리소스를 통해 로드 밸런서의 HTTP 트래픽이 웹 앱을 실행하는 EC2 인스턴스에 도달할 수 있습니다. 기본적으로 다른 포트에서는 트래픽이 허용되지 않습니다.
+ **Amazon S3 버킷(Amazon S3 bucket)** - Elastic Beanstalk 사용 시 생성된 소스 코드, 로그 및 기타 아티팩트의 스토리지 위치입니다.
+ **Amazon CloudWatch 경보** - 환경의 인스턴스에 대한 로드를 모니터링하는 두 개의 CloudWatch 경보로, 로드가 너무 높거나 너무 낮은 경우 트리거됩니다. 경보가 트리거되면 이에 대한 응답으로 Auto Scaling 그룹이 스케일 업 또는 축소됩니다.
+ **CloudFormation 스택** - Elastic Beanstalk는 CloudFormation 를 사용하여 환경에서 리소스를 시작하고 구성 변경을 전파합니다. 리소스는 [CloudFormation 콘솔](https://console.aws.amazon.com/cloudformation)에서 볼 수 있는 템플릿에서 정의됩니다.
+  **도메인 이름(Domain name)** - **subdomain*.*region*.elasticbeanstalk.com* 형식으로 웹 앱으로 라우팅되는 도메인 이름입니다.

이러한 모든 리소스는 Elastic Beanstalk에서 관리합니다. 사용자가 환경을 종료하면 Elastic Beanstalk는 환경에 있는 모든 리소스를 종료합니다.

## 다음 단계
<a name="aspnet-quickstart-next-steps"></a>

애플리케이션을 실행하는 환경이 있으면 언제든 다른 애플리케이션 또는 애플리케이션의 새 버전을 배포할 수 있습니다. EC2 인스턴스를 프로비저닝하거나 다시 시작할 필요가 없기 때문에 새 애플리케이션 버전을 매우 빠르게 배포할 수 있습니다. Elastic Beanstalk 콘솔을 사용하여 새로운 환경을 탐색할 수도 있습니다. 자세한 단계는 이 가이드의 *시작하기* 장의 [환경 탐색](GettingStarted.md#GettingStarted.Explore)을 참조하세요.

**더 많은 자습서 보기**  
다른 예제 애플리케이션으로 다른 자습서를 사용하려는 경우 [Windows 기반의 .NET Core 애플리케이션에 대한 QuickStart](dotnet-quickstart.md) 단원을 참조하세요.

샘플 애플리케이션을 하나 이상 배포하고 ASP.NET 애플리케이션을 로컬로 개발하고 실행할 준비가 되면 [.NET 개발 환경 설정](dotnet-devenv.md) 단원을 참조하세요.

## Elastic Beanstalk 콘솔을 사용하여 배포
<a name="aspnet-quickstart-console"></a>

Elastic Beanstalk 콘솔을 사용하여 샘플 애플리케이션을 시작할 수도 있습니다. 자세한 단계는 이 가이드의 *시작하기* 장의 [예제 애플리케이션 생성](GettingStarted.md#GettingStarted.CreateApp)을 참조하세요.

# .NET 개발 환경 설정
<a name="dotnet-devenv"></a>

이 주제에서는 AWS Elastic Beanstalk로 배포하기 전에 로컬에서 애플리케이션을 테스트하도록 .NET Windows 개발 환경을 설정하는 방법에 대한 지침을 제공합니다. 또한 유용한 도구에 대한 설치 지침을 제공하는 웹 사이트도 알려줍니다.

**Topics**
+ [IDE 설치](#dotnet-devenv-ide)
+ [설치 AWS Toolkit for Visual Studio](#dotnet-devenv-toolkit)

애플리케이션 내에서 AWS 리소스를 관리해야 하는 경우 .NET용 AWS SDK를 설치합니다. 예를 들어, Amazon S3를 사용하여 데이터를 저장 및 검색할 수 있습니다.

 AWS SDK for .NET을 사용하면 Visual Studio 프로젝트 템플릿, . AWS NET 라이브러리, C\$1 코드 샘플 및 설명서가 포함된 다운로드 가능한 단일 패키지로 몇 분 안에 시작할 수 있습니다. 라이브러리를 사용하여 애플리케이션을 구축하는 방법에 대한 실습 예제가 C\$1에 나와 있습니다. 라이브러리와 코드 샘플을 사용하는 방법을 익힐 수 있도록 온라인 비디오 자습서와 참조 설명서가 제공됩니다.

자세한 내용 및 설치 지침은 [AWS SDK for .NET 홈페이지](https://aws.amazon.com/sdk-for-net/)를 참조하세요.

## IDE 설치
<a name="dotnet-devenv-ide"></a>

IDE(통합 개발 환경)에는 애플리케이션 개발을 촉진하는 다양한 기능이 있습니다. .NET 개발용 IDE를 사용한 적이 없는 경우 Visual Studio Community를 시작해 보십시오.

[Visual Studio Community](https://www.visualstudio.com/vs/community/) 페이지에서 Visual Studio Community를 다운로드하고 설치하십시오.

## 설치 AWS Toolkit for Visual Studio
<a name="dotnet-devenv-toolkit"></a>

[AWS Toolkit for Visual Studio](dotnet-toolkit.md)는 개발자가를 사용하여 .NET 애플리케이션을 더 쉽게 개발, 디버깅 및 배포할 수 있는 Visual Studio IDE용 오픈 소스 플러그인입니다 AWS. 설치 지침은 [Toolkit for Visual Studio 홈페이지](https://aws.amazon.com/visualstudio/)를 참조하십시오.

# Elastic Beanstalk .NET Windows 플랫폼 사용
<a name="create_deploy_NET.container.console"></a>

이 주제에서는 Elastic Beanstalk에서 ASP.NET 및 .NET Core Windows 웹 애플리케이션을 구성, 빌드 및 실행하는 방법을 설명합니다.

AWS Elastic Beanstalk 는 .NET 프로그래밍 프레임워크 및 Windows Server의 다양한 버전에 대해 여러 플랫폼을 지원합니다. 전체 목록은 *AWS Elastic Beanstalk 플랫폼* 문서의 [IIS를 사용하는 Windows Server의 .NET](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.net) 단원을 참조하세요.

Elastic Beanstalk에서는 Elastic Beanstalk 환경의 EC2 인스턴스에서 실행하는 소프트웨어를 사용자 지정하는 데 사용할 수 있는 [구성 옵션](command-options.md)을 제공합니다. 애플리케이션에 필요한 환경 변수를 구성하고, Amazon S3에 대한 로그 교체를 활성화하고, .NET Framework 설정을 지정할 수 있습니다.

Elastic Beanstalk 콘솔에서 [실행 환경의 구성 수정](environment-configuration-methods-after.md)을 위해 구성 옵션을 사용할 수 있습니다. [저장된 구성](environment-configuration-savedconfig.md)을 사용해 설정을 저장하면 환경 종료 시 구성이 훼손되지 않도록 할 수 있으며, 추후 기타 환경에서도 적용할 수 있습니다.

소스 코드에 설정을 저장하려면 [구성 파일](ebextensions.md)을 포함시킬 수 있습니다. 구성 파일 설정은 환경을 생성하거나 애플리케이션을 배포할 때마다 적용됩니다. 구성 파일을 사용하여 패키지를 설치하거나, 스크립트를 실행하거나, 배포 중 기타 인스턴스 사용자 지정 작업을 수행할 수 있습니다.

Elastic Beanstalk 콘솔에 적용된 설정이 구성 파일에 적용된 동일한 설정(있는 경우)을 덮어씁니다. 이렇게 함으로써 구성 파일은 기본 설정을 갖는 동시에 콘솔에서 환경 특정 설정으로 설정을 덮어 쓸 수 있습니다. 우선 적용 및 설정을 변경하는 다른 방법에 대한 자세한 내용은 [구성 옵션](command-options.md) 단원을 참조하십시오.

## Elastic Beanstalk 콘솔에서 .NET 환경 구성
<a name="dotnet-console"></a>

Elastic Beanstalk 콘솔을 사용하여 Amazon S3에 대한 로그 교체를 활성화하고, 애플리케이션에서 읽을 수 있도록 환경 변수를 구성하고, .NET Framework 설정을 변경할 수 있습니다.

**Elastic Beanstalk 콘솔에서 .NET 환경을 구성하려면**

1. [Elastic Beanstalk 콘솔](https://console.aws.amazon.com/elasticbeanstalk)을 열고 **리전** 목록에서를 선택합니다 AWS 리전.

1. 탐색 창에서 **환경**을 선택한 다음 목록에서 환경의 이름을 선택합니다.

1. 탐색 창에서 **구성**을 선택합니다.

1. **업데이트, 모니터링 및 로깅** 구성 범주에서 **편집**을 선택합니다.

### 컨테이너 옵션
<a name="dotnet-console-framework"></a>
+ **대상 .NET 런타임** – CLR v2를 실행하려면 `2.0`으로 설정합니다.
+ **32비트 애플리케이션 활성화** – 32비트 애플리케이션을 실행하려면 `True`로 설정합니다.

### 로그 옵션
<a name="dotnet-console-logs"></a>

로그 옵션 섹션에는 다음 두 가지 설정이 있습니다.
+ **인스턴스 프로파일** – 애플리케이션과 연결된 Amazon S3 버킷에 액세스할 권한이 있는 인스턴스 프로파일을 지정합니다.
+ **Amazon S3에 대한 로그 파일 교체 활성화(Enable log file rotation to Amazon S3)** – 애플리케이션과 연결된 Amazon S3 버킷에 애플리케이션의 Amazon EC2 인스턴스에 대한 로그 파일을 복사하는지 여부를 지정합니다.

### 환경 속성
<a name="dotnet-console-properties"></a>

**환경 속성** 섹션에서는 애플리케이션을 실행하는 Amazon EC2 인스턴스의 환경 속성 설정을 지정할 수 있습니다. 이 설정은 키 값 페어로 애플리케이션에 전달됩니다. `System.GetEnvironmentVariable`을 사용하여 이것을 읽습니다. `web.config`와 환경 속성과 동일한 키가 존재할 수 있습니다. `System.Configuration` 네임스페이스를 사용하여 `web.config`에서 값을 읽습니다.

```
NameValueCollection appConfig = ConfigurationManager.AppSettings;
string endpoint = appConfig["API_ENDPOINT"];
```

자세한 내용은 [환경 변수 및 기타 소프트웨어 설정](environments-cfg-softwaresettings.md)를 참조하십시오.

## aws:elasticbeanstalk:container:dotnet:apppool 네임스페이스
<a name="dotnet-namespaces"></a>

[구성 파일](ebextensions.md)을 사용하여 구성 옵션을 설정하고 배포 중 다른 인스턴스 구성 작업을 수행할 수 있습니다. 구성 옵션은 [플랫폼별](command-options-specific.md)로 다르거나 Elastic Beanstalk 서비스의 [모든 플랫폼](command-options-general.md)에 전체적으로 적용될 수 있습니다. 구성 옵션은 *네임스페이스*로 구성됩니다.

.NET 프레임워크는 `aws:elasticbeanstalk:container:dotnet:apppool` 네임스페이스에 .NET 런타임을 구성하는 데 사용할 수 있는 옵션을 정의합니다.

다음 예제 구성 파일은 이 네임스페이스에서 이용 가능한 각 옵션의 설정을 표시합니다.

**Example .ebextensions/dotnet-settings.config**  

```
option_settings:
  aws:elasticbeanstalk:container:dotnet:apppool:
    Target Runtime: 2.0
    Enable 32-bit Applications: True
```

Elastic Beanstalk는 사용자가 환경을 맞춤형으로 지정할 수 있는 다양한 구성 옵션을 제공합니다. 구성 파일 외에 콘솔, 저장된 구성, EB CLI 또는 AWS CLI를 통해 구성 옵션을 설정할 수도 있습니다. 자세한 내용은 [구성 옵션](command-options.md)를 참조하세요.

# Elastic Beanstalk Windows Server 플랫폼의 메이저 버전 간 마이그레이션
<a name="dotnet-v2migration"></a>

AWS Elastic Beanstalk 에는 Windows Server 플랫폼의 여러 주요 버전이 있습니다. 이 페이지에서는 각 메이저 버전에 대한 주요 개선 사항과 최신 버전으로 마이그레이션하기 전에 고려할 사항에 대해 설명합니다.

Windows Server 플랫폼은 현재 버전 2(v2)에 있습니다. 애플리케이션에서 v2 이전의 Windows Server 플랫폼 버전을 사용하는 경우, v2로 마이그레이션하는 것이 좋습니다.

## Windows Server 플랫폼의 메이저 버전의 새 기능
<a name="dotnet-v2migration.diffs"></a>

### Windows Server 플랫폼 V2
<a name="dotnet-v2migration.diffs.v2"></a>

Elastic Beanstalk Windows Server 플랫폼의 버전 2(v2)는 [2019년 2월에 릴리스](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2019-02-21-windows-v2.html)되었습니다. V2는 Windows Server 플랫폼의 동작을 몇 가지 중요한 방식으로 Elastic Beanstalk의 Linux 기반 플랫폼의 동작과 일치시킵니다. V2는 이전의 v1과 완전히 호환되므로, v1으로부터 쉽게 마이그레이션할 수 있습니다.

Windows Server 플랫폼은 현재 다음 사항을 지원합니다.
+ *버전 관리* - 각 릴리스에 새 버전 번호가 할당되며, 사용자가 환경을 생성하여 관리할 때 이전 버전(아직 사용 가능한)을 참조할 수 있습니다.
+ *확장 상태* – 자세한 내용은 [Elastic Beanstalk의 향상된 상태 보고 및 모니터링](health-enhanced.md) 단원을 참조하십시오.
+ *변경 불가능* 및 *추가 배포를 사용한 롤링* 배포 – 배포 정책에 대한 자세한 내용은 [Elastic Beanstalk 환경에 애플리케이션 배포](using-features.deploy-existing-version.md) 단원을 참조하십시오.
+ *변경 불가능한 업데이트* – 업데이트 유형에 대한 자세한 내용은 [구성 변경](environments-updating.md) 단원을 참조하십시오.
+ *관리형 플랫폼 업데이트* – 자세한 내용은 [관리형 플랫폼 업데이트](environment-platform-update-managed.md) 단원을 참조하십시오.

**참고**  
새 배포 및 업데이트 기능은 확장 상태에 따라 달라집니다. 확장 상태를 활성화하여 사용합니다. 자세한 내용은 [Elastic Beanstalk 확장 상태 보고 활성화](health-enhanced-enable.md) 단원을 참조하십시오.

### Windows Server 플랫폼 V1
<a name="dotnet-v2migration.diffs.v1"></a>

Elastic Beanstalk Windows Server 플랫폼의 버전 1.0.0(v1)은 2015년 10월에 릴리스되었습니다. 이 버전은 환경 생성 및 업데이트 중에 Elastic Beanstalk가 [구성 파일](ebextensions.md)에서 명령을 처리하는 순서를 변경합니다.

이전 플랫폼 버전에는 솔루션 스택 이름에 버전 번호가 없습니다.
+ IIS 8.5를 실행하는 64비트 Windows Server 2012 R2
+ IIS 8.5를 실행하는 64비트 Windows Server Core 2012 R2
+ IIS 8을 실행하는 64비트 Windows Server 2012
+ IIS 7.5를 실행하는 64비트 Windows Server 2008 R2

이전 버전에서는 구성 파일의 처리 순서가 일관되지 않습니다. 환경 생성 중에 애플리케이션 원본이 IIS에 배포된 후 `Container Commands`가 실행됩니다. 실행 중인 환경에 배포하는 동안 새 버전이 배포되기 전에 컨테이너 명령이 실행됩니다. 확장 중에는 구성 파일이 처리되지 않습니다.

이 외에도 컨테이너 명령이 실행되기 전에 IIS가 시작됩니다. 이 동작으로 인해 일부 고객은 컨테이너 명령에서 해결 방법을 실시하여 명령을 실행하기 전에 IIS 서버를 일시 중지했다가 완료된 후 다시 시작해야 했습니다.

버전 1은 불일치를 수정하고 Windows Server 플랫폼의 동작을 Elastic Beanstalk의 Linux 기반 플랫폼의 동작과 일치시킵니다. v1 플랫폼에서 Elastic Beanstalk는 항상 IIS 서버가 시작되기 전에 컨테이너 명령을 실행합니다.

v1 플랫폼 솔루션 스택에는 Windows Server 버전 뒤에 `v1`이 있습니다.
+ IIS 8.5를 실행하는 64비트 Windows Server 2012 R2 v1.1.0
+ IIS 8.5를 실행하는 64비트 Windows Server Core 2012 R2 v1.1.0
+ IIS 8을 실행하는 64비트 Windows Server 2012 v1.1.0
+ IIS 7.5를 실행하는 64비트 Windows Server 2008 R2 v1.1.0

또한 v1 플랫폼은 컨테이너 명령을 실행하기 전에 애플리케이션 소스 번들의 내용을 `C:\staging\`으로 추출합니다. 컨테이너 명령이 완료되면 이 폴더의 내용이 .zip 파일로 압축되어 IIS에 배포됩니다. 이 워크플로를 통해 배포 전에 명령 또는 스크립트를 사용하여 애플리케이션 소스 번들의 내용을 수정할 수 있습니다.

## Windows Server 플랫폼의 이전 메이저 버전에서 마이그레이션
<a name="dotnet-v2migration.migration"></a>

환경을 업데이트하기 전에 이 단원의 마이그레이션 고려 사항을 읽습니다. 환경의 플랫폼을 최신 버전으로 업데이트하려면 [Elastic Beanstalk 환경의 플랫폼 버전 업데이트](using-features.platform.upgrade.md) 단원을 참조하십시오.

### V1에서 V2로
<a name="dotnet-v2migration.migration.fromv1"></a>

Windows Server 플랫폼 v2는 .NET Core 1.x 및 2.0.을 지원하지 않습니다. 애플리케이션을 Windows Server v1에서 v2로 마이그레이션하고 애플리케이션이 이러한 .NET Core 버전 중 하나를 사용하는 경우, 애플리케이션을 v2에서 지원하는 .NET Core 버전으로 업데이트합니다. 지원되는 버전의 목록은 *AWS Elastic Beanstalk * 플랫폼에서 [IIS를 사용하는 Windows Server의 .NET](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.net) 단원을 참조하세요.

애플리케이션에서 사용자 지정 Amazon Machine Image(AMI)를 사용하는 경우 Windows Server 플랫폼 v2 AMI를 기반으로 새 사용자 지정 AMI를 생성합니다. 자세한 내용은 [Elastic Beanstalk 환경에서 사용자 지정 Amazon Machine Image(AMI) 사용](using-features.customenv.md) 단원을 참조하십시오.

**참고**  
Windows Server v2에 새로 추가되는 배포 및 업데이트 기능은 확장 상태에 따라 달라집니다. 환경을 v2로 마이그레이션하는 경우, 확장 상태는 비활성화됩니다. 확장 상태를 활성화하여 이러한 기능을 사용하시겠습니까? 자세한 내용은 [Elastic Beanstalk 확장 상태 보고 활성화](health-enhanced-enable.md) 단원을 참조하십시오.

### 이전의 V1에서
<a name="dotnet-v2migration.migration.fromv0"></a>

v1으로부터의 마이그레이션에 대한 고려 사항 이외에도, 애플리케이션을 v1 이전의 Windows Server 솔루션 스택으로부터 마이그레이션하고 현재 컨테이너 명령을 사용 중인 경우, 최신 버전으로 마이그레이션하면서 불일치를 처리할 당시에 작업에 추가했던 모든 명령을 제거합니다. 배포된 애플리케이션 소스가 배포되고 IIS가 시작되기 전에, v1을 시작으로 컨테이너 명령이 완전히 실행되도록 보장됩니다. 따라서 `C:\staging`의 소스를 변경할 수 있으며, 이 단계를 수행하는 동안 문제없이 IIS 구성 파일을 수정할 수 있습니다.

예를 들어 AWS CLI 를 사용하여 Amazon S3에서 애플리케이션 소스로 DLL 파일을 다운로드할 수 있습니다.

`.ebextensions\copy-dll.config`

```
container_commands:
  copy-dll:
    command: aws s3 cp s3://amzn-s3-demo-bucket/dlls/large-dll.dll .\lib\
```

구성 파일 사용에 대한 자세한 내용은 [구성 파일(`.ebextensions`)을 사용하여 고급 환경 사용자 지정](ebextensions.md) 단원을 참조하십시오.

# 배포 매니페스트를 사용하여 여러 애플리케이션 및 ASP.NET Core 애플리케이션 실행
<a name="dotnet-manifest"></a>

배포 매니페스트를 사용하여 Elastic Beanstalk에 애플리케이션을 배포하는 방법을 알릴 수 있습니다. 이 방법을 사용하면 `MSDeploy`를 사용하여 웹 사이트의 루트 경로에서 실행되는 단일 ASP.NET 애플리케이션의 소스 번들을 생성할 필요가 없습니다. 대신 매니페스트 파일을 사용하여 서로 다른 경로에서 여러 애플리케이션을 실행할 수 있습니다. 또는 ASP.NET Core를 사용하여 앱을 배포하고 실행하도록 Elastic Beanstalk에 지시할 수도 있습니다. 또한 배포 매니페스트를 사용하여 애플리케이션을 실행할 애플리케이션 풀을 구성할 수도 있습니다.

배포 매니페스트는 Elastic Beanstalk에 [.NET Core 애플리케이션](#dotnet-manifest-dotnetcore)에 대한 지원을 추가합니다. 배포 매니페스트를 사용하지 않고 .NET Framework 애플리케이션을 배포할 수 있습니다. 하지만 .NET Core 애플리케이션을 Elastic Beanstalk에서 실행하려면 배포 매니페스트가 필요합니다. 배포 매니페스트를 사용할 때는 각 애플리케이션의 사이트 아카이브를 만든 후 배포 매니페스트가 들어 있는 두 번째 ZIP 아카이브에 그 사이트 아카이브를 번들링합니다.

배포 매니페스트는 [여러 경로에서 여러 애플리케이션을 실행](#dotnet-manifest-multiapp)하는 기능도 추가합니다. 배포 매니페스트는 배포 대상 배열을 정의하는데, 각 배포 대상에는 사이트 아카이브 및 IIS가 이를 실행해야 하는 경로가 들어 있습니다. 예를 들어 `/api` 경로에서 웹 API를 실행하여 비동기 요청을 처리하고, API를 사용하는 루트 경로에서 웹 앱을 실행할 수 있습니다.

배포 매니페스트를 사용하여 [사용자 지정 바인딩 및 물리적 경로로 IIS 웹 사이트를 구성](#dotnet-manifest-websites)할 수 있습니다. 이를 통해 애플리케이션을 배포하기 전에 특정 포트 또는 호스트 이름에서 수신 대기하는 웹 사이트를 설정할 수 있습니다.

배포 매니페스트를 사용하여 [IIS 또는 Kestrel의 애플리케이션 풀을 사용하여 여러 애플리케이션을 실행](#dotnet-manifest-apppool)할 수도 있습니다. 애플리케이션을 주기적으로 다시 시작하거나, 32비트 애플리케이션을 실행하거나, .NET Framework 실행 시간의 특정 버전을 사용하도록 애플리케이션 풀을 구성할 수 있습니다.

완전한 사용자 지정을 하려면 Windows PowerShell에 [자체 배포 스크립트를 작성](#dotnet-manifest-custom)하고 Elastic Beanstalk에 애플리케이션을 설치, 제거 및 다시 시작하기 위해 실행할 스크립트를 알리면 됩니다.

배포 매니페스트와 관련 기능에는 Windows Server 플랫폼 [버전 1.2.0 이상](dotnet-v2migration.md)이 필요합니다.

사용 가능한 모든 구성 옵션, 속성, IIS 재설정 건너뛰기와 같은 고급 기능에 대한 자세한 내용은 [배포 매니페스트 스키마 참조](dotnet-manifest-schema.md)를 참조하세요.

**Topics**
+ [.NET Core 앱](#dotnet-manifest-dotnetcore)
+ [여러 애플리케이션 실행](#dotnet-manifest-multiapp)
+ [IIS 웹 사이트 구성](#dotnet-manifest-websites)
+ [Application Request Routing(ARR) 사용](#dotnet-manifest-arr)
+ [애플리케이션 풀 구성](#dotnet-manifest-apppool)
+ [사용자 지정 배포 정의](#dotnet-manifest-custom)
+ [배포 매니페스트 스키마 참조](dotnet-manifest-schema.md)

## .NET Core 앱
<a name="dotnet-manifest-dotnetcore"></a>

배포 매니페스트를 사용하여 Elastic Beanstalk 에서 .NET Core 애플리케이션을 실행할 수 있습니다. .NET Core는 .NET의 교차 플랫폼 버전으로, 명령 줄 도구(`dotnet`)와 함께 제공됩니다. 이 도구를 사용하여 애플리케이션을 생성하고 로컬로 실행하고 게시하도록 준비할 수 있습니다.

Elastic Beanstalk에서 .NET Core 애플리케이션을 실행하려면 `dotnet publish`를 실행하고 포함된 모든 디렉터리를 제외한 출력을 ZIP 아카이브로 패키징하면 됩니다. 배포 대상 유형이 `aspNetCoreWeb`인 배포 매니페스트를 사용하여 사이트 아카이브를 소스 번들에 배치합니다.

다음 배포 매니페스트는 루트 경로에서 `dotnet-core-app.zip`이라는 사이트 아카이브의 .NET Core 애플리케이션을 실행합니다.

**Example aws-windows-deployment-manifest.json - .NET Core**  

```
{
  "manifestVersion": 1,
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "my-dotnet-core-app",
        "parameters": {
          "archive": "dotnet-core-app.zip",
          "iisPath": "/"
        }
      }
    ]
  }
}
```

매니페스트와 사이트 아카이브를 ZIP 아카이브로 번들링하여 소스 번들을 만듭니다.

**Example dotnet-core-bundle.zip**  

```
.
|-- aws-windows-deployment-manifest.json
`-- dotnet-core-app.zip
```

사이트 아카이브에는 컴파일된 애플리케이션 코드, 종속 항목, `web.config` 파일이 들어 있습니다.

**Example dotnet-core-app.zip**  

```
.
|-- Microsoft.AspNetCore.Hosting.Abstractions.dll
|-- Microsoft.AspNetCore.Hosting.Server.Abstractions.dll
|-- Microsoft.AspNetCore.Hosting.dll
|-- Microsoft.AspNetCore.Http.Abstractions.dll
|-- Microsoft.AspNetCore.Http.Extensions.dll
|-- Microsoft.AspNetCore.Http.Features.dll
|-- Microsoft.AspNetCore.Http.dll
|-- Microsoft.AspNetCore.HttpOverrides.dll
|-- Microsoft.AspNetCore.Server.IISIntegration.dll
|-- Microsoft.AspNetCore.Server.Kestrel.dll
|-- Microsoft.AspNetCore.WebUtilities.dll
|-- Microsoft.Extensions.Configuration.Abstractions.dll
|-- Microsoft.Extensions.Configuration.EnvironmentVariables.dll
|-- Microsoft.Extensions.Configuration.dll
|-- Microsoft.Extensions.DependencyInjection.Abstractions.dll
|-- Microsoft.Extensions.DependencyInjection.dll
|-- Microsoft.Extensions.FileProviders.Abstractions.dll
|-- Microsoft.Extensions.FileProviders.Physical.dll
|-- Microsoft.Extensions.FileSystemGlobbing.dll
|-- Microsoft.Extensions.Logging.Abstractions.dll
|-- Microsoft.Extensions.Logging.dll
|-- Microsoft.Extensions.ObjectPool.dll
|-- Microsoft.Extensions.Options.dll
|-- Microsoft.Extensions.PlatformAbstractions.dll
|-- Microsoft.Extensions.Primitives.dll
|-- Microsoft.Net.Http.Headers.dll
|-- System.Diagnostics.Contracts.dll
|-- System.Net.WebSockets.dll
|-- System.Text.Encodings.Web.dll
|-- dotnet-core-app.deps.json
|-- dotnet-core-app.dll
|-- dotnet-core-app.pdb
|-- dotnet-core-app.runtimeconfig.json
`-- web.config
```

## 여러 애플리케이션 실행
<a name="dotnet-manifest-multiapp"></a>

여러 배포 대상을 정의하여 배포 매니페스트로 여러 애플리케이션을 실행할 수 있습니다.

다음 배포 매니페스트는 .NET Core 애플리케이션 두 개를 구성합니다. `WebApiSampleApp` 애플리케이션은 단순한 웹 API를 구현하며, `/api` 경로에서 비동기 요청을 수행합니다. `DotNetSampleApp` 애플리케이션은 루트 경로에서 요청을 수행하는 웹 애플리케이션입니다.

**Example aws-windows-deployment-manifest.json - 여러 앱**  

```
{
  "manifestVersion": 1,
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "WebAPISample",
        "parameters": {
          "appBundle": "WebApiSampleApp.zip",
          "iisPath": "/api"
        }
      },
      {
        "name": "DotNetSample",
        "parameters": {
          "appBundle": "DotNetSampleApp.zip",
          "iisPath": "/"
        }
      }
    ]
  }
}
```

다음을 통해 여러 애플리케이션으로 구성된 샘플 애플리케이션을 사용할 수 있습니다.
+ **배포 가능한 소스 번들** - [dotnet-multiapp-sample-bundle-v2.zip](samples/dotnet-multiapp-sample-bundle-v2.zip)
+ **소스 코드** - [dotnet-multiapp-sample-source-v2.zip](samples/dotnet-multiapp-sample-source-v2.zip)

## IIS 웹 사이트 구성
<a name="dotnet-manifest-websites"></a>

배포 매니페스트를 사용하여 사용자 지정 바인딩 및 실제 경로로 IIS 웹 사이트를 구성할 수 있습니다. 이는 특정 포트에서 수신 대기하거나, 사용자 지정 호스트 이름을 사용하거나, 특정 디렉터리의 콘텐츠를 제공하는 웹 사이트를 설정해야 할 때 유용합니다.

다음 배포 매니페스트는 특정 포트 번호와 사용자 지정 실제 경로를 사용하여 HTTP에서 수신 대기하는 사용자 지정 IIS 웹 사이트를 구성합니다.

**Example aws-windows-deployment-manifest.json - IIS 웹 사이트 구성**  

```
{
  "manifestVersion": 1,
  "iisConfig": {
    "websites": [
      {
        "name": "MyCustomSite",
        "physicalPath": "C:\inetpub\wwwroot\mysite",
        "bindings": [
          {
            "protocol": "http",
            "port": 8080,
            "hostName": "mysite.local"
          }
        ]
      }
    ]
  },
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "my-dotnet-core-app",
        "parameters": {
          "appBundle": "dotnet-core-app.zip",
          "iisWebSite": "MyCustomSite",
          "iisPath": "/"
        }
      }
    ]
  }
}
```

이 예시는 다음과 같이 설정되어 있습니다.
+ "MyCustomSite"라는 웹 사이트가 사용자 지정 물리적 경로로 생성됩니다.
+ 웹 사이트는 특정 호스트 이름으로 포트 8080에 HTTP 바인딩을 갖습니다.
+ ASP.NET Core 애플리케이션은 `iisWebSite` 파라미터를 사용하여 이 사용자 지정 웹 사이트에 배포됩니다.

## Application Request Routing(ARR) 사용
<a name="dotnet-manifest-arr"></a>

Application Request Routing(ARR) 및 URL Rewrite 모듈은 Elastic Beanstalk Windows AMI에 사전 설치되어 사용할 수 있습니다. 이러한 모듈을 사용하면 ebextensions 또는 애플리케이션 구성을 사용하는 IIS 구성을 통해 고급 라우팅 시나리오 및 URL 조작이 가능합니다.

다음 예제는 사용자 지정 포트로 웹 사이트를 구성하는 간단한 배포 매니페스트와 기본 ARR 라우팅을 설정하는 ebextensions 구성을 결합한 것을 보여줍니다.

**Example aws-windows-deployment-manifest.json - 간단한 ARR 설정**  

```
{
  "manifestVersion": 1,
  "iisConfig": {
    "websites": [
      {
        "name": "ARRSite",
        "physicalPath": "C:\\inetpub\\wwwroot\\arrsite",
        "bindings": [
          {
            "protocol": "http",
            "port": 8080,
            "hostName": "localhost"
          }
        ]
      }
    ]
  },
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "BackendApp",
        "parameters": {
          "appBundle": "backend-app.zip",
          "iisWebSite": "ARRSite",
          "iisPath": "/backend"
        }
      }
    ]
  }
}
```

ARR 구성은 ebextensions를 통해 수행됩니다. 다음 구성은 기본 ARR 라우팅 규칙을 설정합니다.

**Example .ebextensions/arr-config.config - 기본 ARR 구성**  

```
files:
  "C:\\temp\\configure-arr.ps1":
    content: |
      # Enable ARR proxy at server level
      Set-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter 'system.webServer/proxy' -Name 'enabled' -Value 'True'
      
      # Clear any existing global rules to avoid conflicts
      Clear-WebConfiguration -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter 'system.webServer/rewrite/globalRules'

      # Add global rule to route all requests to backend
      Add-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' `
        -Filter 'system.webServer/rewrite/globalRules' `
        -Name '.' `
        -Value @{
          name = 'Route_to_Backend'
          stopProcessing = 'True'
          match = @{ url = '^(?!backend/)(.*)' }
          action = @{
            type = 'Rewrite'
            url = 'http://localhost:8080/backend/{R:1}'
          }
        }

container_commands:
  01_configure_arr:
    command: powershell -ExecutionPolicy Bypass -File "C:\\temp\\configure-arr.ps1"
    waitAfterCompletion: 0
```

이 구성은 포트 8080에 웹 사이트를 생성하고 모든 수신 요청을 해당 사이트에서 실행되는 백엔드 애플리케이션으로 라우팅하도록 ARR을 설정합니다.

## 애플리케이션 풀 구성
<a name="dotnet-manifest-apppool"></a>

Windows 환경에서 여러 애플리케이션을 지원할 수 있습니다. 다음 두 가지 방법을 사용할 수 있습니다.
+ Kestrel 웹 서버를 통해 프로세스 외 호스팅 모델을 사용할 수 있습니다. 이 모델을 사용하기 위해 여러 애플리케이션이 하나의 애플리케이션 풀에서 실행되도록 구성할 수 있습니다.
+ 프로세스 내 호스팅 모델을 사용할 수 있습니다. 이 모델에서는 여러 애플리케이션 풀을 사용하여 각 풀마다 하나씩 여러 애플리케이션을 실행할 수 있습니다. IIS 서버를 사용하고 있고 여러 애플리케이션을 실행해야 하는 경우 이 방법을 사용해야 합니다.

하나의 애플리케이션 풀에서 여러 애플리케이션을 실행하도록 Kestrel을 구성하려면 `hostingModel="OutofProcess"` 파일에 `web.config`를 추가합니다. 다음 예제를 살펴보세요.

**Example web.config - Kestrel의 프로세스 외 호스팅 모델**  

```
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add 
    name="aspNetCore" 
    path="*" verb="*" 
    modules="AspNetCoreModuleV2" 
    resourceType="Unspecified" />
</handlers>
<aspNetCore 
    processPath="dotnet" 
    arguments=".\CoreWebApp-5-0.dll" 
    stdoutLogEnabled="false" 
    stdoutLogFile=".\logs\stdout" 
    hostingModel="OutofProcess" />
</system.webServer>
</location>
</configuration>
```

**Example aws-windows-deployment-manifest.json - 여러 애플리케이션**  

```
{
"manifestVersion": 1,
  "deployments": {"msDeploy": [
      {"name": "Web-app1",
        "parameters": {"archive": "site1.zip",
          "iisPath": "/"
        }
      },
      {"name": "Web-app2",
        "parameters": {"archive": "site2.zip",
          "iisPath": "/app2"
        }
      }
    ]
  }
}
```

IIS는 프로세스 내 호스팅 모델을 사용하므로 하나의 애플리케이션 풀에서 여러 애플리케이션을 지원하지 않습니다. 따라서 각 애플리케이션을 하나의 애플리케이션 풀에 할당하여 여러 애플리케이션을 구성해야 합니다. 즉, 하나의 애플리케이션 풀에 하나의 애플리케이션만 할당합니다.

`aws-windows-deployment-manifest.json` 파일에서 여러 애플리케이션 풀을 사용하도록 IIS를 구성할 수 있습니다. 다음 예제 파일을 참조하여 다음과 같이 업데이트합니다.
+ `iisConfig`라는 하위 섹션이 포함된 `appPools` 섹션을 추가합니다.
+ `appPools` 블록에서 애플리케이션 풀을 나열합니다.
+ `deployments` 섹션에서 각 애플리케이션에 대한 `parameters` 섹션을 정의합니다.
+ `parameters` 섹션은 각 애플리케이션에 대해 아카이브, 실행 경로 및 실행할 `appPool`을 지정합니다.

다음 배포 매니페스트는 10분마다 애플리케이션을 다시 시작하는 2개의 애플리케이션 풀을 구성합니다. 또한 지정된 경로에서 실행되는 .NET Framework 웹 애플리케이션에 애플리케이션을 연결합니다.

**Example aws-windows-deployment-manifest.json - 애플리케이션 풀당 하나의 애플리케이션**  

```
{
"manifestVersion": 1,
  "iisConfig": {"appPools": [
      {"name": "MyFirstPool",
       "recycling": {"regularTimeInterval": 10}
      },
      {"name": "MySecondPool",
       "recycling": {"regularTimeInterval": 10}
      }
     ]
    },
  "deployments": {"msDeploy": [
      {"name": "Web-app1",
        "parameters": {
           "archive": "site1.zip",
           "iisPath": "/",
           "appPool": "MyFirstPool"
           }
      },
      {"name": "Web-app2",
        "parameters": {
           "archive": "site2.zip",
           "iisPath": "/app2",
           "appPool": "MySecondPool"
          }
      }
     ]
    }
}
```

## 사용자 지정 배포 정의
<a name="dotnet-manifest-custom"></a>

더욱 세부적인 제어를 위해 *사용자 지정 배포*를 정의하여 애플리케이션 배포를 완전히 사용자 지정할 수 있습니다.

이 배포 매니페스트는 Elastic Beanstalk에 32비트 모드에서 PowerShell 스크립트를 실행하도록 지시합니다. 인스턴스 시작 및 배포 중에 실행되는 스크립트`install`(`siteInstall.ps1`), 배포 중에 새 버전을 설치하기 전에 실행되는 `uninstall` 스크립트(`siteUninstall.ps1`), AWS 관리 콘솔에서 [앱 서버 재시작](environments-dashboard-actions.md)을 선택할 때 실행되는 `restart` 스크립트(`siteRestart.ps1`) 등 세 가지 스크립트를 지정합니다.

**Example aws-windows-deployment-manifest.json - 사용자 지정 배포**  

```
{
  "manifestVersion": 1,
  "deployments": {
    "custom": [
      {
        "name": "Custom site",
        "architecture" : 32,
        "scripts": {
          "install": {
            "file": "siteInstall.ps1"
          },
          "restart": {
            "file": "siteRestart.ps1"
          },
          "uninstall": {
            "file": "siteUninstall.ps1"
          }
        }
      }
    ]
  }
}
```

매니페스트와 스크립트를 사용하여 소스 번들에 애플리케이션을 실행하는 데 필요한 모든 결과물을 포함시킵니다.

**Example Custom-site-bundle.zip**  

```
.
|-- aws-windows-deployment-manifest.json
|-- siteInstall.ps1
|-- siteRestart.ps1
|-- siteUninstall.ps1
`-- site-contents.zip
```

# 배포 매니페스트 스키마 참조
<a name="dotnet-manifest-schema"></a>

배포 매니페스트는 Elastic Beanstalk이 Windows 애플리케이션을 어떻게 배포하고 구성해야 하는지를 정의하는 JSON 파일입니다. 이 섹션은 매니페스트 스키마에서 지원되는 모든 속성과 구성 옵션에 대한 종합적인 참조를 제공합니다.

## 매니페스트 구조
<a name="dotnet-manifest-schema-structure"></a>

배포 매니페스트는 다음과 같은 최상위 구조를 가진 특정 JSON 스키마를 따릅니다.

**Example 기본 매니페스트 구조**  

```
{
  "manifestVersion": 1,
  "skipIISReset": false,
  "iisConfig": {
    "websites": [...],
    "appPools": [...]
  },
  "deployments": {
    "msDeploy": [...],
    "aspNetCoreWeb": [...],
    "custom": [...]
  }
}
```

### 최상위 속성
<a name="dotnet-manifest-schema-top-level"></a>

`manifestVersion`(필수)  
*형식*: 숫자  
*기본값*: 1  
*유효한 값:* 1  
매니페스트 스키마 버전을 지정합니다. 현재는 버전 1만 지원됩니다.

`skipIISReset` (선택 사항)  
*유형*: 부울  
*기본값:* false  
애플리케이션 배포 중 IIS를 재설정할지 여부를 제어합니다. 이 플래그는 `msDeploy` 및 `aspNetCoreWeb` 배포 유형 모두에 영향을 미칩니다.  
*동작:*  
+ *지정되지 않음 또는 `false`(기본값):* 설치, 제거, 업데이트 작업 중 IIS 재설정이 수행됩니다. 이는 기존의 동작입니다.
+ *`true`:* 배포 작업 중에는 IIS 재설정을 건너뜁니다.
*이점:*  
+ *가동 중지 시간 단축* - 배포 과정에서 애플리케이션의 서비스 중단 시간이 단축됩니다.
+ *더 빠른 배포* - IIS가 완전히 다시 시작되고 재초기화되는 데 필요한 시간을 제거합니다.
`skipIISReset`를 사용할 때 [RestartAppServer](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RestartAppServer.html) 작업은 이 플래그 설정과 관계없이 IIS 재설정을 수행합니다.
*예:*  

```
{
  "manifestVersion": 1,
  "skipIISReset": true,
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "my-dotnet-core-app",
        "parameters": {
          "archive": "dotnet-core-app.zip",
          "iisPath": "/"
        }
      }
    ]
  }
}
```

`deployments`(필수)  
*유형:* 객체  
애플리케이션의 배포 구성이 포함되어 있습니다. 이 객체는 `msDeploy`, `aspNetCoreWeb` 및 `custom` 배포 유형을 포함할 수 있습니다.

`iisConfig` (선택 사항)  
*유형:* 객체  
애플리케이션을 배포하기 전에 적용할 IIS 구성 설정을 정의합니다. 웹 사이트 및 애플리케이션 풀 구성을 모두 지원합니다.

## IIS 구성
<a name="dotnet-manifest-schema-iis-config"></a>

`iisConfig` 섹션에서는 애플리케이션을 배포하기 전에 IIS 설정을 구성할 수 있습니다. 여기에는 특정 구성으로 애플리케이션 풀을 설정하고, 사용자 지정 바인딩으로 IIS 웹 사이트를 구성하는 작업이 포함됩니다.

### IIS 웹 사이트
<a name="dotnet-manifest-schema-websites"></a>

IIS 웹 사이트에서는 애플리케이션을 배포하기 전에 물리적 경로 및 네트워크 바인딩을 포함한 사용자 지정 웹 사이트 설정을 구성할 수 있습니다.

**서로 다른 IIS 웹 사이트를 생성할 때 고려해야 할 주요 사항입니다.**  
*웹 사이트 설정 순서:* `websites` 배열에 나열된 순서대로 웹 사이트가 순차적으로 구성됩니다. 플랫폼은 각 웹 사이트 구성을 순차적으로 처리하므로, 웹사이트 간 종속성이 있는 경우 올바른 순서를 설정해야 합니다.
*방화벽 및 포트 액세스:* 기본 Elastic Beanstalk Windows 방화벽 구성에서는 포트 80만 자동으로 노출됩니다. 웹 사이트를 비표준 포트를 사용하도록 구성하는 경우, 이러한 포트에 대한 외부 액세스를 허용하기 위해 ebextensions 또는 사용자 지정 배포 스크립트를 통해 사용자 지정 방화벽 규칙을 정의해야 합니다.

**Example 웹 사이트 구성**  

```
{
  "iisConfig": {
    "websites": [
      {
        "name": "MyCustomSite",
        "physicalPath": "C:\inetpub\wwwroot\mysite",
        "bindings": [
          {
            "protocol": "http",
            "port": 8080,
            "hostName": "mysite.local"
          },
          {
            "protocol": "https",
            "port": 8443
          }
        ]
      }
    ]
  }
}
```웹 사이트 속성

`name`(필수)  
*유형*: 문자열  
IIS 웹 사이트의 이름입니다. 이 이름은 IIS Manager에서 웹 사이트를 식별하는 데 사용되며, IIS 구성 내에서 고유해야 합니다.

`physicalPath`(필수)  
*유형*: 문자열  
웹 사이트 파일이 저장되는 서버의 물리적 경로입니다. 이 경로는 IIS 작업자 프로세스에서 액세스할 수 있어야 합니다.

`bindings`(필수)  
*유형*: 배열  
*최소 항목:* 1  
웹 사이트가 네트워크 요청에 어떻게 응답할지 정의하는 바인딩 구성 배열입니다. 각 바인딩은 프로토콜, 포트, 선택적 호스트 이름을 지정합니다.

#### 웹 사이트 바인딩
<a name="dotnet-manifest-schema-bindings"></a>

웹 사이트 바인딩은 IIS 웹 사이트가 수신 요청을 수신하는 네트워크 엔드포인트를 정의합니다.

`protocol`(필수)  
*유형*: 문자열  
*유효한 값:* "http", "https"  
바인딩에 사용되는 프로토콜입니다.

`port`(필수)  
*유형*: 정수  
*유효 범위:* 1-65535  
웹 사이트가 요청을 수신하는 포트 번호입니다.

`hostName` (선택 사항)  
*유형*: 문자열  
바인딩의 호스트 이름(도메인 이름)입니다.

### 애플리케이션 풀
<a name="dotnet-manifest-schema-app-pools"></a>

애플리케이션 풀은 애플리케이션 간 격리를 제공하며, 애플리케이션 그룹에 대한 런타임 설정을 구성할 수 있도록 합니다.

**Example 애플리케이션 풀 구성**  

```
{
  "iisConfig": {
    "appPools": [
      {
        "name": "MyAppPool",
        "enable32Bit": false,
        "managedPipelineMode": "Integrated",
        "managedRuntimeVersion": "v4.0",
        "queueLength": 1000,
        "cpu": {
          "limitPercentage": 80,
          "limitAction": "Throttle",
          "limitMonitoringInterval": 5
        },
        "recycling": {
          "regularTimeInterval": 1440,
          "requestLimit": 10000,
          "memory": 1048576,
          "privateMemory": 524288
        }
      }
    ]
  }
}
```애플리케이션 풀 속성

`name`(필수)  
*유형*: 문자열  
애플리케이션 풀의 이름입니다. 이 이름은 배포 구성에서 풀을 참조하는 데 사용됩니다.

`enable32Bit` (선택 사항)  
*유형*: 부울  
32비트 애플리케이션이 64비트 Windows에서 실행되도록 활성화합니다. 32비트 호환성이 필요한 레거시 애플리케이션의 경우 `true`로 설정합니다.

`managedPipelineMode` (선택 사항)  
*유형*: 문자열  
*유효한 값:* "Integrated", "Classic"  
애플리케이션 풀의 요청 처리 모드를 지정합니다.

`managedRuntimeVersion` (선택 사항)  
*유형*: 문자열  
*유효한 값:* "관리형 코드 없음", "v2.0", "v4.0"  
애플리케이션 풀에 사용할 .NET Framework 버전을 지정합니다.

`queueLength` (선택 사항)  
*유형*: 정수  
HTTP.sys가 추가 요청을 거부하기 전에 애플리케이션 풀을 위해 대기열에 넣을 수 있는 최대 요청 수입니다.

#### CPU 구성
<a name="dotnet-manifest-schema-cpu-config"></a>

`cpu` 객체는 애플리케이션 풀의 CPU 사용 한도 및 모니터링을 구성합니다.

`limitPercentage` (선택 사항)  
*형식*: 숫자  
애플리케이션 풀의 작업자 프로세스가 사용할 수 있는 CPU 시간의 최대 비율입니다.

`limitAction` (선택 사항)  
*유형*: 문자열  
*유효한 값:* "NoAction", "KillW3wp", "Throttle", "ThrottleUnderLoad"  
CPU 한도에 도달했을 때 수행할 조치입니다.

`limitMonitoringInterval` (선택 사항)  
*형식*: 숫자  
CPU 모니터링 및 스로틀링 조정을 위한 재설정 주기(분 단위)입니다.

#### 재활용 구성
<a name="dotnet-manifest-schema-recycling-config"></a>

`recycling` 객체는 애플리케이션 풀 작업자 프로세스를 언제, 어떤 방식으로 재활용할지 구성합니다.

`regularTimeInterval` (선택 사항)  
*유형*: 정수  
애플리케이션 풀이 재활용되는 시간 간격(분 단위)입니다. 시간 기반 재활용을 비활성화하려면 0으로 설정합니다.

`requestLimit` (선택 사항)  
*유형*: 정수  
애플리케이션 풀이 재활용되기 전에 처리하는 최대 요청 수입니다.

`memory` (선택 사항)  
*유형*: 정수  
작업자 프로세스 재활용을 트리거하는 가상 메모리 용량(킬로바이트 기준)입니다.

`privateMemory` (선택 사항)  
*유형*: 정수  
작업자 프로세스 재활용을 트리거하는 프라이빗 메모리 용량(킬로바이트 기준)입니다.

## 배포 유형
<a name="dotnet-manifest-schema-deployments"></a>

`deployments` 객체에는 서로 다른 애플리케이션 유형에 대한 배포 구성 배열이 포함됩니다. 각 배포 유형에는 고유한 속성과 사용 사례가 있습니다.

### MSDeploy 배포
<a name="dotnet-manifest-schema-msdeploy"></a>

MSDeploy 배포는 Web Deploy(MSDeploy)를 사용해 배포할 수 있는 기존 .NET Framework 애플리케이션에 사용됩니다.

**Example MSDeploy 배포 구성**  

```
{
  "deployments": {
    "msDeploy": [
      {
        "name": "WebApp",
        "description": "Main web application",
        "parameters": {
          "appBundle": "webapp.zip",
          "iisPath": "/",
          "appPool": "DefaultAppPool"
        }
      }
    ]
  }
}
```MSDeploy 배포 속성

`name`(필수)  
*유형*: 문자열  
배포의 고유 이름입니다. 이 이름은 매니페스트의 모든 배포에서 고유해야 합니다.

`description` (선택 사항)  
*유형*: 문자열  
사람이 읽을 수 있는 배포 설명

`parameters`(필수)  
*유형:* 객체  
MSDeploy 작업에 대한 구성 파라미터입니다.

`scripts` (선택 사항)  
*유형:* 객체  
배포 수명 주기의 다양한 단계에서 실행되는 PowerShell 스크립트입니다.

#### MSDeploy 파라미터
<a name="dotnet-manifest-schema-msdeploy-parameters"></a>

`appBundle`(필수)  
*유형*: 문자열  
매니페스트 파일을 기준으로 한 애플리케이션 번들(ZIP 파일)의 경로입니다. 이 번들은 배포할 애플리케이션 파일을 포함합니다.

`iisWebSite` (선택 사항)  
*유형*: 문자열  
*기본값:* "기본 웹 사이트"  
애플리케이션을 배포할 IIS 웹 사이트입니다. 기본적으로 애플리케이션은 "기본 웹 사이트"에 배포됩니다. 또는 `iisConfig.websites` 섹션에 구성된 웹 사이트 이름과 같이 다른 웹 사이트 이름을 지정할 수 있습니다.

`iisPath` (선택 사항)  
*유형*: 문자열  
*기본값:* "/"  
애플리케이션이 배포될 IIS의 가상 디렉터리 경로입니다. 루트 경로에는 "/"를 사용하고 하위 디렉터리에는 "/api"를 사용하세요.

`appPool` (선택 사항)  
*유형*: 문자열  
이 애플리케이션을 실행할 애플리케이션 풀의 이름입니다.

### ASP.NET Core 배포
<a name="dotnet-manifest-schema-aspnetcore"></a>

ASP.NET Core 배포는 .NET Core 및 .NET 5\$1 애플리케이션을 위해 특별히 설계되었습니다.

**Example ASP.NET Core 배포 구성**  

```
{
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "CoreAPI",
        "description": "ASP.NET Core Web API",
        "parameters": {
          "appBundle": "coreapi.zip",
          "iisPath": "/api",
          "appPool": "CoreAppPool"
        }
      }
    ]
  }
}
```

ASP.NET Core 배포는 MSDeploy 배포와 동일한 속성 구조를 사용하며, 핵심 차이점은 애플리케이션에 사용되는 런타임 환경과 호스팅 모델입니다.ASP.NET Core 배포 파라미터

`appBundle`(필수)  
*유형*: 문자열  
매니페스트 파일을 기준으로 한 애플리케이션 번들의 경로입니다. 이는 ZIP 아카이브이거나, 게시된 ASP.NET Core 애플리케이션이 포함된 디렉터리 경로일 수 있습니다.

`iisWebSite` (선택 사항)  
*유형*: 문자열  
*기본값:* "기본 웹 사이트"  
ASP.NET Core 애플리케이션을 배포할 IIS 웹 사이트입니다. 기본적으로 애플리케이션은 "기본 웹 사이트"에 배포됩니다. 또는 `iisConfig.websites` 섹션에 구성된 웹 사이트 이름과 같이 다른 웹 사이트 이름을 지정할 수 있습니다.

`iisPath` (선택 사항)  
*유형*: 문자열  
*기본값:* "/"  
ASP.NET Core 애플리케이션용 IIS 가상 디렉터리 경로입니다.

`appPool` (선택 사항)  
*유형*: 문자열  
ASP.NET Core 애플리케이션의 애플리케이션 풀입니다. 이 풀은 ASP.NET Core 호스팅에 적합하도록 구성됩니다.

### 사용자 지정 배포
<a name="dotnet-manifest-schema-custom"></a>

사용자 지정 배포에서는 PowerShell 스크립트를 통해 배포 프로세스를 완전히 제어할 수 있습니다. 이 배포 유형은 사용자 지정 설치, 구성 또는 배포 로직이 필요한 복잡한 시나리오에 유용합니다.

**Example 사용자 지정 배포 구성**  

```
{
  "deployments": {
    "custom": [
      {
        "name": "CustomService",
        "description": "Custom Windows service deployment",
        "architecture": 32,
        "scripts": {
          "install": {
            "file": "install-service.ps1"
          },
          "restart": {
            "file": "restart-service.ps1"
          },
          "uninstall": {
            "file": "uninstall-service.ps1",
            "ignoreErrors": true
          }
        }
      }
    ]
  }
}
```사용자 지정 배포 속성

`name`(필수)  
*유형*: 문자열  
사용자 지정 배포의 고유 이름입니다.

`description` (선택 사항)  
*유형*: 문자열  
사용자 지정 배포에 대한 설명입니다.

`architecture` (선택 사항)  
*유형*: 정수  
*기본값:* 32  
*유효한 값:* 32, 64  
PowerShell 스크립트 실행 모드에 대한 아키텍처 사양

`scripts`(필수)  
*유형:* 객체  
배포 동작을 정의하는 PowerShell 스크립트입니다. 사용자 지정 배포는 다른 배포 유형과 달리 추가적인 스크립트 유형을 지원합니다.

## 배포 스크립트
<a name="dotnet-manifest-schema-scripts"></a>

배포 스크립트는 배포 수명 주기의 특정 시점에 실행되는 PowerShell 스크립트입니다. 배포 유형에 따라 지원되는 스크립트 이벤트가 다릅니다.

### 스크립트 이벤트
<a name="dotnet-manifest-schema-script-events"></a>

배포 유형에 따라 다음 스크립트 이벤트를 사용할 수 있습니다.표준 배포 스크립트(msDeploy 및 aspNetCoreWeb)

`preInstall`  
애플리케이션을 설치하거나 업데이트하기 전에 실행됩니다.

`postInstall`  
애플리케이션을 설치하거나 업데이트한 후에 실행됩니다.

`preRestart`  
애플리케이션을 다시 시작하기 전에 실행됩니다.

`postRestart`  
애플리케이션을 다시 시작한 후 실행됩니다.

`preUninstall`  
애플리케이션을 제거하기 전에 실행됩니다.

`postUninstall`  
애플리케이션을 제거한 후 실행됩니다.사용자 지정 배포 스크립트(사용자 지정 배포만 해당)

`install`  
사용자 지정 배포를 위한 기본 설치 스크립트입니다. 이 스크립트는 애플리케이션 또는 서비스를 설치하는 역할을 합니다.

`restart`  
애플리케이션 또는 서비스를 다시 시작하는 스크립트입니다. 환경이 재시작될 때 직접적으로 호출됩니다.

`uninstall`  
애플리케이션 또는 서비스를 제거하는 스크립트입니다. 환경 종료 또는 애플리케이션 제거 시 직접적으로 호출됩니다.

### 스크립트 속성
<a name="dotnet-manifest-schema-script-properties"></a>

각 스크립트는 다음 속성을 가진 객체로 정의됩니다.

`file`(필수)  
*유형*: 문자열  
매니페스트 파일 기준 PowerShell 스크립트 파일의 상대 경로입니다. 스크립트에는 `.ps1` 확장자가 있어야 합니다.

`ignoreErrors` (선택 사항)  
*유형*: 부울  
*기본값:* false  
`true`로 설정하면 스크립트가 실패하더라도 배포가 계속 진행됩니다. 중요하지 않은 스크립트나 정리 작업에 이 옵션을 사용하세요.

**Example 스크립트 구성 예제**  

```
{
  "scripts": {
    "preInstall": {
      "file": "backup-config.ps1",
      "ignoreErrors": true
    },
    "postInstall": {
      "file": "configure-app.ps1"
    }
  }
}
```

# Windows 플랫폼 브랜치에서 EC2 Fast Launch 사용
<a name="dotnet-ec2fastlaunch"></a>

EC2 Fast Launch 기능은 Elastic Beanstalk 환경에서 Windows 인스턴스 시작 시간을 줄입니다. 이 주제의 목적은 Elastic Beanstalk 환경에서이 기능을 사용하는 방법을 안내하는 것입니다. [2025년 1월 22일](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2025-01-22-windows.html)에 릴리스된 Windows 플랫폼 버전 2.16.2부터 Elastic Beanstalk 플랫폼 릴리스에는 EC2 Fast Launch가 활성화된 기본 AMI가 포함되어 있습니다.

## 기본 EC2 Fast Launch 가용성
<a name="dotnet-ec2fastlaunch-default"></a>

최신 Elastic Beanstalk Windows 플랫폼 버전에는 추가 비용 없이 EC2 Fast Launch가 자동으로 활성화된 기본 AMI 포함되어 있습니다. 그러나 최신 플랫폼 버전이 릴리스되면 이전 플랫폼 버전의 기본 AMI에서는 EC2 Fast Launch가 자동으로 활성화된 상태로 유지되지 않을 수 있습니다.

EC2 Fast Launch가 자동으로 활성화된 기본 AMI를 사용하려면 최신 Windows 플랫폼 버전으로 업그레이드하는 것이 좋습니다. 그러나 기존 플랫폼 버전을 계속 사용해야 하는 경우 환경의 기본 AMI에서 EC2 Fast Launch를 수동으로 활성화할 수 있습니다. 지침은 [수동으로 EC2 Fast Launch 구성](#dotnet-ec2fastlaunch-manual) 섹션을 참조하세요.

## 수동으로 EC2 Fast Launch 구성
<a name="dotnet-ec2fastlaunch-manual"></a>

**참고**  
EC2 Fast Launch를 수동으로 활성화하면 EC2 Fast Launch가 자동으로 활성화된 플랫폼 버전을 사용하는 것보다 추가 비용이 발생할 수 있습니다. EC2 Fast Launch 비용에 대한 자세한 내용은 *Amazon EC2 사용 설명서*의 [EC2 Fast Launch 기본 리소스에 대한 비용 관리](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/win-fast-launch-manage-costs.html) 페이지를 참조하세요.

다음 단계에 따라 Elastic Beanstalk 환경에서 사용하는 Windows 기본 AMI에서 EC2 Fast Launch를 활성화합니다.

**Elastic Beanstalk 환경에서 EC2 Fast Launch를 수동으로 활성화하려면**

1. 환경의 기본 AMI를 식별합니다.

   [사용자 지정 AMI 생성](using-features.customenv.md)의 단계에 따라 환경의 기본 AMI ID를 식별합니다. 사용자 지정 AMI를 생성할 필요가 없습니다. 현재 기본 AMI ID를 찾는 단계만 수행하면 됩니다.

1. AMI에서 EC2 Fast Launch를 활성화합니다.

   *Amazon EC2 사용 설명서*의 [EC2 Fast Launch 활성화](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/win-fast-launch-configure.html) 지침을 사용하여 AMI에 대한 EC2 Fast Launch를 구성합니다.

# .NET 애플리케이션 환경에 Amazon RDS DB 인스턴스 추가
<a name="create_deploy_NET.rds"></a>

여기에서는 Elastic Beanstalk 콘솔을 사용하여 Amazon RDS를 생성하는 방법을 설명합니다. Amazon Relational Database Service(RDS) DB 인스턴스를 통해 애플리케이션이 수집하고 수정하는 데이터를 저장할 수 있습니다. Elastic Beanstalk를 통해 데이터베이스를 환경으로 연결한 후 관리하거나 비연결을 통해 생성하여 외부 기타 서버로 관리할 수 있습니다. 이러한 지침에서 데이터베이스는 Elastic Beanstalk를 통해 사용자 환경에 연결되고 관리됩니다. Elastic Beanstalk를 통한 Amazon RDS 통합에 대한 자세한 내용은 [Elastic Beanstalk 환경에 데이터베이스 추가](using-features.managing.db.md)을 참조하십시오.

**Topics**
+ [환경에 DB 인스턴스 추가](#dotnet-rds-create)
+ [드라이버 다운로드](#dotnet-rds-drivers)
+ [데이터베이스에 연결](#dotnet-rds-connect)

## 환경에 DB 인스턴스 추가
<a name="dotnet-rds-create"></a>

**환경에 DB 인스턴스를 추가하려면**

1. [Elastic Beanstalk 콘솔](https://console.aws.amazon.com/elasticbeanstalk)을 열고 **리전** 목록에서를 선택합니다 AWS 리전.

1. 탐색 창에서 **환경**을 선택한 다음 목록에서 환경의 이름을 선택합니다.

1. 탐색 창에서 **구성**을 선택합니다.

1. **데이터베이스** 구성 범주에서 **편집**을 선택합니다.

1. DB 엔진을 선택하고 사용자 이름과 암호를 입력합니다.

1. 변경 사항을 저장하려면 페이지 하단에서 **적용**을 선택합니다.

DB 인스턴스를 추가하는 데 약 10분 정도 소요됩니다. 환경 업데이트가 완료되면 애플리케이션에서 다음 환경 속성을 통해 DB 인스턴스 호스트 이름과 기타 연결 정보를 사용할 수 있습니다:


| 속성 이름 | 설명 | 속성 값 | 
| --- | --- | --- | 
|  `RDS_HOSTNAME`  |  DB 인스턴스의 호스트 이름입니다.  |  Amazon RDS 콘솔 **연결 및 보안** 탭의 **엔드포인트**입니다.  | 
|  `RDS_PORT`  |  DB 인스턴스가 연결을 허용하는 포트입니다. DB 엔진마다 기본값이 다릅니다.  |  Amazon RDS 콘솔 **연결 및 보안** 탭의 **포트**입니다.  | 
|  `RDS_DB_NAME`  |  데이터베이스 이름은 **ebdb**입니다.  |  Amazon RDS 콘솔 **구성** 탭의 **DB 이름**입니다.  | 
|  `RDS_USERNAME`  |  데이터베이스에 구성된 사용자 이름입니다.  |  Amazon RDS 콘솔 **구성** 탭의 **마스터 사용자 이름**입니다.  | 
|  `RDS_PASSWORD`  |  데이터베이스에 구성된 암호입니다.  |  Amazon RDS 콘솔에서 참조용 정보를 사용할 수 없습니다.  | 

Elastic Beanstalk 환경에 결합된 데이터베이스에 대한 자세한 내용은 [Elastic Beanstalk 환경에 데이터베이스 추가](using-features.managing.db.md)을 참조하세요.

## 드라이버 다운로드
<a name="dotnet-rds-drivers"></a>

`NuGet`으로 개발 환경에 대한 데이터베이스 드라이버와 `EntityFramework` 패키지를 다운로드하여 설치합니다.

**.NET용 일반적인 개체 프레임워크 데이터베이스 공급자**
+ **SQL Server** – `Microsoft.EntityFrameworkCore.SqlServer`
+ **MySQL** – `Pomelo.EntityFrameworkCore.MySql`
+ **PostgreSQL** – `Npgsql.EntityFrameworkCore.PostgreSQL`

## 데이터베이스에 연결
<a name="dotnet-rds-connect"></a>

Elastic Beanstalk에서는 환경 속성을 통해 연결된 DB 인스턴스의 연결 정보를 제공합니다. `ConfigurationManager.AppSettings`를 사용하여 속성을 읽고 데이터베이스 연결을 구성합니다.

**Example Helpers.cs - 연결 문자열 메서드**  

```
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;

namespace MVC5App.Models
{
  public class Helpers
  {
    public static string GetRDSConnectionString()
    {
      var appConfig = ConfigurationManager.AppSettings;

      string dbname = appConfig["RDS_DB_NAME"];

      if (string.IsNullOrEmpty(dbname)) return null;

      string username = appConfig["RDS_USERNAME"];
      string password = appConfig["RDS_PASSWORD"];
      string hostname = appConfig["RDS_HOSTNAME"];
      string port = appConfig["RDS_PORT"];

      return "Data Source=" + hostname + ";Initial Catalog=" + dbname + ";User ID=" + username + ";Password=" + password + ";";
    }
  }
}
```

연결 문자열을 사용하여 데이터베이스 컨텍스트를 초기화합니다.

**Example DBContext.cs**  

```
using System.Data.Entity;
using System.Security.Claims;
using System.Threading.Tasks;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;

namespace MVC5App.Models
{
  public class RDSContext : DbContext
  { 
    public RDSContext()
      : base(GetRDSConnectionString())
    {
    }

    public static RDSContext Create()
    {
      return new RDSContext();
    }
  }
}
```

# 는 AWS Toolkit for Visual Studio
<a name="dotnet-toolkit"></a>

Visual Studio는 여러 프로그래밍 언어와 애플리케이션 유형을 위한 템플릿을 제공합니다. 이러한 템플릿 중 어떤 것이든 선택하여 시작할 수 있습니다. AWS Toolkit for Visual Studio는 애플리케이션 개발을 부트스트랩하는 세 가지 프로젝트 템플릿 AWS 인 콘솔 프로젝트, AWS 웹 프로젝트 및 AWS 빈 프로젝트도 제공합니다. 이 예에서는 새로운 ASP.NET 웹 애플리케이션을 생성할 것입니다.

**새로운 ASP.NET 웹 애플리케이션 프로젝트를 생성하려면**

1. Visual Studio의 **File(파일)** 메뉴에서 **New(새로 만들기)**를 클릭한 후 **Project(프로젝트)**를 클릭합니다.

1. **New Project(새 프로젝트)** 대화 상자에서 **Installed Templates(설치된 템플릿)**를 클릭하고 **Visual C\$1**를 클릭한 후 **Web(웹)**을 클릭합니다. **ASP.NET Empty Web Application(ASP.NET 빈 웹 애플리케이션)**을 클릭하고, 프로젝트 이름을 입력한 후, **확인**을 클릭합니다.

**프로젝트를 실행하려면**

다음 중 하나를 수행하십시오.

1. **F5**를 누릅니다.

1. **Debug(디버그)** 메뉴에서 **Start Debugging(디버깅 시작)**을 선택합니다.

## 로컬에서 테스트
<a name="create_deploy_NET.sdlc.testlocal"></a>

Visual Studio를 사용하면 애플리케이션을 로컬에서 손쉽게 테스트할 수 있습니다. ASP.NET 웹 애플리케이션을 테스트하거나 실행하려면 웹 서버가 필요합니다. Visual Studio는 IIS(인터넷 정보 서비스), IIS Express 또는 기본 제공되는 Visual Studio 개발 서버 등의 여러 옵션을 제공합니다. 이러한 각 옵션에 대해 알아보고 가장 적합한 옵션을 결정하려면 [Web Servers in Visual Studio for ASP.NET Web Projects(ASP.NET 웹 프로젝트용 Visual Studio의 웹 서버)](http://msdn.microsoft.com/en-us/library/58wxa9w5.aspx)를 참조하십시오.

## Elastic Beanstalk 환경 생성
<a name="create_deploy_NET.sdlc.deploy"></a>

애플리케이션을 테스트하면 이를 Elastic Beanstalk에 배포할 준비가 완료됩니다.

**참고**  
[구성 파일](ebextensions.md)은 아카이브에 포함시킬 프로젝트의 일부여야 합니다. 또는 프로젝트에 구성 파일을 포함시키는 대신에 Visual Studio를 사용하여 프로젝트 폴더의 모든 파일을 배포할 수 있습니다. **Solution Explorer(솔루션 탐색기)**에서 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭한 후 **Properties(속성)**를 클릭합니다. **Package/Publish Web(웹 패키징/게시)** 탭을 클릭합니다. **Items to deploy(배포할 항목)** 섹션의 드롭다운 목록에서 **All Files in the Project Folder(프로젝트 폴더 내 모든 파일)**를 선택합니다.

**Visual Studio용 AWS 도구 키트를 사용하여 애플리케이션을 Elastic Beanstalk에 배포하려면**

1. **솔루션 탐색**기에서 애플리케이션을 마우스 오른쪽 버튼으로 클릭한 다음 **게시 대상 AWS**을 선택합니다.

1. ** AWS에 게시** 마법사에서 계정 정보를 입력합니다.

   1. **배포에 사용할AWS 계정**에서 계정을 선택하거나 **기타**를 선택하여 새 계정 정보를 입력합니다.

   1. **Region(리전)**에서 애플리케이션을 배포할 리전을 선택합니다. 사용 가능한 AWS 리전에 대한 자세한 내용은의 [AWS Elastic Beanstalk 엔드포인트 및 할당량을 참조하세요](https://docs.aws.amazon.com/general/latest/gr/elasticbeanstalk.html)*AWS 일반 참조*. Elastic Beanstalk이 지원하지 않는 리전을 선택한 경우 Elastic Beanstalk로의 배포 옵션을 사용할 수 없게 됩니다.

   1.  **Deploy new application with template(템플릿을 사용한 신규 애플리케이션 배포)**을 클릭하고 **Elastic Beanstalk**를 선택합니다. 그런 다음 **다음**을 클릭합니다.  
![\[AWS 마법사 1에 게시\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-create-newapp-template.png)

1. **애플리케이션** 페이지에서 애플리케이션 세부 정보를 입력합니다.

   1. **이름**에 애플리케이션의 이름을 입력합니다.

   1. **설명**에 애플리케이션의 설명을 입력합니다. 이 단계는 선택 사항입니다.

   1. 애플리케이션의 버전 레이블이 **Deployment version label(배포 버전 레이블)**에 자동으로 표시됩니다.

   1. **Deploy application incrementally(증분 방식 애플리케이션 배포)**를 선택하여 변경된 파일만 배포합니다. 모든 파일이 아닌 변경된 파일만 업데이트하므로 증분 배포가 더 빠릅니다. 이 옵션을 선택하면 애플리케이션 버전이 Git 커밋 ID에서 설정됩니다. 애플리케이션을 단계별로 배포하지 않으려는 경우 **배포 버전 레이블** 박스에 버전 레이블을 업데이트할 수 있습니다.  
![\[Beanstalk로 게시 마법사 2\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk1.png)

   1. **다음**을 클릭합니다.

1. **Environment(환경)** 페이지에서 환경 세부 정보를 설명합니다.

   1. **Create a new environment for this application(이 애플리케이션에 대해 새 환경 생성)**을 선택합니다.

   1. **이름**에 환경의 이름을 입력합니다.

   1. **설명**에 환경의 특성을 정의합니다. 이 단계는 선택 사항입니다.

   1. 원하는 환경의 **유형**을 선택합니다.

      **Load balanced, auto scaled(로드 밸런싱 수행, 자동 조정)** 또는 **단일 인스턴스** 환경을 선택할 수 있습니다. 자세한 내용은 [환경 유형](using-features-managing-env-types.md)을(를) 참조하세요.

       
**참고**  
단일 인스턴스 환경의 경우 로드 밸런싱, Auto Scaling, 상태 확인 URL 설정이 적용되지 않습니다.

   1. 커서를 해당 상자로 이동하면 **환경 URL**에 환경 URL이 자동으로 표시됩니다.

   1. **가용성 확인**을 클릭하여 환경 URL의 사용 가능 여부를 확인합니다.  
![\[Beanstalk로 게시 마법사 3\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk2.png)

   1. **다음**을 클릭합니다.

1. **AWS 옵션** 페이지에서 배포에 대한 추가 옵션과 보안 정보를 구성합니다.

   1.  **Container Type(컨테이너 유형)**에서 **64bit Windows Server 2012 running IIS 8(IIS 8 실행 64비트 Windows Server 2012)** 또는 **64bit Windows Server 2008 running IIS 7.5(IIS 7.5 실행 64비트 Windows Server 2008)**를 선택합니다.

   1. **인스턴스 유형**에서 **Micro(마이크로)**를 선택합니다.

   1. **Key pair(키 페어)**에서 **Create new key pair(새 키 페어 생성)**를 선택합니다. 새 키 페어의 이름을 입력한 후(이 예에서는 **myuswestkeypair** 사용), **확인**을 클릭합니다. 키 페어를 사용하여 Amazon EC2 인스턴스에 원격 데스크톱 액세스를 할 수 있습니다. Amazon EC2 키 페어에 대한 자세한 내용은 *Amazon Elastic Compute Cloud 사용 설명서*의 [자격 증명 사용](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-credentials.html)을 참조하십시오.

   1. 인스턴스 프로파일을 선택합니다.

      인스턴스 프로파일이 없는 경우 **Create a default instance profile(기본 인스턴스 프로파일 생성)**을 선택합니다. Elastic Beanstalk에서 인스턴스 프로파일을 사용하는 방법에 대한 자세한 내용은 [Elastic Beanstalk 인스턴스 프로파일 관리](iam-instanceprofile.md) 단원을 참조하십시오.

   1. 환경에서 사용할 사용자 지정 VPC가 있는 경우 **Launch into VPC(VPC로 시작)**를 클릭합니다. 다음 페이지에서 VPC 정보를 구성할 수 있습니다. Amazon VPC에 대한 자세한 내용은 [Amazon Virtual Private Cloud(Amazon VPC)](https://aws.amazon.com/vpc/)를 참조하십시오. 레거시가 아닌 지원 컨테이너 유형 목록은 [일부 플랫폼 버전이 레거시로 표시되는 이유는 무엇입니까?](using-features.migration.md#using-features.migration.why)을 참조하십시오.  
![\[Beanstalk로 게시 마법사 4\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk3b_iam.png)

   1.  **다음**을 클릭합니다.

1. VPC 내에서 환경을 시작하도록 선택한 경우 **VPC Options(VPC 옵션)** 페이지가 표시됩니다. 그렇지 않은 경우 **Additional Options(추가 옵션)** 페이지가 표시됩니다. 여기에서 VPC 옵션을 구성합니다.  
![\[로드 밸런싱 수행 및 확장 가능 환경의 VPC 옵션\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk3b_vpc.png)  
![\[단일 인스턴스 환경의 VPC 옵션\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk3b_vpc-single.png)

   1. 환경을 시작할 VPC의 VPC ID를 선택합니다.

   1. 로드 밸런싱 수행 및 확장 가능 환경의 경우 Elastic Load Balancer를 인터넷에서 사용할 수 없도록 하려면 **ELB 체계(ELB Scheme)**에서 **프라이빗(private)**을 선택합니다.

      단일 인스턴스 환경의 경우, 환경에 로드 밸런서가 없기 때문에 이 옵션이 해당되지 않습니다. 자세한 내용은 [환경 유형](using-features-managing-env-types.md)을(를) 참조하세요.

   1. 로드 밸런싱 수행 및 확장 가능 환경의 경우 Elastic Load Balancer와 EC2 인스턴스의 서브넷을 선택합니다. 퍼블릭 및 프라이빗 서브넷을 만든 경우 탄력적 로드 밸런서와 EC2 인스턴스가 올바른 서브넷에 연결되어 있는지 확인합니다. 기본적으로 Amazon VPC는 10.0.0.0/24를 사용하여 기본 퍼블릭 서브넷을 만들고, 10.0.1.0/24를 사용하여 프라이빗 서브넷을 만듭니다. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)에서 Amazon VPC 콘솔의 기존 서브넷을 볼 수 있습니다.

      단일 인스턴스 환경의 경우, VPC에는 인스턴스의 퍼블릭 서브넷만 필요합니다. 환경에 로드 밸런서가 없기 때문에 로드 밸런서의 서브넷 선택은 해당되지 않습니다. 자세한 내용은 [환경 유형](using-features-managing-env-types.md)을(를) 참조하세요.

   1. 로드 밸런싱 수행 및 확장 가능 환경의 경우 인스턴스에 대해 생성한 보안 그룹을 선택합니다(해당되는 경우).

      단일 인스턴스 환경의 경우, NAT 디바이스가 필요하지 않습니다. 기본 보안 그룹을 선택합니다. Elastic Beanstalk는 인스턴스에 탄력적 IP 주소를 할당하여 인스턴스가 인터넷에 액세스할 수 있도록 합니다.

   1. **다음**을 클릭합니다.

1. **Application Options(애플리케이션 옵션)** 페이지에서 애플리케이션 옵션을 구성합니다.

   1. 대상 프레임워크에서 **.NET Framework 4.0**을 선택합니다.

   1. Elastic Load Balancing은 상태 확인을 사용하여 애플리케이션을 실행하는 Amazon EC2 인스턴스가 정상인지 여부를 확인합니다. 상태 확인은 설정된 간격으로 지정한 URL을 검색하여 인스턴스의 상태를 확인합니다. **애플리케이션 상태 확인 URL** 상자에 애플리케이션 기존 리소스(예: `/myapp/index.aspx`)와 일치하는 기본 URL을 입력하여 덮어쓸 수 있습니다. 상태 확인에 대한 자세한 내용은 [상태 확인](environments-cfg-clb.md#using-features.managing.elb.healthchecks) 단원을 참조하십시오.

   1. 애플리케이션에 영향을 주는 중요 이벤트에 대한 Amazon Simple Notification Service(Amazon SNS) 알림을 받으려면 이메일 주소를 입력합니다.

   1. **Application Environment(애플리케이션 환경)** 섹션에서 애플리케이션을 실행하는 Amazon EC2 인스턴스의 환경 변수를 지정할 수 있습니다. 이 설정을 사용하면 환경 간에 이동할 때 소스 코드를 다시 컴파일할 필요가 없어 이동성이 향상됩니다.

   1. 애플리케이션을 배포하는 데 사용할 애플리케이션 보안 인증 옵션을 선택합니다.  
![\[Beanstalk로 게시 마법사 6\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk3a.png)

   1. **다음**을 클릭합니다.

1. Amazon RDS 데이터베이스를 이전에 설정한 경우 **Amazon RDS DB Security Group(Amazon RDS DB 보안 그룹)** 페이지가 나타납니다. Elastic Beanstalk 환경을 Amazon RDS DB 인스턴스에 연결하려면 보안 그룹을 하나 이상 선택합니다. 그렇지 않은 경우 다음 단계로 이동합니다. 준비가 되면 **다음**을 선택합니다.  
![\[Beanstalk로 게시 마법사 7\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk6b.png)

1.  배포 옵션을 검토합니다. 의도한 대로 설정되었으면 **배포**를 클릭합니다.  
![\[Beanstalk로 게시 마법사 8\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk4.png)

   Elastic Beanstalk를 통해 ASP.NET 프로젝트가 웹 배포 파일로 내보내지고, Amazon S3에 업로드되며, 새로운 애플리케이션 버전으로 등록됩니다. Elastic Beanstalk 배포 기능은 새롭게 개발된 코드에 사용할 수 있게 될 때까지 환경을 모니터링합니다. env:<environment name> 탭에서 환경의 상태를 볼 수 있습니다.  
![\[환경 상태\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-env-status.png)

## 환경 종료
<a name="create_deploy_NET.terminating"></a>

미사용 AWS 리소스에 대한 요금이 발생하지 않도록 AWS Toolkit for Visual Studio를 사용하여 실행 중인 환경을 종료할 수 있습니다.

**참고**  
 이후에 동일 버전을 사용하여 언제든 새 환경을 시작할 수 있습니다.

**환경을 종료하려면**

1.  **AWS Explorer**에서 Elastic Beanstalk 노드와 애플리케이션 노드를 확장합니다. 애플리케이션 환경을 마우스 오른쪽 버튼으로 클릭하고 **Terminate Environment(환경 종료)**를 선택합니다.

1. 메시지가 표시되면 **예**를 클릭하여 환경을 종료하고자 함을 확인합니다. Elastic Beanstalk가 환경에서 실행 중인 AWS 리소스를 종료하는 데 몇 분 정도 걸립니다.  
![\[Elastic Beanstalk 환경 종료 대화 상자\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-terminate-confirm.png)
**참고**  
환경을 종료하면 종료된 환경에 연결되어 있던 CNAME을 누구나 사용할 수 있게 됩니다.

# 환경에 배포
<a name="create_deploy_NET.sdlc.create.edit"></a>

애플리케이션을 테스트했으므로 애플리케이션을 손쉽게 편집 및 재배포하고 결과를 곧바로 볼 수 있습니다.

 **ASP.NET 웹 애플리케이션을 편집 및 재배포하려면 ** 

1.  **Solution Explorer(솔루션 탐색기)**에서 애플리케이션을 마우스 오른쪽 버튼으로 클릭한 다음 **Republish to Environment <* your environment name*>**을 클릭합니다. ** AWS Elastic Beanstalk에 다시 게시** 마법사가 열립니다.  
![\[Beanstalk에 게시 마법사 1\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-republish-beanstalk-sameenv.png)

1.  배포 세부 정보를 검토하고 **배포**를 클릭합니다.
**참고**  
설정을 변경하려면 **취소**를 클릭하고 대신에 ** AWS에 게시** 마법사를 사용하면 됩니다. 지침은 [Elastic Beanstalk 환경 생성](dotnet-toolkit.md#create_deploy_NET.sdlc.deploy) 섹션을 참조하세요.

   업데이트된 ASP.NET 웹 프로젝트가 새로운 버전 레이블의 웹 배포 파일로 내보내지고, Amazon S3에 업로드되며, Elastic Beanstalk를 통해 새 애플리케이션 버전으로 등록됩니다. Elastic Beanstalk 배포 기능은 새로 배포한 코드를 기존 환경에서 사용할 수 있게 될 때까지 기존 환경을 모니터링합니다. **env:<*environment name*>** 탭에서 환경의 상태를 볼 수 있습니다.

예를 들어, 이전 애플리케이션 버전으로 롤백해야 하는 경우 기존 애플리케이션을 기존 환경에 배포할 수도 있습니다.

**애플리케이션 버전을 기존 환경에 배포하려면**

1. **AWS Explorer**에서 Elastic Beanstalk 노드를 확장하여 Elastic Beanstalk 애플리케이션을 마우스 오른쪽 버튼으로 클릭합니다. **상태 보기**를 선택합니다.

1. **App: <*application name*>** 탭에서 **버전**을 클릭합니다.  
![\[애플리케이션 버전\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-publish-app-version.png)

1. 배포할 애플리케이션 버전을 클릭하고 **Publish Version(버전 게시)**를 클릭합니다.

1.  **Publish Application Version(애플리케이션 버전 게시)** 마법사에서 **다음**을 클릭합니다.  
![\[애플리케이션 버전 게시 마법사 1\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-republish-beanstalk2a.png)

1.  배포 옵션을 검토하고 **배포**를 클릭합니다.  
![\[애플리케이션 버전 게시 마법사 2\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-publish-app-version-wizard3.png)

   ASP.NET 프로젝트가 웹 배포 파일로 내보내지고 Amazon S3에 업로드됩니다. Elastic Beanstalk 배포 기능은 새롭게 개발된 코드에 사용할 수 있게 될 때까지 환경을 모니터링합니다. **env:<*environment name*>** 탭에서 환경의 상태를 볼 수 있습니다.

# Elastic Beanstalk 애플리케이션 환경 관리
<a name="create_deploy_NET.managing"></a>

 AWS Toolkit for Visual Studio 및 AWS Management Console을 사용하면 애플리케이션 환경에서 사용하는 AWS 리소스의 프로비저닝 및 구성을 변경할 수 있습니다. AWS Management Console을 사용하여 애플리케이션 환경을 관리하는 방법에 대한 자세한 내용은 섹션을 참조하세요[Elastic Beanstalk 환경 관리](using-features.managing.md). 이 섹션에서는 애플리케이션 환경 구성의 일부로 AWS Toolkit for Visual Studio에서 편집할 수 있는 특정 서비스 설정을 다룹니다.

## 환경 구성 설정 변경
<a name="create_deploy_NET.managing.env"></a>

애플리케이션을 배포할 때 Elastic Beanstalk는 여러 AWS 클라우드 컴퓨팅 서비스를 구성합니다. AWS Toolkit for Visual Studio를 사용하여 이러한 개별 서비스를 구성하는 방법을 제어할 수 있습니다.

**애플리케이션의 환경 설정을 업데이트하려면**
+ Elastic Beanstalk 노드와 애플리케이션 노드를 확장합니다. 그런 다음 **AWS Explorer**에서 Elastic Beanstalk 환경을 마우스 오른쪽 버튼으로 클릭합니다. **상태 보기**를 선택합니다.

  다음에 대한 설정을 구성할 수 있습니다.
  + 서버
  + 로드 밸런싱
  + AutoScaling
  + 알림
  + 환경 속성

# Visual Studio용 AWS 도구 키트를 사용하여 EC2 서버 인스턴스 구성
<a name="create_deploy_NET.managing.ec2"></a>

Amazon Elastic Compute Cloud(Amazon EC2)는 Amazon의 데이터 센터에서 서버 인스턴스를 시작하고 관리할 때 사용하는 웹 서비스입니다. 합법적인 목적으로 필요한 기간만큼 언제든 Amazon EC2 서버 인스턴스를 사용할 수 있습니다. 인스턴스는 다양한 크기 및 구성으로 사용할 수 있습니다. 자세한 내용은 [Amazon EC2](https://aws.amazon.com/ec2/)를 참조하십시오.

 AWS Toolkit for Visual Studio의 애플리케이션 환경 탭 내에 있는 **서버** 탭을 사용하여 Elastic Beanstalk 환경의 Amazon EC2 인스턴스 구성을 편집할 수 있습니다.

![\[Elastic Beanstalk 서버 구성 패널\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-server.png)


## Amazon EC2 인스턴스 유형
<a name="create_deploy_NET.managing.ec2.instancetypes"></a>

**인스턴스 유형**에는 Elastic Beanstalk 애플리케이션에서 사용할 수 있는 인스턴스 유형이 표시됩니다. 인스턴스 유형을 변경하여 애플리케이션에 가장 적합한 특성(메모리 크기와 CPU 전력 포함)을 지닌 서버를 선택합니다. 예를 들어 집약적인 장기 실행 작업을 수행하는 애플리케이션은 더 큰 CPU나 메모리를 필요로 할 수 있습니다.

Elastic Beanstalk 애플리케이션에 사용할 수 있는 Amazon EC2 인스턴스 유형에 대한 자세한 내용은 *Amazon Elastic Compute Cloud 사용 설명서*의 [인스턴스 유형](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)을 참조하세요.

## Amazon EC2 보안 그룹
<a name="create_deploy_NET.managing.ec2.securitygroups"></a>

*Amazon EC2 보안 그룹*을 사용하여 Elastic Beanstalk 애플리케이션에 대한 액세스를 제어할 수 있습니다. 보안 그룹은 인스턴스의 방화벽 규칙을 정의합니다. 이러한 규칙은 인스턴스에 전달되어야 하는 수신 네트워크 트래픽을 지정합니다. 기타 모든 수신 트래픽은 삭제됩니다. 언제든지 그룹에 대한 규칙을 수정할 수 있습니다. 새 규칙은 실행 중인 인스턴스와 이후에 시작되는 인스턴스에 모두 자동으로 적용됩니다.

 AWS Management Console을 사용하거나 AWS Toolkit for Visual Studio를 사용하여 Amazon EC2 보안 그룹을 설정할 수 있습니다. **EC2 보안 그룹** 텍스트 상자에 Amazon EC2 보안 그룹 이름을 하나 이상 입력(쉼표로 구분)하여 Elastic Beanstalk 애플리케이션에 대한 액세스를 제어할 Amazon EC2 보안 그룹을 지정할 수 있습니다.

**참고**  
애플리케이션의 상태 확인을 활성화하려면 0.0.0.0/0(소스 CIDR 범위)에서 포트 80(HTTP)에 액세스할 수 있도록 합니다. 상태 확인에 대한 자세한 내용은 [상태 확인](create_deploy_NET.managing.elb.md#create_deploy_NET.managing.elb.healthchecks) 단원을 참조하십시오.

**Visual Studio용 AWS 도구 키트를 사용하여 보안 그룹을 생성하려면**

1.  Visual Studio의 **AWS Explorer**에서 **Amazon EC2** 노드를 확장한 후 **보안 그룹**을 두 번 클릭합니다.

1.  **Create Security Group(보안 그룹 생성)**을 클릭하고 보안 그룹의 이름과 설명을 입력합니다.

1.  **확인**을 클릭합니다.

Amazon EC2 보안 그룹에 대한 자세한 내용은 *Amazon Elastic Compute Cloud 사용 설명서*의 [보안 그룹 사용](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)을 참조하십시오.

## Amazon EC2 키 페어
<a name="create_deploy_NET.managing.ec2.keypair"></a>

Amazon EC2 키 페어로 Elastic Beanstalk 애플리케이션에 대해 프로비저닝된 Amazon EC2 인스턴스에 안전하게 로그인할 수 있습니다.

**중요**  
Elastic Beanstalk에서 프로비저닝되는 Amazon EC2 인스턴스에 액세스하기 전 Amazon EC2 키 페어를 사용하려면, Amazon EC2 키 페어를 만들고 Elastic Beanstalk에서 프로비저닝되는 Amazon EC2 인스턴스를 구성해야 합니다. 애플리케이션을 Elastic Beanstalk에 배포할 때 AWS Toolkit for Visual Studio의 **게시 마법사를 AWS** 사용하여 키 페어를 생성할 수 있습니다. 도구 키트를 사용하여 키 페어를 추가로 만들려면 아래 단계를 따르십시오. 또는 [AWS 관리 콘솔](https://console.aws.amazon.com/)을 사용하여 Amazon EC2 키 페어를 설정할 수 있습니다. Amazon EC2의 키 페어를 만드는 방법은 [Amazon Elastic Compute Cloud 시작 안내서](https://docs.aws.amazon.com/AWSEC2/latest/GettingStartedGuide/)를 참조하십시오.

 **기존 키 페어** 텍스트 상자를 통해 Elastic Beanstalk 애플리케이션을 실행하는 Amazon EC2 인스턴스에 안전하게 로그인하는 데 사용할 수 있는 Amazon EC2 키 페어의 이름을 지정할 수 있습니다.

**Amazon EC2 키 페어의 이름을 지정하려면**

1. **Amazon EC2** 노드를 확장한 후 **Key Pairs(키 페어)**를 두 번 클릭합니다.

1.  **Create Key Pair(키 페어 생성)**를 클릭한 후 키 페어 이름을 입력합니다.

1.  **확인**을 클릭합니다.

Amazon EC2 키 페어에 대한 자세한 내용은 *Amazon Elastic Compute Cloud 사용 설명서*의 [Amazon EC2 자격 증명 사용](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-credentials.html)을 참조하십시오. Amazon EC2 인스턴스 연결에 대한 자세한 내용은 [서버 인스턴스 나열 및 연결](create_deploy_NET.ec2connect.md) 단원을 참조하십시오.

## 모니터링 간격
<a name="create_deploy_NET.managing.monitoring"></a>

 기본 Amazon CloudWatch 지표만 기본적으로 활성화됩니다. 5분 간 데이터를 반환합니다. AWS Toolkit for Eclipse에서 환경에 해당하는 **구성** 탭의 **서버** 섹션에서 **모니터링 간격**을 **1분**으로 선택하여 좀 더 세분화된 1분 CloudWatch 지표를 활성화할 수 있습니다.

**참고**  
1분 간격 지표에 Amazon CloudWatch 서비스 요금이 부과될 수 있습니다. 자세한 내용은 [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/)를 참조하십시오.

## 사용자 지정 AMI ID
<a name="create_deploy_NET.managing.customami"></a>

 AWS Toolkit for Eclipse에서 해당 환경에 대한 **구성** 탭의 **서버** 섹션에서 **사용자 지정 AMI ID** 상자에 사용자 지정 AMI의 식별자를 입력하여 Amazon EC2 인스턴스에 사용되는 기본 AMI를 고유한 사용자 지정 AMI로 재정의할 수 있습니다.

**중요**  
고유한 AMI를 사용하는 것은 고급 작업이므로 주의해서 사용해야 합니다. 사용자 지정 AMI가 필요한 경우 기본 Elastic Beanstalk AMI로 시작한 후 수정하는 것이 좋습니다. 정상으로 간주되기 위해 Elastic Beanstalk는 Amazon EC2 인스턴스가 호스트 관리자 실행 등의 요구 사항 세트를 충족할 것으로 기대합니다. 이 요구사항이 충족되지 않으면 환경이 제대로 작동하지 않을 수 있습니다.

# Visual Studio용 AWS 툴킷을 사용하여 Elastic Load Balancing 구성
<a name="create_deploy_NET.managing.elb"></a>

Elastic Load Balancing은 애플리케이션의 가용성과 확장성을 향상하는 Amazon의 웹 서비스입니다. 이 서비스를 통해 2개 이상의 Amazon EC2 인스턴스 간에 이루어지는 애플리케이션 로드를 쉽게 분산할 수 있습니다. Elastic Load Balancing은 중복성을 통해 가용성을 지원하고, 애플리케이션의 트래픽을 늘립니다.

 Elastic Load Balancing은 들어오는 애플리케이션 트래픽을 실행 중인 모든 인스턴스에 자동으로 분산할 수 있게 해 줍니다. 또한 이 서비스를 사용하면 애플리케이션 용량을 늘려야 할 때 새 인스턴스를 쉽게 추가할 수 있습니다.

 애플리케이션을 배포할 때 Elastic Beanstalk에서는 Elastic Load Balancing을 자동으로 프로비저닝합니다. AWS Toolkit for Visual Studio의 애플리케이션 환경 탭 내에 있는 **Load Balancer** 탭을 사용하여 Elastic Beanstalk 환경의 Amazon EC2 인스턴스 구성을 편집할 수 있습니다.

![\[Elastic Beanstalk Elastic Load Balancing 구성 패널\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-loadbalancer.png)


 다음 섹션에서는 애플리케이션에 대해 구성할 수 있는 Elastic Load Balancing 파라미터에 대해 설명합니다.

## 포트
<a name="create_deploy_NET.managing.elb.ports"></a>

Elastic Beanstalk 애플리케이션의 요청을 처리하도록 프로비저닝된 로드 밸런서는 애플리케이션을 실행하는 Amazon EC2 인스턴스로 요청을 전송합니다. 프로비저닝된 로드 밸런서는 HTTP 및 HTTPS 포트에서 요청을 수신하고 요청을 AWS Elastic Beanstalk 애플리케이션의 Amazon EC2 인스턴스로 라우팅할 수 있습니다. 기본적으로 로드 밸런서는 HTTP 포트의 요청을 처리합니다. 포트(HTTP 또는 HTTPS) 중 한 개 이상을 활성화해야 합니다.

![\[Elastic Beanstalk Elastic Load Balancing 구성 - 포트\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-loadbalancer-ports.png)


**중요**  
지정한 포트가 잠겨 있지 않은지 확인합니다. 그렇지 않으면 사용자가 Elastic Beanstalk 애플리케이션에 연결할 수 없습니다.

### HTTP 포트 제어
<a name="create_deploy_NET.managing.elb.ports.http"></a>

HTTP 포트를 비활성화하려면 **HTTP Listener Port(HTTP 리스너 포트)**에 대해 **끄기**를 선택합니다. HTTP 포트를 활성화하려면 목록에서 HTTP 포트를 선택합니다(예: **80**).

**참고**  
포트 8080처럼 기본 포트 80 이외의 포트를 이용해 환경에 액세스하려면 기존 로드 밸런서에 리스너를 추가하고 새 리스너에서 해당 포트에 대해 수신 대기하도록 구성합니다.  
예를 들어, [AWS CLI for Classic Load Balancers](https://docs.aws.amazon.com/cli/latest/reference/elb/create-load-balancer-listeners.html)를 사용해 다음 명령을 입력하여 *LOAD\$1BALANCER\$1NAME*을 Elastic Beanstalk의 로드 밸런서 이름으로 바꿉니다.  

```
aws elb create-load-balancer-listeners --load-balancer-name LOAD_BALANCER_NAME --listeners "Protocol=HTTP, LoadBalancerPort=8080, InstanceProtocol=HTTP, InstancePort=80"
```
예를 들어, [AWS CLI for Application Load Balancers](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-listener.html)를 사용해 다음 명령을 입력하여 *LOAD\$1BALANCER\$1ARN*을 Elastic Beanstalk의 로드 밸런서 ARN으로 바꿉니다.  

```
aws elbv2 create-listener --load-balancer-arn LOAD_BALANCER_ARN --protocol HTTP --port 8080
```
Elastic Beanstalk이 환경을 모니터링하도록 설정하려면 포트 80에서 리스너를 제거하지 마십시오.

### HTTPS 포트 제어
<a name="create_deploy_NET.managing.elb.ports.https"></a>

Elastic Load Balancing에서는 로드 밸런서에 대한 클라이언트 연결에 대해 트래픽 암호화를 활성화하도록 HTTPS/TLS 프로토콜을 지원합니다. 로드 밸런서에서 EC2 인스턴스로 연결할 때 일반 텍스트 암호화를 사용합니다. 기본적으로 HTTPS 포트는 비활성화되어 있습니다.

**HTTPS 포트를 활성화하려면**

1.  AWS Certificate Manager (ACM)을 사용하여 새 인증서를 생성하거나 인증서와 키를 AWS Identity and Access Management (IAM)에 업로드합니다. ACM 인증서 요청에 대한 자세한 내용은 *AWS Certificate Manager 사용 설명서*의 [인증서 요청](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request.html)을 참조하세요. 서드 파티 인증서를 ACM으로 가져오는 방법에 대한 자세한 내용은 *AWS Certificate Manager 사용 설명서*의 [인증서 가져오기](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)를 참조하세요. 해당 [리전에서 ACM을 사용할](https://docs.aws.amazon.com/general/latest/gr/acm.html) 수 없는 경우 AWS Identity and Access Management (IAM)을 사용하여 타사 인증서를 업로드합니다. ACM 및 IAM 서비스는 인증서를 저장하고 SSL 인증서에 Amazon 리소스 이름(ARN)을 제공합니다. 인증서를 생성하고 IAM에 업로드하는 방법에 대한 자세한 내용은 [IAM 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingServerCerts.html)의 *서버 인증서 작업*을 참조하십시오.

1. **HTTPS Listener Port(HTTPS 리스너 포트)**에 대한 포트를 선택하여 HTTPS 포트를 지정합니다.  
![\[Elastic Beanstalk Elastic Load Balancing 구성 - SSL\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-elb-ssl.png)

1. **SSL 인증서 ID** 텍스트 상자에 SSL 인증서의 Amazon 리소스 이름(ARN)을 입력합니다. 예: **arn:aws:iam::123456789012:server-certificate/abc/certs/build** 또는 **arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678**. 1단계에서 생성했거나 업로드한 SSL 인증서를 사용합니다.

HTTPS 포트를 비활성화하려면 **HTTPS Listener Port(HTTPS 리스너 포트)**에 대해 **끄기**를 선택합니다.

## 상태 확인
<a name="create_deploy_NET.managing.elb.healthchecks"></a>

상태 확인 정의에는 인스턴스 상태를 쿼리할 URL이 포함됩니다. 기본적으로 Elastic Beanstalk는 레거시가 아닌 컨테이너에는 TCP:80을, 레거시 컨테이너에는 HTTP:80을 사용합니다. 애플리케이션의 기존 리소스(예: `/myapp/default.aspx`)와 일치하도록 **애플리케이션 상태 점검 URL** 상자에 기본 URL을 입력하여 재정의할 수 있습니다. 기본 URL을 재정의하는 경우, Elastic Beanstalk는 HTTP를 사용하여 리소스를 쿼리합니다. 레거시 컨테이너 유형을 사용하는지 여부를 확인하려면 [일부 플랫폼 버전이 레거시로 표시되는 이유는 무엇입니까?](using-features.migration.md#using-features.migration.why) 단원을 참조하십시오.

 **로드 밸런싱** 패널의 **EC2 인스턴스 상태 확인** 섹션을 사용하여 상태 확인의 설정을 제어할 수 있습니다.

![\[Elastic Beanstalk Elastic Load Balancing 구성 - 상태 확인\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-loadbalancer-healthcheck.png)


상태 확인 정의에는 인스턴스 상태를 쿼리할 URL이 포함됩니다. 애플리케이션의 기존 리소스에 일치하도록 **애플리케이션 상태 점검 URL** 상자에 기본 URL을 입력하여 재정의할 수 있습니다(예: `/myapp/index.jsp`).

아래 목록은 애플리케이션에 대해 설정할 수 있는 상태 확인 파라미터에 대한 설명입니다.
+ **상태 확인 간격(초)**에 애플리케이션의 Amazon EC2 인스턴스에 대한 상태 확인 사이에 Elastic Load Balancing의 대기 시간을 초로 입력합니다.
+  **상태 확인 제한 시간(초)**에 인스턴스가 응답하지 않는다고 간주되기 전 Elastic Load Balancing의 응답 대기 시간을 초로 지정합니다.
+ **정상 확인 개수 임계 값** 및 **비정상 확인 개수 임계 값**에 Elastic Load Balancing이 인스턴스 상태를 변경하기 전 연속적으로 성공하거나 실패하는 URL 프로브의 개수를 지정합니다. 예를 들어 **비정상 확인 개수 임계 값**에 **5**를 지정하면 해당 URL에서 오류 메시지나 제한 시간을 5회 연속 반환해야 Elastic Load Balancing이 상태 확인을 실패로 간주한다는 의미입니다.

## 세션
<a name="create_deploy_NET.managing.elb.sessions"></a>

기본적으로 로드 밸런서는 로드가 가장 적은 서버 인스턴스에 요청을 각각 독립적으로 라우팅합니다. 이에 비해, 고정 세션은 세션 중에 사용자로부터 나오는 모든 요청이 동일한 서버 인스턴스로 전송되도록 사용자 세션을 동일한 특성 서버 인스턴스에 바인딩합니다.

 Elastic Beanstalk는 애플리케이션에 대해 고정 세션을 활성화할 때 로드 밸런서가 생성한 HTTP 쿠키를 사용합니다. 로드 밸런서가 특별한 로드 밸런서 생성 쿠키를 사용하여 각 요청에 대한 애플리케이션 인스턴스를 추적합니다. 로드 밸런서는 요청을 받으면 가장 먼저요청에 쿠키가 있는지 여부를 확인합니다. 쿠키가 있으면 해당 요청이 쿠키에 지정된 애플리케이션 인스턴스에 전송됩니다. 쿠키가 없는 경우에는 로드 밸런서가 기존 로드 밸런싱 알고리즘을 기반으로 애플리케이션 인스턴스를 선정합니다. 동일한 사용자의 후속 요청이 계속 해당 애플리케이션 인스턴스에 바인딩되도록 쿠키가 응답에 삽입됩니다. 정책 구성에서 각 쿠키의 유효 기간을 설정하는 쿠키 만료 시한을 정의합니다.

**로드 밸런서** 탭의 **세션** 섹션을 사용하여 애플리케이션에 대한 로드 밸런서의 세션 고정 허용 여부를 지정할 수 있습니다.

![\[Elastic Beanstalk Elastic Load Balancing 구성 - 세션\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-loadbalancer-sessions.png)


 Elastic Load Balancing에 대한 자세한 내용은 [Elastic Load Balancing 개발자 안내서](https://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/)를 참조하십시오.

# Visual Studio용 AWS 툴킷을 사용하여 Auto Scaling 구성
<a name="create_deploy_NET.managing.as"></a>

Amazon EC2 Auto Scaling은 사용자 정의 트리거를 기반으로 Amazon EC2 인스턴스를 자동으로 시작하거나 종료하도록 설계된 Amazon의 웹 서비스입니다. 사용자는 *Auto Scaling 그룹*을 설정하고 *트리거*를 이 그룹에 연결하여 대역폭 사용량이나 CPU 사용률 등의 측정치에 따라 컴퓨팅 리소스를 자동으로 조정할 수 있습니다. Amazon EC2 Auto Scaling은 Amazon CloudWatch와 함께 작동하여 애플리케이션을 실행하는 서버 인스턴스의 측정치를 검색합니다.

Amazon EC2 Auto Scaling을 통해 Amazon EC2 인스턴스 그룹을 가져와서 이 그룹의 수를 자동으로 늘리거나 줄이도록 여러 파라미터를 설정합니다. Amazon EC2 Auto Scaling은 해당 그룹의 Amazon EC2 인스턴스를 추가하거나 제거하여 애플리케이션에 대한 트래픽 변경을 순조롭게 해결할 수 있습니다.

 Amazon EC2 Auto Scaling은 시작하는 각 Amazon EC2 인스턴스의 상태를 모니터링하기도 합니다. 인스턴스가 예기치 않게 종료된 경우 Amazon EC2 Auto Scaling은 종료를 감지하고 대체 인스턴스를 시작합니다. 이 기능을 통해 Amazon EC2 인스턴스의 일정한 수를 원하는 대로 자동으로 유지할 수 있습니다.

Elastic Beanstalk는 애플리케이션에 Amazon EC2 Auto Scaling을 프로비저닝합니다. AWS Toolkit for Visual Studio의 애플리케이션 환경 탭 내에 있는 **Auto Scaling** 탭을 사용하여 Elastic Beanstalk 환경의 Amazon EC2 인스턴스 구성을 편집할 수 있습니다.

![\[Elastic Beanstalk Auto Scaling 구성 패널\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-autoscaling.png)


다음 단원에서는 애플리케이션의 Auto Scaling 파라미터를 구성하는 방법에 대해 다룹니다.

## 구성 시작
<a name="create_deploy_NET.managing.as.launchconfig"></a>

시작 구성을 편집하여 Elastic Beanstalk 애플리케이션이 Amazon EC2 Auto Scaling 리소스를 프로비저닝하는 방법을 제어할 수 있습니다.

**최소 인스턴스 수** 및 **최대 인스턴스 수** 상자를 통해 Elastic Beanstalk 애플리케이션이 사용하는 Auto Scaling 그룹의 최소 크기와 최대 크기를 지정할 수 있습니다.

![\[Elastic Beanstalk Auto Scaling 시작 구성 파일 구성 창\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-autoscaling-launchconfig.png)


**참고**  
Amazon EC2 인스턴스의 수를 일정하게 유지하려면 **최소 인스턴스 수** 및 **최대 인스턴스 수**를 같은 값으로 설정합니다.

**가용 영역** 상자를 통해 Amazon EC2 인스턴스가 위치할 가용 영역의 수를 지정할 수 있습니다. 내결함성을 갖춘 애플리케이션을 빌드하려면 이 수를 지정하십시오. 한 가용 영역의 작동이 중지되더라도 다른 가용 영역에서 인스턴스를 계속 실행할 수 있습니다.

**참고**  
현재, 인스턴스가 어떤 가용 영역에 있을지 지정할 수는 없습니다.

## 트리거
<a name="create_deploy_NET.managing.as.trigger"></a>

*트리거*는 언제 인스턴스 수를 늘리고(*확장*) 줄이는지(*축소*) 시스템에게 전달하도록 설정된 Amazon EC2 Auto Scaling 메커니즘입니다. CPU 사용률 등 Amazon CloudWatch에 게시되는 측정치에 *실행*할 트리거를 구성하고 지정한 조건이 충족되었는지 여부를 판단할 수 있습니다. 측정치로 지정된 조건의 상한 또는 하한 임계값이 지정된 기간을 넘으면, 트리거는 *크기 조정 활동*이라는 오래 실행되는 프로세스를 시작합니다.

 AWS Toolkit for Visual Studio를 사용하여 Elastic Beanstalk 애플리케이션에 대한 조정 트리거를 정의할 수 있습니다.

![\[Elastic Beanstalk Auto Scaling 트리거\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-autoscaling-triggers.png)


Amazon EC2 Auto Scaling 트리거는 인스턴스에 대한 특정 Amazon CloudWatch 측정치를 관찰하여 작동합니다. 트리거에는 CPU 사용률, 네트워크 트래픽 및 디스크 활동 내역이 포함되었습니다. **트리거 측정** 설정을 사용하여 트리거의 측정치를 선택합니다.

다음 목록은 AWS Management Console을 사용하여 구성할 수 있는 트리거 파라미터를 설명합니다.
+ 트리거가 사용할 통계를 지정할 수 있습니다. **트리거 통계**에 **최소**, **최대**, **합계** 또는 **평균**을 선택할 수 있습니다.
+ **측정 단위**에서 트리거 측정의 단위를 지정합니다.
+ **측정 기간** 상자의 값은 트리거의 측정치에 대한 Amazon CloudWatch의 측정 빈도를 지정합니다. 측정치가 **위반 기간** 시간 동안 정해진 한도(**상위 임계 값** 및 **하위 임계 값**에 지정)를 넘으면 트리거가 작동합니다.
+ **상위 위반 눈금 증가** 및 **하위 위반 눈금 증가**에서 조정 활동을 수행할 때 추가하거나 제거할 Amazon EC2 인스턴스의 개수를 지정합니다.

Amazon EC2 Auto Scaling에 대한 자세한 내용은 *Amazon Elastic Compute Cloud 설명서*의 [Amazon EC2 Auto Scaling](https://aws.amazon.com/documentation/ec2/) 섹션을 참조하십시오.

# Visual Studio용 AWS 툴킷을 사용하여 알림 구성
<a name="create_deploy_NET.container.sns"></a>

Elastic Beanstalk에서는 Amazon Simple Notification Service(Amazon SNS)를 사용하여 환경에 영향을 미치는 중요 이벤트에 대한 알림을 받습니다. Amazon SNS 알림을 활성화하려면 **이메일 주소** 상자에 이메일 주소를 입력하기만 하면 됩니다. 이 알림을 비활성화하려면 상자에서 이메일 주소를 삭제합니다.

![\[Elastic Beanstalk 알림 창\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-notifications.png)


# Visual Studio용 AWS 툴킷을 사용하여 .NET 컨테이너 구성
<a name="create_deploy_NET.container"></a>

 **컨테이너/.NET 옵션** 패널로 Amazon EC2 인스턴스의 동작을 미세 조정하고, Amazon S3 로그 순환을 활성화하거나 비활성화할 수 있습니다. AWS Toolkit for Visual Studio를 사용하여 컨테이너 정보를 구성할 수 있습니다.

**참고**  
환경의 CNAME을 전환하여 가동 중지가 발생하지 않도록 구성 설정을 수정할 수 있습니다. 자세한 내용은 [Elastic Beanstalk를 사용한 블루/그린 배포](using-features.CNAMESwap.md)을(를) 참조하세요.

필요에 따라 파라미터 개수를 늘릴 수 있습니다. 파라미터를 늘리는 방법에 대한 자세한 내용은 [옵션 설정](ebextensions-optionsettings.md) 단원을 참조하십시오.

**Elastic Beanstalk 애플리케이션에 대한 컨테이너/.NET 옵션 패널에 액세스하려면**

1.  AWS Toolkit for Visual Studio에서 Elastic Beanstalk 노드와 애플리케이션 노드를 확장합니다.

1. **AWS Explorer**에서 Elastic Beanstalk 환경을 두 번 클릭합니다.

1. **개요** 창의 하단에서 **구성** 탭을 클릭합니다.

1. **컨테이너**에서 컨테이너 옵션을 구성할 수 있습니다.  
![\[Elastic Beanstalk 컨테이너 패널\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-container.png)

## .NET 컨테이너 옵션
<a name="create_deploy_NET.container.vs.options"></a>

애플리케이션에 대한 .NET Framework 버전을 선택할 수 있습니다. **Target runtime(대상 런타임)**에 대해 2.0 또는 4.0을 선택합니다. 32비트 애플리케이션을 활성화하려면 **Enable 32-bit Applications(32비트 애플리케이션 활성화)**를 선택합니다.

## 애플리케이션 설정
<a name="create_deploy_NET.container.vs.options.envprop"></a>

**애플리케이션 설정** 섹션에서는 애플리케이션 코드에서 읽을 수 있는 환경 변수를 지정할 수 있습니다.

![\[Elastic Beanstalk 컨테이너 패널\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-container-envproperties.png)


# 계정 관리
<a name="create_deploy_NET.accounts"></a>

## 
<a name="create_deploy_NET.accounts.details"></a>

테스트, 스테이징 및 프로덕션과 같은 다양한 작업을 수행하도록 다른 AWS 계정을 설정하려면 AWS Toolkit for Visual Studio를 사용하여 계정을 추가, 편집 및 삭제할 수 있습니다.

**여러 계정을 관리하려면**

1.  Visual Studio의 **보기** 메뉴에서 **AWS Explorer**를 클릭합니다.

1.  **Account(계정)** 목록 옆에서 **Add Account(계정 추가)** 버튼을 클릭합니다.  
![\[AWS 탐색기 탭\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-aws-explorer-tab.png)

    **Add Account(계정 추가)** 대화 상자가 나타납니다.  
![\[계정 추가 대화 상자\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-add-account.png)

1. 요청된 정보를 채웁니다.

1.  이제 **AWS Explorer** 탭에 계정 정보가 나타납니다. Elastic Beanstalk에 게시할 때 어떤 계정을 사용할지를 선택할 수 있습니다.

# 서버 인스턴스 나열 및 연결
<a name="create_deploy_NET.ec2connect"></a>

 AWS Toolkit for Visual Studio 또는 AWS Management Console을 통해 Elastic Beanstalk 애플리케이션 환경을 실행하는 Amazon EC2 인스턴스 목록을 볼 수 있습니다. 원격 데스크톱 연결을 사용하여 이러한 인스턴스에 연결할 수 있습니다. AWS Management Console을 사용하여 서버 인스턴스를 나열하고 연결하는 방법에 대한 자세한 내용은 섹션을 참조하세요[서버 인스턴스 나열 및 연결](using-features.ec2connect.md). 다음 섹션에서는 AWS Toolkit for Visual Studio를 사용하여 서버 인스턴스를 보고 연결하는 방법을 단계별로 설명합니다.

**환경의 Amazon EC2 인스턴스를 보고 여기에 연결하려면**

1.  Visual Studio의 **AWS Explorer**에서 **Amazon EC2** 노드를 확장하고 **인스턴스**를 두 번 클릭합니다.

1.  **인스턴스** 열에서 애플리케이션의 로드 밸런서에서 실행되는 Amazon EC2 인스턴스의 인스턴스 ID를 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 **원격 데스크톱 열기**를 선택합니다.  
![\[원격 데스크톱 열기 대화 상자\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-rdp-login.png)

1.  **EC2 키 페어로 로그온**을 선택하고 **프라이빗 키** 상자에 애플리케이션을 배포할 때 사용한 프라이빗 키 파일의 내용을 붙여 넣습니다. 또는 **사용자 이름** 및 **암호** 텍스트 상자에 사용자 이름과 암호를 입력합니다.
**참고**  
키 페어가 도구 키트 안에 저장되어 있는 경우 텍스트 상자가 표시되지 않습니다.

1. **확인**을 클릭합니다.

# 애플리케이션 상태 모니터링
<a name="create_deploy_NET.healthstatus"></a>

프로덕션 웹 사이트를 실행 중인 경우 애플리케이션이 사용 가능하고 요청에 응답하는지를 알아야 합니다. Elastic Beanstalk는 애플리케이션의 응답성을 모니터링하는 것을 지원하기 위해 애플리케이션에 대한 통계를 모니터링하고 임계값을 초과하면 트리거되는 알림을 생성할 수 있는 기능을 제공합니다.

Elastic Beanstalk에서 제공되는 상태 모니터링에 대한 자세한 내용은 [기본 상태 보고](using-features.healthstatus.md) 단원을 참조하십시오.

Toolkit for Visual Studio 또는 AWS Management Console을 AWS 사용하여 애플리케이션에 대한 운영 정보에 액세스할 수 있습니다.

도구 키트의 **상태** 필드에 환경의 상태와 애플리케이션 상태가 표시됩니다.

![\[Elastic Beanstalk 상태\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-env-status.png)


**애플리케이션 상태를 모니터링하려면**

1.  AWS Toolkit for Visual Studio의 **AWS Explorer**에서 Elastic Beanstalk 노드를 확장한 다음 애플리케이션 노드를 확장합니다.

1. Elastic Beanstalk 환경을 마우스 오른쪽 버튼으로 클릭한 후 **상태 보기**를 클릭합니다.

1. 애플리케이션 환경 탭에서 **모니터링**을 클릭합니다.

   **모니터링** 패널에는 특정 애플리케이션 환경에 대한 리소스 사용량을 보여주는 다양한 그래프가 포함되어 있습니다.  
![\[Elastic Beanstalk 모니터링 패널\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-monitoring.png)
**참고**  
기본적으로 시간 범위는 지난 시간으로 설정됩니다. 이 설정을 수정하려면 **Time Range(시간 범위)** 목록에서 다른 시간 범위를 클릭합니다.

 AWS Toolkit for Visual Studio 또는 AWS Management Console을 사용하여 애플리케이션과 연결된 이벤트를 볼 수 있습니다.

**애플리케이션 이벤트를 보려면**

1.  AWS Toolkit for Visual Studio의 **AWS Explorer**에서 Elastic Beanstalk 노드와 애플리케이션 노드를 확장합니다.

1. **AWS Explorer**에서 Elastic Beanstalk 환경을 마우스 오른쪽 버튼으로 클릭한 후 **상태 보기**를 클릭합니다.

1. 애플리케이션 환경 탭에서 **이벤트**를 클릭합니다.  
![\[Elastic Beanstalk 이벤트 패널\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-vs-events.png)

# 배포 도구를 사용하여 .NET에 Elastic Beanstalk 애플리케이션 AWS 배포
<a name="deploy_NET_standalone_tool"></a>

AWS 는 Elastic Beanstalk에 .NET Core 및 ASP.NET Core 애플리케이션을 배포하기 위한 두 가지 명령줄 도구를 제공합니다.
+ **AWS .NET 배포 도구** - Elastic Beanstalk를 포함한 AWS 서비스에 .NET 애플리케이션 배포를 간소화하는 최신 명령줄 도구입니다. 이 도구는 대화형 환경을 제공하며 애플리케이션에 가장 적합한 AWS 서비스를 자동으로 감지할 수 있습니다. 자세한 내용은 [AWS .NET 배포 도구](https://github.com/aws/aws-dotnet-deploy?tab=readme-ov-file#aws-net-deployment-tool)를 참조하세요.
+ **AWS .NET CLI용 확장 **- Elastic Beanstalk 및 기타 AWS 서비스에 .NET Core 애플리케이션을 배포하기 위한 명령을 제공하는 .NET CLI 확장 세트입니다. 이러한 확장은 표준 .NET CLI 워크플로와 통합됩니다. 자세한 내용은 [AWS .NET CLI용 확장 프로그램](https://github.com/aws/aws-extensions-for-dotnet-cli?tab=readme-ov-file#aws-elastic-beanstalk-amazonelasticbeanstalktools)을 참조하세요.

# 온프레미스 .NET 애플리케이션을 Elastic Beanstalk로 마이그레이션
<a name="dotnet-onpremmigration"></a>

AWS Elastic Beanstalk 는 Elastic Beanstalk 명령줄 인터페이스(EB CLI)를 통해 인터넷 정보 서비스(IIS)에서 실행되는 Windows 애플리케이션에 대한 간소화된 마이그레이션 경로를 제공합니다. 이 **eb migrate** 명령은 IIS 사이트, 애플리케이션 및 가상 디렉터리를 자동으로 검색하고 구성을 유지한 다음 AWS 클라우드에 배포합니다.

이 기본 제공 마이그레이션 기능은 일반적으로 클라우드 마이그레이션과 관련된 복잡성과 소요 시간을 줄여 주는 더 간단한 접근 방식을 제공합니다. 마이그레이션 프로세스는 로 전환하는 동안 애플리케이션 기능과 구성 무결성을 유지하는 데 도움이 됩니다 AWS.

IIS 애플리케이션을 로 마이그레이션하는 방법에 대한 전체적이고 자세한 지침은이 가이드의 [Elastic Beanstalk로 IIS 애플리케이션 마이그레이션](dotnet-migrating-applications.md)장을 AWS Elastic Beanstalk참조하세요.

# Elastic Beanstalk의 사용 중지된 Windows Server 구성 요소에 대한 권장 사항
<a name="dotnet-deprecation-recommendations"></a>

이 주제에서는 사용 중지된 Windows Server 2012 R2 플랫폼 브랜치에서 애플리케이션이 현재 실행 중인 경우의 권장 사항을 제공합니다. 또한 AWS 서비스 API 엔드포인트 및 영향을 받는 플랫폼 브랜치에서 TLS 1.0 및 1.1 프로토콜 버전에 대한 지원 중단도 다룹니다.

## Windows Server 2012 R2 플랫폼 브랜치 사용 중지
<a name="dotnet-retired-branches"></a>

Elastic Beanstalk는 [2023년 12월 4일](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2023-12-04-windows-2012-retire.html)에 Windows Server 2012 R2 플랫폼 브랜치를 사용 중지하고 2024년 4월 10일에 해당 플랫폼과 연결된 AMIs를 비공개로 설정했습니다. 이 조치로 Windows 2012 환경에서 기본 Beanstalk AMI를 사용하는 인스턴스를 시작할 수 없게 됩니다.

사용 중지된 Windows 플랫폼 브랜치에서 실행 중인 환경이 있는 경우 최신이며 완전히 지원되는 다음 Windows Server 플랫폼 중 하나로 마이그레이션하는 것이 좋습니다.
+ Windows Server 2022 with IIS 10.0 버전 2.x
+ Windows Server 2019 with IIS 10.0 버전 2.x

전체 마이그레이션 고려 사항은 [Windows Server 플랫폼의 이전 메이저 버전에서 마이그레이션](dotnet-v2migration.md#dotnet-v2migration.migration)을(를) 참조하세요.

플랫폼 사용 중단에 대한 자세한 정보는 [Elastic Beanstalk 플랫폼 지원 정책](platforms-support-policy.md) 섹션을 참조하세요.

**참고**  
이처럼 완전히 지원되는 플랫폼으로 마이그레이션할 수 없는 경우 Windows Server 2012 R2 또는 Windows Server 2012 R2 Core AMI로 생성된 사용자 지정 AMI를 기본 이미지로 사용하는 것이 좋습니다. 자세한 지침은 [사용 중지 플랫폼에 대한 Amazon Machine Image(AMI)에 대한 액세스 보존하기](using-features.customenv-env-copy.md) 섹션을 참조하세요. 이러한 마이그레이션 단계 중 하나를 수행하는 동안 AMI에 대한 임시 액세스가 필요한 경우 [AWS 지원 센터](https://console.aws.amazon.com/support/home#/)에 문의하세요.

## TLS 1.2 호환성
<a name="tls-1-2-enforcement."></a>

2023년 12월 31일부터는 모든 AWS API 엔드포인트에서 TLS 1.2를 완전히 적용하기 AWS 시작했습니다. 이 작업을 수행하면 모든 AWS APIs. 이 정보는 원래 [2022년 6월 28일](https://aws.amazon.com/blogs/security/tls-1-2-required-for-aws-endpoints/)에 전달되었습니다. 가용성에 영향을 미칠 위험을 방지하려면 여기에서 식별한 플랫폼 버전을 실행하는 환경을 아직 업그레이드하지 않았다면 가능한 한 빨리 최신 버전으로 업그레이드하세요.

**잠재적 영향**  
TLS v1.1 이하를 실행하는 Elastic Beanstalk 플랫폼 버전이 영향을 받게 됩니다. 이 변경 사항은 구성 배포, 애플리케이션 배포, 오토 스케일링, 새로운 환경 시작, 로그 교체, 향상된 상태 보고서, 사용자 애플리케이션과 연결된 Amazon S3 버킷에 애플리케이션 로그 게시를 포함한(이에 국한되지 않음) 환경 작업에 영향을 미칩니다.

**영향을 받는 Windows 플랫폼 버전**  
다음 플랫폼 버전에서 Elastic Beanstalk 환경을 사용하는 고객은 각 환경을 [2022년 2월 18일](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-02-18-windows.html)에 릴리스된 Windows 플랫폼 버전 2.8.3 이상으로 업그레이드하는 것이 좋습니다.
+ Windows Server 2019 - 플랫폼 버전 2.8.2 또는 이전 버전

다음 플랫폼 버전에서 Elastic Beanstalk 환경을 사용하는 고객은 각 환경을 [2022년 12월 28일](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-12-28-windows.html)에 릴리스된 Windows 플랫폼 버전 2.10.7 이상으로 업그레이드하는 것이 좋습니다.
+ Windows Server 2016 - 플랫폼 버전 2.10.6 또는 이전 버전
+ Windows Server 2012 - 모든 플랫폼 버전, 이 플랫폼은 [2023년 12월 4일](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2023-12-04-windows-2012-retire.html)에 단종되었음 
+ Windows Server 2008 - 모든 플랫폼 버전, 이 플랫폼은 [2019년 10월 28일](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2019-10-28-windows.html)에 단종되었음 

지원되는 최신 Windows Server 플랫폼 버전 목록은 *AWS Elastic Beanstalk  플랫폼* 가이드에서 [지원되는 플랫폼](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.net)을 참조하세요.

환경 업데이트에 대한 세부 정보 및 모범 사례는 [Elastic Beanstalk 환경의 플랫폼 버전 업데이트](using-features.platform.upgrade.md) 섹션을 참조하세요.