

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

# Amazon Q와 함께 AWS Toolkit for Visual Studio를 사용하여 Visual Studio AWS Elastic Beanstalk 의에 배포
<a name="deployment-beanstalk"></a>

AWS Elastic Beanstalk 는 애플리케이션의 AWS 리소스 프로비저닝 프로세스를 간소화하는 서비스입니다. Elastic Beanstalk는 애플리케이션을 배포하는 데 필요한 모든 AWS 인프라를 제공합니다. 이 인프라에는 다음 사항이 포함됩니다.
+ 애플리케이션에 대한 실행 파일 및 내용을 호스팅하는 Amazon EC2 인스턴스.
+ 애플리케이션을 지원하기 위해 적절한 Amazon EC2 인스턴스 수를 유지하는 오토 스케일링.
+ 대부분의 대역폭에서 Amazon EC2 인스턴스로 수신 트래픽을 라우팅하는 Elastic Load Balancing 로드 밸런서.

이 사용 설명서 주제에서는 AWS Toolkit with Amazon Q에서 Elastic Beanstalk 마법사를 사용하는 방법을 설명합니다. Elastic Beanstalk에 대한 자세한 내용은 [AWS Elastic Beanstalk](https://docs.aws.amazon.com//elasticbeanstalk/latest/dg/Welcome.html) 개발자 안내서를 참조하세요. AWS Toolkit with Amazon Q에 대한 Elastic Beanstalk 마법사는 다음 주제 섹션에 설명되어 있습니다.

**Topics**
+ [ASP.NET 앱(기존) 배포](deployment-beanstalk-traditional.md)
+ [ASP.NET 앱(.NET Core) 배포(레거시)](deployment-beanstalk-netcore.md)
+ [AWS 자격 증명 지정](deployment-beanstalk-specify-credentials.md)
+ [Elastic Beanstalk에 재게시(레거시)](deployment-beanstalk-republish.md)
+ [사용자 지정 배포(기존)](deployment-beanstalk-custom.md)
+ [사용자 지정 배포(.NET Core)](deployment-beanstalk-custom-netcore.md)
+ [다수의 애플리케이션 지원](deployment-beanstalk-multiple-application.md)

# Elastic Beanstalk에 기존 ASP.NET 애플리케이션 배포
<a name="deployment-beanstalk-traditional"></a>

이 섹션에서는 Toolkit for Visual Studio의 일부로 제공되는 **Elastic Beanstalk에 게시** 마법사를 사용하여 Elastic Beanstalk를 통해 애플리케이션을 배포하는 방법을 설명합니다. 연습을 위해 Visual Studio에 내장되어 있는 웹 애플리케이션 스타터 프로젝트의 인스턴스를 사용하거나 자체의 프로젝트를 사용할 수 있습니다.

**참고**  
ASP.NET Core 애플리케이션 배포도 마법사에서 지원됩니다. ASP.NET Core에 대한 자세한 정보는 [AWS .NET 배포 도구](https://aws.github.io/aws-dotnet-deploy/) 가이드 및 업데이트된 [AWS에 배포](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/deployment-chapt.html) 목차를 참조하세요.

**참고**  
**Publish to Elastic Beanstalk** 마법사를 사용하려면 먼저 [웹 배포](http://www.microsoft.com/en-us/download/details.aspx?id=39277)를 다운로드하여 설치해야 합니다. 이 마법사는 웹 배포를 통해 IIS(인터넷 정보 서비스) 웹 서버에 웹 애플리케이션과 웹 사이트를 배포합니다.

## 샘플 웹 애플리케이션 스타터 프로젝트 만들기
<a name="to-create-a-sample-web-application-starter-project"></a>

1. Visual Studio의 **파일** 메뉴에서 **새로 만들기**, **프로젝트**를 차례대로 선택합니다.

1. **New Project(새 프로젝트)** 대화 상자의 탐색 창에서 **Installed(설치됨)**, **Templates(템플릿)**, **Visual C\$1**을 차례대로 확장한 다음 **Web(웹)**을 선택합니다.

1. 프로젝트 템플릿 목록에서 `Web` 및 `Application` 단어가 설명에 포함된 템플릿을 선택합니다. 이 예제에서는 **ASP.NET Web Forms Application**을 선택합니다.  
![\[New Project window showing ASP.NET web application templates for Visual C# in .NET Framework 4.5.\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-visual-studio/latest/user-guide/images/tkv-new-web-project-console.png)

1. **이름** 상자에 `AEBWebAppDemo`를 입력합니다.

1. **위치** 상자에서 개발 시스템의 솔루션 폴더에 대한 경로를 입력하거나 **찾아보기**를 선택한 다음, 솔루션 폴더를 찾아 선택하고, **Select Folder(폴더 선택)**를 선택합니다.

1. **Create directory for solution(솔루션에 대해 디렉터리 생성)** 상자가 선택되어 있는지 확인합니다. **Solution(솔루션)** 드롭다운 목록에서 **Create new solution(새 솔루션 생성)**이 선택되어 있는지 확인한 다음 **확인**을 선택합니다. Visual Studio가 ASP.NET Web Forms Application 프로젝트 템플릿에 따라 솔루션과 프로젝트를 생성합니다. 그런 다음 솔루션과 프로젝트가 나타나는 솔루션 탐색기를 Visual Studio에서 표시합니다.  
![\[Solution Explorer window showing project structure with folders and files for a web application.\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-visual-studio/latest/user-guide/images/tkv-web-app-solution-explorer-console.png)

## Publish to Elastic Beanstalk 마법사를 사용하여 애플리케이션을 배포하려면
<a name="to-deploy-an-application-by-using-the-publish-to-elastic-beanstalk-wizard"></a>

1. 솔루션 탐색기에서 이전 섹션에서 생성한 프로젝트의 **AEBWebAppDemo** 프로젝트 폴더에 대한 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)를 열거나 자체 애플리케이션의 프로젝트 폴더에 대한 컨텍스트 메뉴를 열고 ** AWS Elastic Beanstalk에 게시를** 선택합니다.  
![\[Solution Explorer context menu showing "Publish to AWS..." option for AEBWebAppDemo project.\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-visual-studio/latest/user-guide/images/tkv-publish-to-aws-console.png)

   **Publish to Elastic Beanstalk(Elastic Beanstalk에 게시)** 마법사가 표시됩니다.  
![\[Publish to AWS Elastic Beanstalk wizard interface for creating or redeploying an application environment.\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-app-console.png)

1. **프로필**의 **배포에 사용할 계정 프로필** 드롭다운 목록에서 배포에 사용할 AWS 계정 프로필을 선택합니다.

   선택적으로 사용하려는 AWS 계정이 있지만 아직 AWS 계정 프로필을 생성하지 않은 경우 더하기 기호(`+`)가 있는 버튼을 선택하여 AWS 계정 프로필을 추가할 수 있습니다.

1. **리전** 드롭다운 목록에서 Elastic Beanstalk를 통해 애플리케이션을 배포할 리전을 선택하세요.

1. **배포 대상**에서 **Create a new application environment(새 애플리케이션 환경 생성)**를 선택하여 애플리케이션의 초기 배포를 수행하거나 **Redeploy to an existing environment(기존 환경에 재배포)**를 선택하여 이전에 배포된 애플리케이션을 다시 배포할 수 있습니다. (이전 배포는 마법사 또는 더 이상 사용되지 않는 독립 실행형 배포 도구를 사용하여 수행한 것일 수 있습니다.) **Redeploy to an existing environment(기존 환경에 재배포)**를 선택하면 마법사가 현재 실행 중인 이전 배포에서 정보를 검색하는 동안 지연 시간이 발생할 수 있습니다.
**참고**  
**Redeploy to an existing environment(기존 환경에 재배포)**를 선택하고 목록에서 환경을 선택하고 **다음**을 선택하면 마법사를 통해 **Application Options(애플리케이션 옵션)**으로 곧바로 이동할 수 있습니다. 이 경로로 이동하려면 이 단원 후반부의 **Application Options(애플리케이션 옵션)** 사용 방법을 설명하는 지침으로 건너뛰십시오.

1. **다음**을 선택합니다.  
![\[Application Environment setup page for AWS with fields for name, environment, and URL.\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-env-console.png)

1. **Application Environment(애플리케이션 환경)** 페이지에서 **애플리케이션** 영역의 **이름** 드롭다운 목록에 애플리케이션의 기본 이름이 제안됩니다. 드롭다운 목록에서 다른 이름을 선택하여 기본 이름을 변경할 수 있습니다.

1. **환경** 영역의 **이름** 드롭다운 목록에 Elastic Beanstalk 환경 이름을 입력하세요. 이 컨텍스트에서 *환경*은 애플리케이션의 인프라 Elastic Beanstalk 프로비저닝을 지칭합니다. 이 드롭다운 목록에 기본 이름이 이미 제안되어 있기도 합니다. 기본 이름이 제안되지 않았으면 이름을 입력하고, 드롭다운 목록에 추가 이름이 있으면 선택합니다. 환경 이름은 23자보다 길 수 없습니다.

1. **URL** 영역에서 웹 애플리케이션의 URL이 될 `.elasticbeanstalk.com`의 기본 하위 도메인이 상자에 제안됩니다. 새로운 하위 도메인 이름을 입력하여 기본 하위 도메인을 변경할 수 있습니다.

1. 웹 애플리케이션에 대한 URL이 이미 사용 중이 아닌지 확인하려면 **가용성 확인**을 선택합니다.

1. 웹 애플리케이션 URL이 사용할 수 있는 상태이면 **다음**을 선택합니다.

![\[AWS EC2 launch configuration settings for deploying an application to Amazon Web Services.\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-ec2-console.png)


1. **AWS 옵션** 페이지에 있는 **Amazon EC2 시작 구성**의 **컨테이너 유형** 드롭다운 목록에서 애플리케이션에 사용할 Amazon Machine Image(AMI) 유형을 선택하세요.

1. **인스턴스 유형** 드롭다운 목록에서 사용하려는 Amazon EC2 인스턴스 유형을 지정하세요. 이 예제에는 **Micro(마이크로)**를 사용하는 것이 좋습니다. 이렇게 하면 인스턴스 실행과 연관된 비용이 최소화됩니다. Amazon EC2 비용에 대한 자세한 정보는 [EC2 요금](https://aws.amazon.com/ec2/pricing/) 페이지를 참조하세요.

1. **키 페어** 드롭다운 목록에서 애플리케이션에 사용할 인스턴스로 로그인하기 위한 Amazon EC2 인스턴스 키 페어를 선택하세요.

1. 선택적으로 **Use custom AMI(사용자 지정 AMI 사용)** 상자에서 **Container type(컨테이너 유형)** 드롭다운 목록에 지정된 AMI를 재정의할 사용자 지정 AMI를 지정할 수 있습니다. 사용자 지정 AMI를 생성하는 방법에 대한 자세한 정보는 [AWS Elastic Beanstalk 개발자 안내서](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/)의 [사용자 지정 AMI 사용](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.customami.html) 및 [Amazon EC2 인스턴스에서 AMI 생성](tkv-create-ami-from-instance.md)을 참조하세요.

1. 선택적으로 VPC에서 인스턴스를 시작하려면 **Use a VPC(VPC 사용)** 상자를 선택합니다.

1. 필요에 따라 단일 Amazon EC2 인스턴스를 시작하고 애플리케이션을 해당 인스턴스에 배포하려면 **단일 인스턴스 환경** 상자를 선택하세요.

   이 상자를 선택하면 Elastic Beanstalk를 통해 오토 스케일링이 생성되지만 이를 구성하지는 않습니다. AWS Management Console을 사용하여 나중에 오토 스케일링을 구성할 수 있습니다.

1. 선택적으로 **Enable Rolling Deployments(롤링 배포 활성화)** 상자를 선택하여 애플리케이션이 인스턴스에 배포되는 조건을 제어할 수 있습니다. **Single instance environment(단일 인스턴스 환경)** 상자를 선택하지 않은 경우에만 이 상자를 선택할 수 있습니다.

1. 애플리케이션이 Amazon S3 및 DynamoDB와 같은 AWS 서비스를 사용하는 경우 자격 증명을 제공하는 가장 좋은 방법은 IAM 역할을 사용하는 것입니다. **배포된 애플리케이션 권한** 영역에서 기존 IAM 역할을 선택하거나, 환경을 시작하기 위해 마법사에서 사용할 역할을 생성하세요. 를 사용하는 애플리케이션 AWS SDK for .NET 은 AWS 서비스에 요청할 때이 IAM 역할에서 제공하는 자격 증명을 자동으로 사용합니다.

1. 애플리케이션이 Amazon RDS 데이터베이스에 액세스하는 경우 **관계형 데이터베이스 액세스** 영역의 드롭다운 목록에서 마법사가 업데이트할 Amazon RDS 보안 그룹 옆의 상자를 선택하여 Amazon EC2 인스턴스가 데이터베이스에 액세스할 수 있도록 합니다.

1. **다음**을 선택합니다.
   + **Use a VPC(VPC 사용)**를 선택하면 **VPC Options(VPC 옵션)** 페이지가 표시됩니다.
   + **Use a VPC(VPC 사용)**를 선택하지 않고 **Enable Rolling Deployments(롤링 배포 활성화)**를 선택하면 **Rolling Deployments(롤링 배포)** 페이지가 표시됩니다. 이 단원 후반부의 **Rolling Deployments(롤링 배포)** 사용 방법을 설명하는 지침으로 건너뛰십시오.
   + **Use a VPC(VPC 사용)** 또는 **Enable Rolling Deployments(롤링 배포 활성화)**를 선택하지 않은 경우 **Application Options(애플리케이션 옵션)** 페이지가 표시됩니다. 이 단원 후반부의 **Application Options(애플리케이션 옵션)** 사용 방법을 설명하는 지침으로 건너뛰십시오.

1. **Use a VPC(VPC 사용)**를 선택한 경우 **VPC Options(VPC 옵션)** 페이지에서 정보를 지정하여 VPC로 애플리케이션을 시작합니다.  
![\[VPC Options interface for configuring AWS Elastic Beanstalk application deployment settings.\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-vpc-console.png)

   VPC가 이미 생성되어 있어야 합니다. Toolkit for Visual Studio에서 VPC를 생성한 경우 Toolkit for Visual Studio가 이 페이지를 채웁니다. [AWS 관리 콘솔](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo-vpc-basic.html)에서 VPC를 생성한 경우 이 페이지에 VPC에 대한 정보를 입력하세요.

## VPC에 배포하기 위한 주요 고려 사항
<a name="key-considerations-for-deployment-to-a-vpc"></a>
+ VPC에는 퍼블릭 서브넷 및 프라이빗 서브넷이 최소한 한 개가 있어야 합니다.
+ *ELB Subnet(ELB 서브넷)* 드롭다운 목록에서 퍼블릭 서브넷을 지정합니다. Toolkit for Visual Studio는 애플리케이션을 위한 Elastic Load Balancing 로드 밸런서를 퍼블릭 서브넷에 배포합니다. 퍼블릭 서브넷은 인터넷 게이트웨이를 가리키는 항목이 있는 라우팅 테이블과 연결됩니다. 인터넷 게이트웨이에는 `igw-`로 시작하는 ID(예: `igw-83cddaex`)가 있으므로 알아볼 수 있습니다. Toolkit for Visual Studio를 사용하여 생성한 퍼블릭 서브넷에는 해당 서브넷을 퍼블릭으로 식별하는 태그 값이 있습니다.
+ *Instances Subnet(인스턴스 서브넷)* 드롭다운 목록에서 프라이빗 서브넷을 지정합니다. Toolkit for Visual Studio는 애플리케이션을 위해 프라이빗 서브넷에 Amazon EC2 인스턴스를 배포합니다.
+ 애플리케이션을 위한 Amazon EC2 인스턴스는 Network Address Translation(NAT)을 수행하는 퍼블릭 서브넷의 Amazon EC2 인스턴스를 통해 프라이빗 서브넷에서 인터넷으로 통신합니다. 이러한 통신을 사용하려면 프라이빗 서브넷에서 NAT 인스턴스로 트래픽의 흐름을 허용하는 [VPC 보안 그룹](https://console.aws.amazon.com/vpc/home)이 필요합니다. *보안 그룹* 드롭다운 목록에서 이 VPC 보안 그룹을 지정합니다.

Elastic Beanstalk 애플리케이션을 VPC에 배포하는 방법에 대한 자세한 정보는 [AWS Elastic Beanstalk 개발자 안내서](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/)를 참조하세요.

1. **VPC Options(VPC 옵션)** 페이지에 있는 정보를 모두 채우고 **다음**을 선택합니다.
   + **Enable Rolling Deployments(롤링 배포 활성화)**를 선택하면 **Rolling Deployments(롤링 배포)** 페이지가 표시됩니다.
   + **Enable Rolling Deployments(롤링 배포 활성화)**를 선택하지 않은 경우 **Application Options(애플리케이션 옵션)** 페이지가 표시됩니다. 이 단원 후반부의 **Application Options(애플리케이션 옵션)** 사용 방법을 설명하는 지침으로 건너뛰십시오.

1. **Enable Rolling Deployments(롤링 배포 활성화)**를 선택한 경우 애플리케이션의 새 버전을 로드 밸런싱 환경의 인스턴스에 배포하는 방법을 구성하기 위해 **Rolling Deployments(롤링 배포)** 페이지에서 정보를 지정합니다. 예를 들어, 환경에 인스턴스 4개가 있고 인스턴스 유형을 변경하려는 경우 한 번에 인스턴스 2개를 변경할 수 있도록 환경을 구성할 수 있습니다. 그러면 변경하는 동안에도 애플리케이션이 실행됩니다.  
![\[Rolling Deployments configuration interface for AWS application updates and environment settings.\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-rolling-console.png)

1. *애플리케이션 버전* 영역에서 백분율 또는 인스턴스 수로 배포를 한 번에 제어하는 옵션을 선택합니다. 원하는 백분율이나 수를 지정합니다.

1. 배포 중에 계속 서비스할 인스턴스 수를 지정하려는 경우 *환경 구성* 영역에서 상자를 선택합니다. 이 상자를 선택할 경우 한 번에 수정할 최대 인스턴스의 수와 한 번에 계속 서비스할 최소 인스턴스 수를 하나만 지정하거나 둘 다 지정합니다.

1. *다음*을 선택합니다.

1. **Application Options(애플리케이션 옵션)** 페이지에서 빌드, IIS(인터넷 정보 서비스) 및 애플리케이션 설정에 대한 정보를 지정합니다.  
![\[Application Options interface for configuring build and deployment settings for AWS.\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-options-console.png)

1. **Build and IIS Deployment Settings(빌드 및 IIS 배포 설정)** 영역의 **Project build configuration(프로젝트 빌드 구성)** 드롭다운 목록에서 대상 빌드 구성을 선택합니다. 마법사가 찾으면 **릴리스**가 표시되고 그렇지 않으면 활성화된 구성이 이 상자에 표시됩니다.

1. **App pool(앱 풀)** 드롭다운 목록에서 애플리케이션에 필요한 .NET Framework 버전을 선택합니다. 올바른 .NET Framework 버전이 이미 표시되어 있어야 합니다.

1. 애플리케이션이 32바이트인 경우 **Enable 32-bit applications(32비트 애플리케이션 활성화)** 상자를 선택합니다.

1. **App path(앱 경로)** 상자에서 IIS가 애플리케이션을 배포하는 데 사용할 경로를 지정합니다. 기본적으로 **Default Web Site/(기본 웹 사이트/)**가 지정되며 일반적으로 `c:\inetpub\wwwroot` 경로로 변환됩니다. **Default Web Site/(기본 웹 사이트/)** 이외의 경로를 지정하면 마법사는 지정된 경로를 가리키는 **Default Web Site/(기본 웹 사이트/)** 경로에 리디렉션을 배치합니다.

1. **애플리케이션 설정** 영역의 **상태 확인 URL** 상자에 Elastic Beanstalk URL을 입력하여 웹 애플리케이션이 계속 응답하는지 확인합니다. 이 URL은 루트 서버 URL에 상대적입니다. 루트 서버 URL이 기본적으로 지정됩니다. 예를 들어, 전체 URL이 `example.com/site-is-up.html`이면 `/site-is-up.html`을 입력합니다.

1. **키** 및 **값** 영역에서 애플리케이션의 `Web.config` 파일에 추가할 키 및 값 페어를 지정할 수 있습니다.
**참고**  
권장되지는 않지만 **키** 및 **값의** 영역을 사용하여 애플리케이션이 실행되어야 하는 AWS 자격 증명을 지정할 수 있습니다. 기본 접근 방식은 **AWS 옵션** 페이지의 **Identity and Access Management 역할** 드롭다운 목록에서 IAM 역할을 지정하는 것입니다. 그러나 애플리케이션을 실행하기 위해 IAM 역할 대신 AWS 자격 증명을 사용해야 하는 경우 **키** 행에서 **AWSAccessKey**를 선택합니다. **값** 열에 액세스 키를 입력합니다. **AWSSecretKey**에 대해 이러한 단계를 반복합니다.

1. **다음**을 선택합니다.  
![\[Review window for publishing an application to AWS Elastic Beanstalk with deployment details.\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-review-console.png)

1. **검토** 페이지에서 구성한 옵션을 검토하고 **Open environment status window when wizard closes(마법사를 닫을 때 환경 상태 창 열기)** 상자를 선택합니다.

1. 모든 사항이 올바르게 보이는 경우 **배포**를 선택합니다.
**참고**  
애플리케이션을 배포하면 애플리케이션에서 사용한 AWS 리소스에 대해 활성 계정에 요금이 발생합니다.

   배포에 대한 정보는 Visual Studio 상태 표시줄 및 **결과** 창에 표시됩니다. 몇 분 정도 걸릴 수 있습니다. 배포가 완료되면 **결과** 창에 확인 메시지가 표시됩니다.

1. 배포를 삭제하려면 AWS 탐색기에서 **Elastic Beanstalk** 노드를 확장하고 배포의 하위 노드에 대한 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 연 다음 **삭제**를 선택합니다. 삭제 프로세스는 몇 분 정도 걸릴 수 있습니다.

# Elastic Beanstalk에 ASP.NET Core 애플리케이션 배포(레거시)
<a name="deployment-beanstalk-netcore"></a>

**중요**  
이 설명서에서는 레거시 서비스 및 기능을 참조합니다. 업데이트된 안내서와 정보는 [AWS .NET 배포 도구](https://aws.github.io/aws-dotnet-deploy/) 안내서 및 업데이트된 [AWS목차 배포](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/deployment-chapt.html)를 참조하세요.

AWS Elastic Beanstalk 는 애플리케이션의 AWS 리소스 프로비저닝 프로세스를 간소화하는 서비스입니다.는 애플리케이션을 배포하는 데 필요한 모든 AWS 인프라를 AWS Elastic Beanstalk 제공합니다.

Toolkit for Visual Studio는 Elastic Beanstalk를 AWS 사용하여에 ASP.NET Core 애플리케이션 배포를 지원합니다. ASP.NET Core는 클라우드에서 실행되도록 종속성 오버헤드를 최소화하고 애플리케이션을 간소화한 모듈화된 아키텍처가 있는 ASP.NET으로 재설계되었습니다.

AWS Elastic Beanstalk 를 사용하면 다양한 언어로 애플리케이션을 쉽게 배포할 수 있습니다 AWS. Elastic Beanstalk는 기존 ASP.NET 애플리케이션과 ASP.NET Core 애플리케이션을 모두 지원합니다. 이 주제에서는 ASP.NET Core 애플리케이션의 배포에 대해 설명합니다.

## 배포 마법사 사용
<a name="tkv-deploy-using-wizard-netcore"></a>

ASP.NET Core 애플리케이션을 Elastic Beanstalk에 배포하는 가장 쉬운 방법은 Toolkit for Visual Studio를 사용하는 것입니다.

기존 ASP.NET 애플리케이션을 배포하기 위해 도구 키트를 사용한 적이 있는 경우 ASP.NET Core에 대한 환경이 매우 비슷함을 알 수 있습니다. 아래의 단계에서는 배포 환경에 대해 알아봅니다.

이전에 도구 키트를 사용한 적이 없는 경우 도구 키트를 설치한 후 가장 먼저 해야 할 일은 도구 키트에 자격 AWS 증명을 등록하는 것입니다. 자세한 [내용은 Application for Visual Studio 설명서의 AWS 보안 자격 증명을 지정하는](deployment-beanstalk-specify-credentials.md#tkv-deploy-specify-credentials-for-application) 방법을 참조하세요.

ASP.NET Core 웹 애플리케이션을 배포하려면 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 **게시 대상 AWS...**을 선택합니다.

 AWS Elastic Beanstalk 배포에 게시 마법사의 첫 번째 페이지에서 새 Elastic Beanstalk 애플리케이션을 생성하도록 선택합니다. Elastic Beanstalk 애플리케이션은 환경, 버전 및 환경 구성을 포함한 Elastic Beanstalk 구성 요소의 논리적 컬렉션입니다. 배포 마법사는 애플리케이션 버전과 환경을 포함하는 애플리케이션을 생성합니다. 환경에는 애플리케이션 버전을 실행하는 실제 AWS 리소스가 포함되어 있습니다. 애플리케이션을 배포할 때마다 새 애플리케이션 버전이 생성되며 마법사는 해당 버전에 대한 환경을 가리킵니다. [Elastic Beanstalk 구성 요소](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.components.html)에서 이러한 개념에 대해 자세히 알아볼 수 있습니다.

다음으로 애플리케이션의 이름과 첫 번째 환경을 설정합니다. 각 환경에는 배포가 완료될 때 애플리케이션에 액세스하는 데 사용할 수 있는 연관된 고유 CNAME이 있습니다.

다음 페이지인 **AWS 옵션**에서 사용할 AWS 리소스 유형을 구성할 수 있습니다. 이 예제의 경우 **키 페어** 섹션을 제외하고 기본값을 그대로 둡니다. 키 페어를 사용하면 Windows 관리자 암호를 검색할 수 있으므로 시스템에 로그인할 수 있습니다. 키 페어를 아직 생성하지 않은 경우 **Create new key pair(새 키 페어 생성)**를 선택할 수 있습니다.

## 권한
<a name="tkv-deploy-using-wizard-netcore-permissions"></a>

**권한** 페이지는 애플리케이션을 실행하는 EC2 인스턴스에 AWS 자격 증명을 할당하는 데 사용됩니다. 이는 애플리케이션이 AWS SDK for .NET 를 사용하여 다른 AWS 서비스에 액세스하는 경우 중요합니다. 애플리케이션에서 다른 서비스를 사용하지 않는 경우 이 페이지를 기본값으로 그대로 둘 수 있습니다.

## 애플리케이션 옵션
<a name="tkv-deploy-using-wizard-netcore-app-options"></a>

**Application Options(애플리케이션 옵션)** 페이지의 세부 사항은 기존 ASP.NET 애플리케이션을 배포할 때 지정한 사항과 다릅니다. 여기에서 애플리케이션을 패키징하는 데 사용된 빌드 구성과 프레임워크를 지정하고, 애플리케이션에 대한 IIS 리소스 경로도 지정합니다.

**Application Options(애플리케이션 옵션)** 페이지를 완료한 후 **다음**을 클릭하여 설정을 검토한 다음 **배포**를 클릭하여 배포 프로세스를 시작합니다.

## 환경 상태 확인
<a name="tkv-deploy-using-wizard-netcore-check-status"></a>

애플리케이션을 패키징하고에 업로드한 후 Visual Studio의 AWS Explorer에서 환경 상태 보기를 열어 Elastic Beanstalk 환경의 상태를 확인할 AWS수 있습니다.

환경이 온라인 상태가 되면 상태 표시줄에 이벤트가 표시됩니다. 모든 사항이 완료되면 환경 상태는 정상 상태로 이동합니다. URL을 클릭하여 사이트를 볼 수 있습니다. 여기에서 환경 또는 원격 데스크톱의 로그를 Elastic Beanstalk 환경의 일부인 Amazon EC2 인스턴스로 가져올 수도 있습니다.

애플리케이션의 첫 번째 배포는 새 AWS 리소스를 생성하므로 후속 재배포보다 시간이 약간 오래 걸립니다. 개발 중 애플리케이션을 반복할 때 마법사를 통해 돌아가거나 프로젝트를 오른쪽 버튼으로 클릭할 때 **재게시** 옵션을 선택하여 신속하게 재배포할 수 있습니다.

배포 마법사를 통해 이전 실행의 설정을 사용하여 애플리케이션에 대한 패키지를 재게시하고 애플리케이션 번들을 기존 Elastic Beanstalk 환경에 업로드합니다.

# 애플리케이션의 AWS 보안 자격 증명을 지정하는 방법
<a name="deployment-beanstalk-specify-credentials"></a>

**Elastic Beanstalk에 게시** 마법사에서 지정하는 AWS 계정은 마법사가 Elastic Beanstalk에 배포하는 데 사용할 AWS 계정입니다.

권장되지는 않지만 애플리케이션이 배포된 후 AWS 서비스에 액세스하는 데 사용할 AWS 계정 자격 증명을 지정해야 할 수도 있습니다. 선호되는 방법은 IAM 역할을 지정하는 것입니다. **Elastic Beanstalk에 게시** 마법사에서 **AWS 옵션** 페이지의 **Identity and Access Management 역할** 드롭다운 목록을 통해 이 작업을 수행합니다. 기존 **Amazon Web Services에 게시** 마법사에서는 **AWS 옵션** 페이지의 **IAM 역할** 드롭다운 목록을 통해 이 작업을 수행할 수 있습니다.

IAM 역할 대신 AWS 계정 자격 증명을 사용해야 하는 경우 다음 방법 중 하나로 애플리케이션의 계정 자격 증명을 지정할 AWS 수 있습니다.
+ 프로젝트 `Web.config` 파일의 `appSettings` 요소에 있는 AWS 계정 자격 증명에 해당하는 프로필을 참조합니다. (프로파일을 생성하려면 [AWS 자격 증명 구성을 참조하세요](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-config-creds.html).) 다음 예제에서는 프로파일 이름이 `myProfile`인 자격 증명을 지정합니다.

  ```
  <appSettings>
    <!-- AWS CREDENTIALS -->
    <add key="AWSProfileName" value="myProfile"/>
  </appSettings>
  ```
+ **Elastic Beanstalk에 게시** 마법사를 사용하는 경우 **애플리케이션 옵션** 페이지의 **키** 및 **값** 영역의 **키**행에서 **AWS AccessKey**를 선택하세요. **값** 열에 액세스 키를 입력합니다. **AWS SecretKey**에 대해 이러한 단계를 반복하세요.
+ 레거시 **Amazon Web Services에 게시** 마법사를 사용하는 경우 **애플리케이션 옵션** 페이지의 **애플리케이션 자격 증명** 영역에서 **이 자격 증명 사용**을 선택한 다음 **액세스 키** 및 **시크릿 액세스 키** 상자에 액세스 키와 시크릿 액세스 키를 입력합니다.

# 애플리케이션을 Elastic Beanstalk 환경에 재게시하는 방법(레거시)
<a name="deployment-beanstalk-republish"></a>

**중요**  
이 설명서에서는 레거시 서비스 및 기능을 참조합니다. 업데이트된 가이드 및 내용은 [AWS .NET 배포 도구](https://aws.github.io/aws-dotnet-deploy/) 가이드를 참조하세요.

별도의 변경을 수행한 다음 이미 시작된 Elastic Beanstalk 환경에 새 버전을 재게시하여 애플리케이션을 반복할 수 있습니다.

1. 솔루션 탐색기에서, 이전 섹션에서 게시한 프로젝트의 **AEBWebAppDemo** 프로젝트 폴더의 컨텍스트 메뉴(마운스 오른쪽 버튼 클릭)를 열고 ** AWS Elastic Beanstalk에 게시**를 선택하세요다.  
![\[Solution Explorer context menu showing "Publish to AWS..." option for AEBWebAppDemo project.\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-visual-studio/latest/user-guide/images/tkv-publish-to-aws-console.png)

   **Publish to Elastic Beanstalk(Elastic Beanstalk에 게시)** 마법사가 표시됩니다.  
![\[Publish to AWS Elastic Beanstalk dialog with profile and deployment options.\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-app-console2.png)

1. **Redeploy to an existing environment(기존 환경에 재배포)**를 선택하고 이전에 프로젝트를 게시한 환경을 선택합니다. **다음**을 클릭합니다.

   **검토** 마법사가 나타납니다.  
![\[Review wizard showing deployment details for an AWS Elastic Beanstalk application.\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-app-review.png)

1. **배포**를 클릭합니다. 애플리케이션이 동일한 환경에 다시 배포됩니다.

애플리케이션이 시작 또는 종료되는 중일 경우 재게시할 수 없습니다.

# 사용자 지정 Elastic Beanstalk 애플리케이션 배포
<a name="deployment-beanstalk-custom"></a>

이 주제에서는 Elastic Beanstalk의 Microsoft Windows 컨테이너의 배포 매니페스트가 사용자 지정 애플리케이션 배포를 지원하는 방법을 설명합니다.

사용자 지정 애플리케이션 배포는 AWS 리소스를 생성하고 관리하면서 애플리케이션이 배포되는 방식도 완벽하게 제어할 수 있는 Elastic Beanstalk를 원하는 고급 사용자를 위한 강력한 기능입니다. 사용자 지정 애플리케이션 배포의 경우 세 가지 Elastic Beanstalk 작업을 수행하는 Windows PowerShell 스크립트를 만듭니다. 설치 작업은 배포가 시작될 때 사용되고 다시 시작은 도구 키트나 웹 콘솔에서 `RestartAppServer` API가 호출될 때 사용하며 제거는 새 배포가 발생할 때마다 이전 배포에서 호출됩니다.

예를 들어, 문서 팀에서 배포에 포함하려는 정적 웹 사이트를 작성하는 동안 배포하려는 ASP.NET 애플리케이션이 있을 수 있습니다. 다음과 같이 배포 매니페스트를 작성하여 이 작업을 수행할 수 있습니다.

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

    "msDeploy": [
      {
        "name": "app",
        "parameters": {
          "appBundle": "CoolApp.zip",
          "iisPath": "/"
        }
      }
    ],
    "custom": [
      {
        "name": "PowerShellDocs",
        "scripts": {
          "install": {
            "file": "install.ps1"
          },
          "restart": {
            "file": "restart.ps1"
          },
          "uninstall": {
            "file": "uninstall.ps1"
          }
        }
      }
    ]
  }
}
```

각 작업에 대해 나열된 스크립트는 배포 매니페스트 파일과 관련된 애플리케이션 번들에 있어야 합니다. 이 예에서는 애플리케이션 번들에 문서 팀에서 만든 정적 웹 사이트가 있는 documentation.zip 파일도 포함됩니다.

`install.ps1` 스크립트가 zip 파일 압축을 풀고 IIS 경로를 설정합니다.

```
Add-Type -assembly "system.io.compression.filesystem"
[io.compression.zipfile]::ExtractToDirectory('./documentation.zip', 'c:\inetpub\wwwroot\documentation')

powershell.exe -Command {New-WebApplication -Name documentation -PhysicalPath  c:\inetpub\wwwroot\documentation -Force}
```

애플리케이션이 IIS에서 실행 중이므로 다시 시작 작업이 IIS 재설정을 호출합니다.

```
iisreset /timeout:1
```

제거 스크립트의 경우 설치 단계에서 사용된 모든 설정과 파일을 정리해야 합니다. 이렇게 하면 새 버전 설치 단계 중에 이전 배포와의 충돌을 피할 수 있습니다. 이 예에서는 정적 웹 사이트의 IIS 애플리케이션과 웹 사이트 파일을 제거해야 합니다.

```
powershell.exe -Command {Remove-WebApplication -Name documentation}
Remove-Item -Recurse -Force 'c:\inetpub\wwwroot\documentation'
```

이러한 스크립트 파일과 애플리케이션 번들에 포함된 documentation.zip 파일을 사용하면 배포 시 ASP.NET 애플리케이션이 생성되고 문서 사이트가 배포됩니다.

이 예제에서는 단순한 정적 웹 사이트를 배포하는 간단한 예제를 선택하지만 사용자 지정 애플리케이션 배포를 통해 모든 유형의 애플리케이션을 배포하고 Elastic Beanstalk에서 AWS 리소스를 관리할 수 있도록 합니다.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# .NET 및 Elastic Beanstalk에 대한 다중 애플리케이션 지원
<a name="deployment-beanstalk-multiple-application"></a>

배포 매니페스트를 사용하면 여러 애플리케이션을 동일한 Elastic Beanstalk 환경에 배포할 수 있습니다.

배포 매니페스트는 [ASP.NET Core](http://www.asp.net/core) 웹 애플리케이션과 기존 ASP.NET 애플리케이션용 msdeploy 아카이브를 지원합니다. 프런트엔드에 ASP.NET Core를 사용하고 확장 API에 웹 API 프로젝트를 사용하여 뛰어난 새 애플리케이션을 작성한 시나리오가 있다고 가정해 보겠습니다. 또한 기존 ASP.NET을 사용하여 작성한 관리자 앱도 있습니다.

도구 키트의 배포 마법사는 단일 프로젝트의 배포에 중점을 둡니다. 여러 애플리케이션 배포를 잘 활용하려면 애플리케이션 번들을 수동으로 생성해야 합니다. 시작하려면 매니페스트를 작성합니다. 이 예제의 경우 솔루션의 루트에 매니페스트를 작성합니다.

매니페스트의 배포 단원에는 두 개의 하위 요소가 있습니다. 하나는 배포할 ASP.NET Core 웹 애플리케이션의 어레이이며 다른 하나는 배포할 msdeploy 아카이브의 어레이입니다. 각 애플리케이션의 경우 IIS 경로 및 애플리케이션의 비트 위치를 매니페스트에 상대적으로 설정합니다.

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

    "aspNetCoreWeb": [
      {
        "name": "frontend",
        "parameters": {
          "appBundle": "./frontend",
          "iisPath": "/frontend"
        }
      },
      {
        "name": "ext-api",
        "parameters": {
          "appBundle": "./ext-api",
          "iisPath": "/ext-api"
        }
      }
    ],
    "msDeploy": [
      {
        "name": "admin",
        "parameters": {
          "appBundle": "AmazingAdmin.zip",
          "iisPath": "/admin"
        }
      }
    ]
  }
}
```

매니페스트를 작성하면, Windows PowerShell을 사용하여 애플리케이션 번들을 생성하고 기존 Elastic Beanstalk 환경을 업데이트하여 실행합니다. 스크립트가 Visual Studio 솔루션을 포함하는 폴더에서 실행된다는 가정 하에 작성됩니다.

먼저 스크립트에서 애플리케이션 번들을 생성할 작업 영역 폴더를 설정합니다.

```
$publishFolder = "c:\temp\publish"

$publishWorkspace = [System.IO.Path]::Combine($publishFolder, "workspace")
$appBundle = [System.IO.Path]::Combine($publishFolder, "app-bundle.zip")

If (Test-Path $publishWorkspace){
  Remove-Item $publishWorkspace -Confirm:$false -Force
}
If (Test-Path $appBundle){
  Remove-Item $appBundle -Confirm:$false -Force
}
```

폴더를 생성하면 프런트엔드를 가져올 준비가 되었습니다. 배포 마법사와 마찬가지로 .NET CLI를 사용하여 애플리케이션을 게시합니다.

```
Write-Host 'Publish the ASP.NET Core frontend'
$publishFrontendFolder = [System.IO.Path]::Combine($publishWorkspace, "frontend")
dotnet publish .\src\AmazingFrontend\project.json -o $publishFrontendFolder -c Release -f netcoreapp1.0
```

"frontend" 하위 폴더는 출력 폴더로 사용되었으며, 매니페스트에서 설정한 폴더와 일치합니다. 이제 Web API 프로젝트에 대해서도 동일하게 수행해야 합니다.

```
Write-Host 'Publish the ASP.NET Core extensibility API'
$publishExtAPIFolder = [System.IO.Path]::Combine($publishWorkspace, "ext-api")
dotnet publish .\src\AmazingExtensibleAPI\project.json -o $publishExtAPIFolder -c Release -f netcoreapp1.0
```

관리자 사이트는 기존 ASP.NET 애플리케이션이므로, .NET CLI를 사용할 수 없습니다. 관리자 애플리케이션의 경우, msbuild를 통해 빌드 대상 패키지를 전달하여 msdeploy 아카이브를 생성합니다. 기본적으로 패키지 대상은 `obj\Release\Package` 폴더 아래에 msdeploy 아카이브를 생성하므로, 해당 아카이브를 게시 작업 영역으로 복사해야 합니다.

```
Write-Host 'Create msdeploy archive for admin site'
msbuild .\src\AmazingAdmin\AmazingAdmin.csproj /t:package /p:Configuration=Release
Copy-Item .\src\AmazingAdmin\obj\Release\Package\AmazingAdmin.zip $publishWorkspace
```

이러한 모든 애플리케이션으로 작업할 사항을 Elastic Beanstalk 환경에 알리려면 솔루션에서 게시 작업 영역으로 매니페스트를 복사한 다음 폴더를 압축하세요.

```
Write-Host 'Copy deployment manifest'
Copy-Item .\aws-windows-deployment-manifest.json $publishWorkspace

Write-Host 'Zipping up publish workspace to create app bundle'
Add-Type -assembly "system.io.compression.filesystem"
[io.compression.zipfile]::CreateFromDirectory( $publishWorkspace, $appBundle)
```

이제 애플리케이션 번들이 있으므로 웹 콘솔로 이동하여 아카이브를 Elastic Beanstalk 환경에 업로드할 수 있습니다. 또는 계속 AWS PowerShell cmdlet을 사용하여 애플리케이션 번들과 함께 Elastic Beanstalk 환경을 업데이트할 수 있습니다. `Set-AWSCredentials` 및 `Set-DefaultAWSRegion` cmdlet을 사용하여 현재 프로필과 리전을 Elastic Beanstalk 환경을 포함하는 프로필과 리전으로 설정해야 합니다.

```
Write-Host 'Write application bundle to S3'
# Determine S3 bucket to store application bundle
$s3Bucket = New-EBStorageLocation
Write-S3Object -BucketName $s3Bucket -File $appBundle


$applicationName = "ASPNETCoreOnAWS"
$environmentName = "ASPNETCoreOnAWS-dev"
$versionLabel = [System.DateTime]::Now.Ticks.ToString()

Write-Host 'Update Beanstalk environment for new application bundle'
New-EBApplicationVersion -ApplicationName $applicationName -VersionLabel $versionLabel -SourceBundle_S3Bucket $s3Bucket -SourceBundle_S3Key app-bundle.zip
Update-EBEnvironment -ApplicationName $applicationName -EnvironmentName $environmentName -VersionLabel $versionLabel
```

이제 툴킷 또는 웹 콘솔에서 Elastic Beanstalk 환경 상태 페이지를 사용하여 업데이트 상태를 확인합니다. 완료되면 배포 매니페스트에서 설정한 IIS 경로에서 배포한 각 애플리케이션을 탐색할 수 있습니다.