

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

# Amazon ECS에 ASP.NET Core 2.0 앱 배포(EC2)
<a name="deployment-ecs-aspnetcore-ec2"></a>

이 섹션에서는 Toolkit for Visual Studio의 일부로 제공되는 ** AWS에 컨테이너 게시** 마법사를 사용하여 Amazon ECS를 통해 Linux를 대상으로 하는 컨테이너화된 ASP.NET Core 2.0 애플리케이션을 EC2 시작 유형으로 배포하는 방법을 설명합니다. 웹 애플리케이션은 연속 실행이 되도록 설계되었기 때문에 서비스 방식으로 배포됩니다.

## 컨테이너 게시 전
<a name="tkv-deploy-ecs-netcore-prerequisites"></a>

** AWS에 컨테이너 게시**를 사용하여 ASP.NET Core 2.0 애플리케이션을 배포하기 전에 다음을 수행합니다.
+  [AWS 보안 인증 정보를 지정](deployment-ecs-specify-credentials.md)하고 [Amazon ECS를 설정](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/get-set-up-for-amazon-ecs.html)하세요.
+  [Docker를 설치합니다](https://docs.docker.com/engine/installation). [Windows용 Docker](https://docs.docker.com/docker-for-windows/install/)를 포함하여 서로 다른 설치 옵션이 몇 가지 제공됩니다.
+  웹 애플리케이션의 요구에 따라 [Amazon ECS 클러스터를 생성](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-cluster.html)합니다. 이 작업은 몇 가지 단계만 거치면 됩니다.
+ Visual Studio에서, Linux를 대상으로 하는 ASP.NET Core 2.0 컨테이너화된 애플리케이션용 프로젝트를 만들거나 엽니다.

## 에 컨테이너 게시 AWS 마법사 액세스
<a name="tkv-deployment-ecs-netcore-accessing"></a>

Linux를 대상으로 하는 ASP.NET Core 2.0 컨테이너화된 애플리케이션을 배포하려면 솔루션 탐색기에서 해당 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 ** AWS에 컨테이너 게시**를 선택하세요.

Visual Studio 빌드 메뉴에서 ** AWS에 컨테이너 게시**를 선택할 수도 있습니다.

## AWS 마법사에 컨테이너 게시
<a name="tkv-deploy-ecs-pubtoaws"></a>

 **사용할 계정 프로필** - 사용할 계정 프로필을 선택합니다.

 **리전** - 배포 리전을 선택합니다. 프로필과 리전은 배포 환경 리소스를 설정하고 기본 Docker 레지스트리를 선택하는 데 사용됩니다.

 **구성** - Docker 이미지 빌드 구성을 선택합니다.

 **Docker 리포지토리** - 기존의 Docker 레지스트리를 선택하거나 새 레지스트리의 이름을 입력하여 레지스트리를 생성합니다. 이 레지스트리에 빌드된 컨테이너 이미지가 게시됩니다.

 **태그** - 기존 태그를 선택하거나 새 태그의 이름을 입력합니다. 태그는 Docker 컨테이너의 버전, 옵션 또는 기타 고유의 구성 요소 같이 중요한 세부 정보를 추적할 수 있습니다.

 **배포** - **Service on an ECS Cluster(ECS 클러스터 서비스)**를 선택합니다. 이 배포 옵션은 애플리케이션이 장기 실행용으로 개발된 경우(예: ASP.NET Core 2.0 웹 애플리케이션)에 사용합니다.

 **설정을 `aws-docker-tools-defaults.json`에 저장하고 명령줄에 대한 프로젝트를 구성** - 명령줄에서 유연하게 배포하고 싶은 경우에 이 옵션을 선택합니다. 배포할 프로젝트 디렉터리의 `dotnet ecs deploy`와 `dotnet ecs publish` 컨테이너를 사용합니다.

## 시작 구성 페이지
<a name="tkv-deploy-ecs-launch-config"></a>

 **ECS 클러스터** - Docker 이미지가 실행될 클러스터를 선택합니다. AWS 관리 콘솔[을 사용하여 ECS 클러스터](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create_cluster.html)를 생성할 수 있습니다.

 **시작 유형** - EC2를 선택합니다. Fargate 시작 유형을 사용하는 방법은 [Amazon ECS에 ASP.NET Core 2.0 애플리케이션 배포(Fargate)](deployment-ecs-aspnetcore-fargate.md)를 참조하십시오.

## 서비스 구성 서비스
<a name="tkv-deploy-ecs-service"></a>

 **서비스** - 드롭다운에서 서비스 중 하나를 선택하여 기존 서비스에 컨테이너를 추가합니다. 또는 **새로 생성**을 선택하여 서비스를 새로 생성합니다. 서비스 이름은 클러스터 내에서 고유해야 하지만, 한 리전 또는 여러 리전에 걸쳐 존재하는 여러 클러스터에서 비슷한 서비스 이름을 사용할 수 있습니다.

 **작업 수** - 클러스터에 배포하여 계속 실행할 작업의 수입니다. 각 작업은 컨테이너 인스턴스의 하나입니다.

 **최소 정상 상태 백분율** - 배포 동안 `RUNNING` 상태를 반드시 유지해야 하는 작업의 백분율을 가장 가까운 정수로 반올림한 값입니다.

 **최대 정상 상태 백분율** - 배포 중에 `RUNNING` 또는 `PENDING` 상태가 허용되는 작업의 백분율을 가장 가까운 정수로 반내림한 값입니다.

 **배치 템플릿** - 작업 배치 템플릿을 선택합니다.

작업을 클러스터로 시작할 때 Amazon ECS는 CPU와 메모리 등 작업 정의에서 지정한 요구 사항에 따라 작업을 어디에 배치할지 결정해야 합니다. 마찬가지로 작업 수를 축소하는 경우, Amazon ECS는 어떤 태스크를 종료할지 결정해야 합니다.

배치 템플릿은 작업이 클러스터로 시작되는 방법을 제어합니다.
+ AZ Balanced Spread - 작업을 가용 영역과 가용 영역의 컨테이너 인스턴스에 분산합니다.
+ AZ Balanced BinPack - 작업을 가용 영역과 가용 메모리가 최소인 컨테이너 인스턴스에 분산합니다.
+ BinPack - 사용 가능한 CPU 또는 메모리 최소량에 따라 작업을 분산합니다.
+ One Task Per Host - 각 컨테이너 인스턴스에 서비스의 작업을 최대 1개 배치합니다.

자세한 내용은 [Amazon ECS 작업 배치](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement.html)를 참조하십시오.

## Application Load Balancer 페이지
<a name="tkv-deploy-ecs-app-load-balancer"></a>

 **Application Load Balancer 구성** - Application Load Balancer를 구성했는지 확인합니다.

 **서비스의 IAM 역할 선택** - 기존 역할을 선택하거나 **새로 생성**을 선택하여 새 역할을 생성합니다.

 **로드 밸런서** - 기존 로드 밸런서를 선택하거나 **새로 생성**을 선택하고 새 로드 밸런서의 이름을 입력합니다.

 **리스너 포트** - 기존 리스너 포트를 선택하거나 **새로 생성**을 선택하고 포트 번호를 입력합니다. 기본 포트인 `80`은 대부분의 웹 애플리케이션에 적합합니다.

 **대상 그룹** - 기본적으로 로드 밸런서는 대상 그룹에 대해 지정한 포트와 프로토콜을 사용하여 등록된 대상으로 요청을 전송합니다. 또는 대상 그룹에 각 대상을 등록할 때 이 포트를 재정의할 수 있습니다.

 **경로 패턴** - 로드 밸런서는 경로 기반 라우팅을 사용합니다. 기본 `/`를 수락하거나 다른 패턴을 제공합니다. 경로 이름은 대/소문자를 구별하고 최대 128자이며 [선택한 문자 집합](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#path-conditions)을 포함합니다.

 **상태 확인 경로** - 상태 확인을 위한 대상에서 목적지가 되는 ping 경로입니다. 기본 설정인 `/`는 대부분의 웹 애플리케이션에 적합합니다. 필요할 경우 다른 이름을 입력하십시오. 입력한 경로가 잘못된 경우에는 상태 확인이 실패하게 되고 상태가 비정상으로 간주됩니다.

여러 서비스가 배포되었고 각 서비스가 배포된 경로나 위치가 서로 다른 경우에는 사용자 지정 확인 경로가 필요할 수 있습니다.

## ECS 작업 정의 페이지
<a name="tkv-deploy-ecs-task-definition"></a>

 **작업 정의** - 기존 작업 정의를 선택하거나 **새로 생성**을 선택하고 새 작업 정의 이름을 입력합니다.

 **컨테이너** - 기존 컨테이너를 선택하거나 **새로 생성**을 선택하고 새 컨테이너 이름을 입력합니다.

 **메모리(MiB)** - **소프트 제한** 또는 **하드 제한** 값을 입력하거나 두 값을 모두 입력합니다.

컨테이너용으로 예약할 메모리의 *소프트 제한*(MiB)입니다. Docker는 소프트 한계 내에서 컨테이너 메모리를 유지하려고 합니다. 컨테이너는 메모리 파라미터에 지정된 하드 한계까지 추가 메모리를 사용하거나 컨테이너 인스턴스의 모든 가용 메모리를 사용할 수 있습니다(둘 중 먼저 발생하는 쪽).

컨테이너에 표시할 메모리의 *하드 제한*(MiB)입니다. 컨테이너가 여기서 지정된 메모리를 초과하려 하면 해당 컨테이너가 중지됩니다.

 **작업 역할** - 컨테이너 권한이 사용자를 대신하여 연결된 정책에 지정된 AWS APIs를 호출할 수 있도록 허용하는 IAM 역할에 대한 작업 역할을 선택합니다. 이것이 바로 애플리케이션에 보안 자격 증명이 전달되는 과정입니다. [애플리케이션의 AWS 보안 자격 증명을 지정하는 방법을](deployment-ecs-specify-credentials.md) 알아봅니다.

 **포트 매핑** - 컨테이너의 포트 매핑을 추가, 수정 또는 삭제합니다. 로드 밸런서가 활성화되어 있는 경우, 호스트 포트는 기본적으로 0으로 설정되고 포트 할당이 동적으로 이루어집니다.

 **환경 변수** - 컨테이너의 환경 변수를 추가, 수정 또는 삭제합니다.

구성에 만족하면 **게시**를 클릭하여 배포 프로세스를 시작합니다.

## 에 컨테이너 게시 AWS
<a name="tkv-deploy-ecs-publishing"></a>

배포 중에 이벤트가 표시됩니다. 이 마법사는 작업이 성공적으로 완료되면 자동으로 닫힙니다. 페이지 맨 아래에 있는 상자를 선택 해제하면 재정의를 할 수 있습니다.

 AWS 탐색기에서 새 인스턴스의 URL을 찾을 수 있습니다. Amazon ECS and Clusters 노드를 확장하고 클러스터를 클릭합니다.