클래식 콘솔을 사용하여 Windows 컨테이너 시작하기 - Amazon Elastic Container Service

클래식 콘솔을 사용하여 Windows 컨테이너 시작하기

이 자습서에서는 AWS Management Console에서 Amazon ECS 최적화 Windows Server AMI를 사용하여 Amazon ECS에서 Windows 컨테이너를 실행하는 방법을 살펴봅니다.

Windows 컨테이너 인스턴스를 위한 클러스터를 생성하고, 하나 이상의 컨테이너 인스턴스를 클러스터로 시작하며, Windows 컨테이너 이미지를 사용하는 태스크 정의를 등록하고, 해당 태스크 정의를 사용하는 서비스를 생성한 다음 컨테이너가 실행하는 샘플 웹페이지를 보게 됩니다. 자세한 내용은 Amazon EC2 Windows 컨테이너 섹션을 참조하세요.

1단계: Windows 클러스터 생성

Windows 컨테이너를 위한 새 클러스터를 생성할 수 있습니다. Linux Amazon ECS 최적화 AMI를 사용하는 Amazon EC2 인스턴스는 Windows 컨테이너를 실행할 수 없고 그 반대도 마찬가지이므로 Windows 컨테이너 인스턴스와 Linux 컨테이너 인스턴스를 서로 다른 클러스터에서 실행해야 가장 적절한 작업 배치가 이루어집니다. 이 자습서에서는 windows라는 클러스터를 만들고 하나 이상의 Amazon EC2 인스턴스를 Windows 컨테이너에 대한 클러스터에 등록합니다.

AWS Management Console를 사용하여 클러스터를 생성하려면

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

  2. 탐색 창에서 클러스터(Clusters)를 선택합니다.

  3. 클러스터 페이지에서 클러스터 생성(Create Cluster)을 선택합니다.

  4. EC2 Windows + 네트워킹(EC2 Windows + Networking)을 선택한 다음 다음 단계(Next step)를 선택합니다.

  5. 클러스터 이름(Cluster name)에는 클러스터의 이름을 입력합니다(이 예제에서 windows가 클러스터의 이름임). 최대 255개의 문자(대문자 및 소문자), 숫자, 하이픈 및 밑줄이 허용됩니다.

  6. 인스턴스 구성(Instance configuration) 섹션에서 다음 단계를 완료합니다.

    1. 프로비저닝 모델(Provisioning model)에서 다음 인스턴스 유형 중 하나를 선택합니다.

      • 온디맨드 인스턴스(On-Demand Instance)– 온디맨드 인스턴스를 사용하면 장기 약정이나 선결제 금액 없이 시간당 컴퓨팅 용량에 대한 요금을 지불할 수 있습니다.

      • 스팟(Spot)– 스팟 인스턴스를 사용하면 온디맨드 가격에서 최대 90% 할인된 금액으로 예비 Amazon EC2 컴퓨팅 용량에 입찰할 수 있습니다. 자세한 정보는 스팟 인스턴스를 참조하세요.

        참고

        스팟 인스턴스는 중단될 가능성이 있습니다. 중단할 수 없는 애플리케이션에는 스팟 인스턴스를 사용하지 않는 것이 좋습니다. 자세한 정보는 스팟 인스턴스 중단을 참조하세요.

    2. 스팟 인스턴스의 경우 다음을 수행합니다. 아니면 다음 단계로 건너뜁니다.

      1. 스팟 인스턴스 할당 전략에서 요구 사항에 맞는 전략을 선택합니다. 자세한 정보는 스팟 플릿 할당 전략을 참조하세요.

      2. 최고 입찰 가격(인스턴스/시간당)(Maximum bid price (per instance/hour))에 입찰 가격을 지정합니다. 입찰 가격이 선택한 인스턴스 유형에 대한 스팟 가격보다 낮을 경우, 스팟 인스턴스가 시작되지 않습니다.

    3. EC2 인스턴스 유형 페이지에서 인스턴스의 하드웨어 구성을 선택합니다. 여기서 선택하는 인스턴스 유형은 실행할 작업에 사용 가능한 리소스를 결정합니다.

    4. 인스턴스 개수(Number of instances)에서 클러스터로 시작할 Amazon EC2 인스턴스의 수를 선택합니다.

    5. EC2 AMI Id에서 컨테이너 인스턴스에 사용할 Amazon ECS 최적화 AMI를 선택합니다. 사용할 수 있는 AMI는 리전 및 선택한 인스턴스 유형에 따라 결정됩니다. 자세한 내용은 Amazon ECS 최적화 AMI 섹션을 참조하세요.

    6. EBS 스토리지(EBS storage (GiB))는 컨테이너 인스턴스에서 데이터 스토리지에 사용할 Amazon EBS 볼륨의 크기를 선택합니다. 더 큰 용량의 이미지 및 컨테이너 스토리지를 위해 데이터 볼륨의 크기를 늘릴 수 있습니다.

    7. 키 페어(Key pair)는 컨테이너 인스턴스에서 RDP 액세스에 사용할 Amazon EC2 키 페어를 선택합니다. 키 페어를 지정하지 않으면 RDP를 사용하여 컨테이너 인스턴스에 연결할 수 없습니다. 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서Amazon EC2 키 페어를 참조하세요.

  7. 네트워킹(Networking) 섹션에서 컨테이너 인스턴스를 시작할 VPC를 구성합니다. 기본적으로 클러스터 생성 마법사는 가용 영역이 서로 다른 서브넷 2개와 80번 포트에서 인터넷에 개방되는 보안 그룹을 포함하는 새 VPC를 생성합니다. 이것이 HTTP 서비스에서 잘 작동하는 기본 설정입니다. 하지만 아래 하위 단계를 따라 이러한 설정을 수정할 수 있습니다.

    1. VPC의 경우 새 VPC를 생성하거나 기존 VPC를 선택합니다.

    2. (선택 사항) 새 VPC를 생성하는 경우 CIDR 블록(CIDR Block)에서 VPC의 CIDR 블록을 선택합니다. 자세한 정보는 Amazon VPC 사용 설명서VPC 및 서브넷을 참조하세요.

    3. 서브넷(Subnets)의 경우 VPC에 사용할 서브넷을 선택합니다. 새 VPC를 생성하는 경우 기본 설정을 유지할 수도 있고, 요구 사항에 맞게 설정을 수정할 수도 있습니다. 기존 VPC를 사용하는 경우 클러스터에 사용할 VPC에서 하나 이상의 서브넷을 선택합니다.

    4. 보안 그룹(Security group)의 경우 클러스터의 컨테이너 인스턴스에 연결할 보안 그룹을 선택합니다. 새 보안 그룹을 만들 때 인바운드 트래픽을 허용할 CIDR 블록을 지정할 수 있습니다. 기본 포트 0.0.0.0/0은 인터넷에 열려 있습니다. 단일 포트 또는 연속 포트를 선택하여 컨테이너 인스턴스에서 열 수도 있습니다. 보다 복잡한 보안 그룹 규칙이 필요하면 이미 생성한 기존 보안 그룹을 선택할 수 있습니다.

      참고

      또한 새 보안 그룹을 생성한 후 클러스터를 생성한 다음 규칙을 수정할 수도 있습니다. 자세한 내용은 Windows 인스턴스용 Amazon EC2 사용 설명서Windows 인스턴스에 대한 Amazon EC2 보안 그룹을 참조하세요.

    5. 컨테이너 인스턴스 IAM 역할(Container instance IAM role) 섹션에서 컨테이너 인스턴스에 사용할 IAM 역할을 선택합니다. 콘솔 첫 실행 마법사에서 사용자를 위해 생성된 ecsInstanceRole이 계정에 있는 경우 기본적으로 이 역할이 선택됩니다. 계정에 이 역할이 없는 경우 컨테이너 인스턴스에 사용할 다른 IAM 역할을 선택할 수 있습니다.

      중요

      사용하는 IAM 역할에 AmazonEC2ContainerServiceforEC2Role 관리형 정책이 연결되어 있어야 합니다. 그렇지 않으면 클러스터 생성 중에 오류가 발생합니다. 적절한 IAM 권한을 사용하여 컨테이너 인스턴스를 시작하지 않으면 Amazon ECS 에이전트가 클러스터에 연결하지 않습니다. 자세한 정보는 Amazon ECS 컨테이너 인스턴스 IAM 역할 섹션을 참조하세요.

    6. 이전에 스팟 인스턴스 유형을 선택한 경우, 스팟 플릿 역할 IAM 역할(Spot Fleet Role IAM role) 섹션은 IAM 역할 ecsSpotFleetRole이 생성됨을 나타냅니다.

  8. 태그(Tags) 섹션에 각 태그에 대한 키와 값을 지정하여 클러스터와 연결합니다. 자세한 내용은 Amazon ECS 리소스에 태그 지정 섹션을 참조하세요.

  9. CloudWatch 컨테이너 인사이트 섹션에서 해당 클러스터에 컨테이너 인사이트를 사용할지를 선택합니다. 자세한 내용은 Amazon ECS CloudWatch Container Insights 섹션을 참조하세요.

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

    참고

    Windows 컨테이너 인스턴스가 클러스터에 등록되려면 최대 15분 정도 걸릴 수 있습니다.

2단계: Windows 태스크 정의 등록

Amazon ECS 클러스터에서 Windows 컨테이너를 실행하려면 먼저 태스크 정의를 등록해야 합니다. 다음 태스크 정의 예시는 microsoft/iis 컨테이너 이미지가 포함된 컨테이너 인스턴스의 포트 8080에 있는 간단한 웹페이지를 보여 줍니다.

AWS Management Console을 사용하여 샘플 태스크 정의를 등록하려면

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

  2. 탐색 창에서 태스크 정의(Task Definitions)를 선택합니다.

  3. 태스크 정의 페이지에서 새 태스크 정의 생성(Create new Task Definition)을 선택합니다.

  4. 시작 유형 호환성 선택 페이지에서 EC2, 다음 단계(Next step)를 선택합니다.

  5. 페이지 하단으로 스크롤하고 JSON을 통한 구성(Configure via JSON)을 선택합니다.

  6. 아래의 샘플 태스크 정의 JSON을 텍스트 영역(여기서 미리 채워진 JSON 교체)에 붙여 넣고 저장(Save)을 선택합니다.

    { "family": "windows-simple-iis", "containerDefinitions": [ { "name": "windows_sample_app", "image": "mcr.microsoft.com/windows/servercore/iis", "cpu": 512, "entryPoint":["powershell", "-Command"], "command":["New-Item -Path C:\\inetpub\\wwwroot\\index.html -ItemType file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p>' -Force ; C:\\ServiceMonitor.exe w3svc"], "portMappings": [ { "protocol": "tcp", "containerPort": 80, "hostPort": 8080 } ], "memory": 768, "essential": true } ] }
  7. 정보를 확인한 후 생성(Create)을 선택합니다.

AWS CLI를 사용하여 샘플 태스크 정의를 등록하려면

  1. windows-simple-iis.json이라는 파일을 생성합니다.

  2. 선호하는 텍스트 편집기를 열어 위의 샘플 JSON을 파일에 추가하고 저장합니다.

  3. AWS CLI를 사용해 다음 명령을 실행하여 태스크 정의를 Amazon ECS에 등록합니다.

    참고

    Windows 클러스터가 존재하는 리전과 동일한 리전을 사용하도록 AWS CLI를 구성하거나 --region your_cluster_region 옵션을 명령에 추가합니다.

    aws ecs register-task-definition --cli-input-json file://windows-simple-iis.json

3단계: 태스크 정의를 사용하여 서비스 생성

태스크 정의를 등록한 후 태스크 정의를 사용하여 클러스터에 태스크를 배치할 수 있습니다. 다음 절차에서는 태스크 정의를 사용하여 서비스를 만들고 작업 하나를 클러스터에 배치합니다.

콘솔을 사용하여 태스크 정의에서 서비스를 생성하려면

  1. 태스크 정의: windows-simple-iis 등록 확인 페이지에서 작업(Actions), 서비스 생성(Create Service)을 차례로 선택합니다.

  2. 서비스 생성 페이지에서 다음 정보를 입력한 다음 서비스 생성(Create service)을 선택합니다.

    • 시작 유형(Launch type): EC2

    • 클러스터(Cluster): windows

    • 서비스 이름(Service name): windows-simple-iis

    • 서비스 유형(Service type): REPLICA

    • 작업 개수(Number of tasks): 1

    • 배포 유형(Deployment type): 롤링 업데이트

AWS CLI를 사용하여 태스크 정의에서 서비스를 생성하려면

  • AWS CLI를 사용해 다음 명령을 실행하여 서비스를 만듭니다.

    aws ecs create-service --cluster windows --task-definition windows-simple-iis --desired-count 1 --service-name windows-simple-iis

4단계: 서비스 보기

서비스가 태스크를 클러스터로 시작한 후 브라우저에서 서비스를 보고 IIS 테스트 페이지를 열어 컨테이너가 실행 중인지 확인할 수 있습니다.

참고

컨테이너 인스턴스가 Windows 컨테이너 기본 계층을 다운로드하고 추출하는 데는 최대 15분 정도 걸릴 수 있습니다.

서비스를 보려면

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

  2. 클러스터 페이지에서 windows 클러스터를 선택합니다.

  3. 서비스(Services) 탭에서 windows-simple-iis 서비스를 선택합니다.

  4. 서비스: windows-simple-iis 페이지에서 서비스 내 작업의 작업 ID를 선택합니다.

  5. 태스크 페이지에서 iis 컨테이너를 확장해 정보를 봅니다.

  6. 컨테이너의 네트워크 바인딩(Network bindings)에서 외부 링크 IP 주소-포트 조합 링크가 보여야 합니다. 해당 링크를 선택해 브라우저에서 IIS 테스트 페이지를 엽니다.

    
                        Amazon ECS 샘플 애플리케이션의 스크린샷 출력에 “애플리케이션이 현재 Amazon ECS에서 실행 중입니다"로 표시됩니다.