

# Amazon ECS 관리형 인스턴스에 대한 작업을 생성하는 방법에 대해 알아봅니다.
<a name="getting-started-managed-instances"></a>

Amazon ECS 관리형 인스턴스에서 Amazon ECS를 사용하여 컨테이너화된 애플리케이션을 실행하는 방법에 대해 알아봅니다.

## 사전 조건
<a name="getting-started-prerequisites"></a>

 자습서를 시작하기 전에 다음을 완료합니다.
+ [Amazon ECS 설정](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/get-set-up-for-amazon-ecs.html)에 나와 있는 단계를 완료했습니다.
+ [Amazon ECS 사용 설정](get-set-up-for-amazon-ecs.md)의 단계가 완료되었습니다.
+ Amazon ECS 관리형 인스턴스에 필요한 IAM 역할이 있습니다. 여기에는 다음이 포함됩니다.
  + 인프라 역할 - Amazon ECS가 사용자를 대신해 AWS 서비스를 직접 호출하여 Amazon ECS 관리형 인스턴스 인프라를 관리하도록 허용합니다.

    자세한 내용은 [Amazon ECS 인프라 IAM 역할](infrastructure_IAM_role.md) 섹션을 참조하세요.
  + 인스턴스 프로파일 - 관리형 인스턴스에서 실행되는 Amazon ECS 컨테이너 에이전트 및 Docker 대몬에 대한 권한을 제공합니다.

    인스턴스 역할 이름에는 인프라 역할의 `iam:PassRole` 작업과 일치하도록 접두사로 `ecsInstanceRole`이 포함되어야 합니다.

    자세한 내용은 [Amazon ECS 관리형 인스턴스의 인스턴스 프로파일](managed-instances-instance-profile.md) 섹션을 참조하세요.
+ 사용할 VPC 및 보안 그룹이 생성되었습니다. 이 자습서에서는 Amazon ECR Public에서 호스팅되는 컨테이너 이미지를 사용하므로 인스턴스에서 인터넷에 액세스할 수 있어야 합니다. 인스턴스에 인터넷 경로를 제공하려면 다음 옵션 중 하나를 사용합니다.
  + 탄력적 IP 주소가 있는 NAT 게이트웨이와 함께 프라이빗 서브넷을 사용합니다.
  + 퍼블릭 서브넷을 사용하고 퍼블릭 IP 주소를 인스턴스에 할당합니다.

  자세한 내용은 [Virtual Private Cloud 생성](get-set-up-for-amazon-ecs.md#create-a-vpc) 섹션을 참조하세요.

  보안 그룹 및 규칙에 대한 자세한 내용은 *Amazon Virtual Private Cloud 사용 설명서*의 [VPC에 대한 기본 보안 그룹](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#DefaultSecurityGroup)과 [규칙 예](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#security-group-rule-examples)를 참조하세요.
+ (선택 사항) AWS CloudShell은 고객에게 자체 EC2 인스턴스를 생성할 필요 없이 명령줄을 제공하는 도구입니다. 자세한 내용은 *AWS CloudShell 사용 설명서*의 [What is AWS CloudShell?](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)을 참조하세요.

## 1단계: 클러스터 생성
<a name="getting-started-step1"></a>

1. [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)에서 Amazon ECS 콘솔을 엽니다.

1. 탐색 모음에서 사용할 리전을 선택합니다.

1. 탐색 창에서 **클러스터**를 선택합니다.

1. **클러스터(Clusters)** 페이지에서 **클러스터 생성(Create cluster)**을 선택합니다.

1. **클러스터 구성** 아래의 **클러스터 이름**에 고유한 이름을 입력합니다.

1. **인프라**에서 **Fargate 및 관리형 EC2**를 선택합니다.

1. 관리형 인스턴스 설정을 구성합니다.

   1. **인프라 역할**에서 관리형 인스턴스 인프라 관리를 위해 생성한 IAM 역할을 선택합니다.

   1. **인스턴스 프로파일**에서 사용자가 생성한 `ecsInstanceRole`을 선택합니다.

   1. **인스턴스 속성**에서 **ECS 기본값 사용**을 선택합니다.

1. **네트워킹**에서 관리형 인스턴스의 VPC 및 서브넷을 구성합니다.

   1. **VPC**에서 관리형 인스턴스를 호스팅하는 VPC를 선택합니다.

   1. **서브넷**에서 관리형 인스턴스가 시작될 서브넷을 하나 이상 선택합니다.

   1. **보안 그룹(Security groups)**에서 하나 이상의 보안 그룹을 선택합니다.

1. (선택 사항) 클러스터에 태그를 추가하려면 **태그**를 펼친 다음, 태그를 구성합니다.

1. **생성(Create)**을 선택합니다.

## 2단계: 태스크 정의 생성
<a name="getting-started-step2"></a>

작업 정의란 애플리케이션에 대한 블루프린트와 같습니다. Amazon ECS에서 태스크를 시작할 때마다 태스크 정의를 지정합니다. 그래야만 컨테이너에 사용할 도커 이미지, 작업에서 사용할 컨테이너 수, 각 컨테이너의 리소스 할당을 서비스가 알 수 있습니다. 이 단계에 따라 태스크 정의를 생성합니다.

1. 탐색 창에서 **태스크 정의**를 선택합니다.

1. **새 태스크 정의 생성(Create new task definition)**, **JSON으로 새 태스크 정의 생성(Create new task definition with JSON)**을 선택합니다.

1. 다음 JSON을 복사하여 편집기에 붙여넣고 미리 채워진 JSON을 바꿉니다.

   **account-id**를 AWS 계정 ID로 바꾸고, **region**을 사용자가 사용하는 리전으로 바꿉니다.

   ```
   {
     "family": "managed-instance-tutorial",
     "networkMode": "awsvpc",
     "executionRoleArn": "arn:aws:iam::account-id:role/ecsTaskExecutionRole",
     "containerDefinitions": [
       {
         "name": "sample-app",
         "image": "public.ecr.aws/docker/library/httpd:latest",
         "essential": true,
         "portMappings": [
           {
             "containerPort": 80,
             "hostPort": 80,
             "protocol": "tcp"
           }
         ],
         "logConfiguration": {
           "logDriver": "awslogs",
           "options": {
             "awslogs-group": "/ecs/managed-instance-tutorial",
             "awslogs-region": "region",
             "awslogs-stream-prefix": "ecs"
           }
         }
       }
     ],
     "requiresCompatibilities": [
       "MANAGED_INSTANCES"
     ],
     "cpu": "1024",
     "memory": "2048"
   }
   ```

1. **생성(Create)**을 선택합니다.

## 3단계: 서비스 생성
<a name="getting-started-step3"></a>

Amazon ECS 서비스를 사용하면 Amazon ECS 클러스터에서 지정된 수의 태스크 정의 인스턴스를 동시에 실행하고 관리할 수 있습니다. 이 단계를 따라 서비스를 생성합니다.

1. 탐색 창에서 **클러스터**를 선택하고 **managed-instance-tutorial** 클러스터를 선택합니다.

1. **Services**(서비스) 탭에서 **Create**(생성)를 선택합니다.

1. **태스크 정의 패밀리**에서 **managed-instance-tutorial**을 선택합니다.

1. **서비스 이름**에 **managed-instance-tutorial-service**를 입력합니다.

1. **환경**에서 **용량 공급자 전략**을 선택합니다.

1. **네트워킹**에서 다음을 구성합니다.

   1. 기존 API를 선택하거나 새로 를 생성합니다.

   1. **서브넷**에서 사용할 서브넷을 선택합니다.

   1. **보안 그룹**에서 기존 보안 그룹을 선택하거나 포트 80에서 인바운드 트래픽을 허용하는 새 보안 그룹을 생성합니다.

1. **생성(Create)**을 선택합니다.

## 4단계: 서비스 보기
<a name="getting-started-step4"></a>

서비스가 시작된 후 이를 보고 이에 대해 자세히 알아보고 테스트할 수 있습니다.

1. **managed-instance-tutorial-service** 서비스를 선택합니다.

1. **태스크** 탭에서 실행 중인 태스크의 태스크 ID를 선택합니다.

1. **네트워크**의 **퍼블릭 IP**에서 **주소 열기**를 선택합니다.

1. 웹 서버가 제대로 실행되고 있음을 확인하는 Apache HTTP Server 테스트 페이지가 표시됩니다.

## 5단계: 정리
<a name="getting-started-step5"></a>

이 자습서를 완료하면 사용하지 않는 리소스에 대해 요금이 발생하지 않도록 연결된 리소스를 정리해야 합니다.

1. 탐색 창에서 **클러스터**를 선택합니다.

1. **클러스터** 페이지에서 **managed-instance-tutorial** 클러스터를 선택합니다.

1. **서비스** 탭을 선택합니다.

1. **managed-instance-tutorial-service** 서비스를 선택한 다음 **삭제**를 선택합니다.

1. 확인 프롬프트에서 **delete**를 입력한 다음, **삭제**를 선택합니다.

1. 서비스가 삭제된 후 탐색 창에서 **클러스터**를 선택합니다.

1. **클러스터** 페이지에서 **managed-instance-tutorial** 클러스터를 선택한 다음 **클러스터 삭제**를 선택합니다.

1. 확인 프롬프트에서 **delete managed-instance-tutorial**를 입력한 다음, **삭제**를 선택합니다.