Amazon Elastic Container Service
개발자 안내서 (API 버전 2014-11-13)

Amazon Elastic Container Service란 무엇입니까?

Amazon Elastic Container Service(Amazon ECS)는 클러스터에서 도커 컨테이너를 손쉽게 실행, 중지 및 관리할 수 있게 해주는 컨테이너 관리 서비스로서 확장성과 속도가 뛰어납니다. Amazon ECS 시작 유형을 사용하는 서비스 또는 작업을 시작하여 Fargate에서 관리하는 서버를 사용하지 않는 인프라에서 클러스터를 호스팅할 수 있습니다. 더 세부적인 제어를 위해 EC2 시작 유형을 사용하여 관리하는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 클러스터에서 작업을 호스팅할 수 있습니다. 시작 유형에 대한 자세한 내용은 Amazon ECS 시작 유형 단원을 참조하십시오.

Amazon ECS에서는 간단한 API 호출을 사용하여 컨테이너 기반 애플리케이션을 시작 및 중지할 수 있고 중앙 집중식 서비스를 사용하여 클러스터 상태를 확인할 수 있으며 다수의 친숙한 Amazon EC2 기능에 액세스할 수 있습니다.

Amazon ECS를 사용하여 리소스 요구 사항, 격리 정책 및 가용성 요구 사항을 기반으로 클러스터에서의 컨테이너 배치를 예약할 수 있습니다. Amazon ECS를 사용하면 사용자가 자체 클러스터 관리 및 구성 관리 시스템을 운영하거나 관리 인프라 조정에 신경 쓸 필요가 없습니다.

Amazon ECS를 사용하면 일관된 배포 및 구축 환경을 생성하고, 배치 및 ETL(Extract-Transform-Load) 워크로드를 관리 및 크기 조정하고, 마이크로 서비스 모델에 정교한 애플리케이션 아키텍처를 구축할 수 있습니다. Amazon ECS 사용 사례 및 시나리오에 대한 자세한 내용은 컨테이너 사용 사례를 참조하십시오.

또한 AWS Elastic Beanstalk을 사용하면 애플리케이션 인프라의 다른 구성 요소와 연동하여 도커 컨테이너를 신속하게 개발, 테스트 및 배포할 수 있습니다. 다만 Amazon ECS를 직접 사용하면 보다 세부적인 제어가 가능하며 더 다양한 사용 사례를 이용할 수 있습니다. 자세한 내용은 AWS Elastic Beanstalk 개발자 안내서를 참조하십시오.

Amazon ECS의 기능

Amazon ECS는 특정 리전 내의 여러 가용 영역에 걸쳐 고가용성 방식으로 애플리케이션 컨테이너를 실행하는 과정을 간소화하는 리전 서비스입니다. 새 또는 기존의 VPC에서 Amazon ECS 클러스터를 생성할 수 있습니다. 클러스터를 실행한 후 클러스터 사이에서 실행할 도커 컨테이너 이미지를 지정하는 작업 정의 및 서비스를 정의할 수 있습니다. 컨테이너 이미지는 컨테이너 레지스트리에서 저장 및 pull됩니다. 레지스트리는 AWS 인프라 내부 또는 외부에 존재할 수 있습니다.

다음 다이어그램은 Fargate 시작 유형을 사용하는 Amazon ECS 환경의 아키텍처를 나타낸 것입니다.

다음 단원에서는 Amazon ECS 아키텍처의 개별 요소에 대해 보다 자세히 알아봅니다.

컨테이너 및 이미지

Amazon ECS에서 애플리케이션을 배포하려면 애플리케이션 구성 요소가 컨테이너에서 실행되도록 구축되어야 합니다. 도커 컨테이너는 소프트웨어 애플리케이션이 필요한 모든 것(코드, 런타임, 시스템 도구, 시스템 라이브러리 등)을 포함하는, 소프트웨어 개발의 표준화된 단위입니다. 컨테이너는 이미지라고 하는 읽기 전용 템플릿에서 생성됩니다.

일반적으로 이미지는 컨테이너에 포함되는 모든 구성 요소를 지정하는 일반 텍스트 파일인 Dockerfile로부터 빌드됩니다. 그런 다음 이 이미지는 레지스트리에 저장되어 여기로부터 다운로드되거나 클러스터에서 실행될 수 있습니다. 컨테이너 기술에 대한 자세한 내용은 Amazon ECS의 도커 기본 사항 단원을 참조하십시오.

작업 정의

애플리케이션이 Amazon ECS에서 실행되도록 준비하려면 작업 정의를 생성합니다. 작업 정의는 애플리케이션을 구성하는 하나 이상(최대 10개)의 컨테이너를 설명하는 JSON 형식의 텍스트 파일입니다. 작업 정의를 애플리케이션의 청사진으로 생각할 수 있습니다. 작업 정의는 애플리케이션에 다양한 파라미터를 지정합니다. 작업 정의 파라미터 예제는 사용할 컨테이너, 사용할 시작 유형, 애플리케이션을 위해 개방할 포트, 작업의 컨테이너에 사용할 데이터 볼륨 등입니다. 작업 정의에 사용할 수 있는 특정 파라미터는 사용 중인 시작 유형에 따라 달라집니다. 작업 정의 생성에 대한 자세한 내용은 Amazon ECS 작업 정의 단원을 참조하십시오.

다음은 Fargate 시작 유형을 사용하는 NGINX 웹 서버를 실행하는 단일 컨테이너가 포함된 작업 정의의 예제입니다. 작업 정의에서 여러 컨테이너를 사용하는 확대된 예제는 예제 작업 정의 단원을 참조하십시오.

{ "family": "webserver", "containerDefinitions": [ { "name": "web", "image": "nginx", "memory": "100", "cpu": "99" }, ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "memory": "512", "cpu": "256", }

작업 및 예약

작업은 클러스터 내 작업 정의를 인스턴스화하는 것입니다. Amazon ECS에서 애플리케이션에 대한 작업 정의를 생성하면 클러스터에서 실행할 작업 수를 지정할 수 있습니다.

Fargate 시작 유형을 사용하는 각 작업은 자체 격리 경계를 포함하며 기본 커널, CPU 리소스, 메모리 리소스 또는 탄력적 네트워크 인터페이스를 다른 작업과 공유하지 않습니다.

Amazon ECS 작업 스케줄러는 클러스터 내에 작업을 배치하는 일을 맡습니다. 다양한 예약 옵션을 사용할 수 있습니다. 예를 들어 지정된 개수의 작업을 동시에 실행 및 관리하는 서비스를 지정할 수 있습니다. 사용 가능한 다양한 예약 옵션에 대한 자세한 내용은 Amazon ECS 작업 예약 단원을 참조하십시오.

클러스터

Amazon ECS를 사용하여 작업을 실행하면 리소스의 논리적 그룹인 클러스터에 작업을 배치하는 것입니다. 해당 클러스터 내 작업에서 Fargate 시작 유형을 사용하는 경우, Amazon ECS에서 클러스터 리소스를 관리합니다. EC2 시작 유형을 사용하면 클러스터는 사용자가 관리하는 컨테이너 인스턴스의 그룹이 됩니다. Amazon ECS 컨테이너 인스턴스는 Amazon ECS 컨테이너 에이전트를 실행하는 Amazon EC2 인스턴스입니다. Amazon ECS는 사용자가 지정하는 레지스트리에서 컨테이너 이미지를 다운로드하여 그 이미지를 클러스터 내에서 실행합니다.

클러스터 생성에 관한 자세한 내용은 Amazon ECS 클러스터 단원을 참조하십시오. EC2 시작 유형을 사용하고 있다면 Amazon ECS 컨테이너 인스턴스에서 컨테이너 인스턴스 생성에 대한 내용을 읽을 수 있습니다.

컨테이너 에이전트

컨테이너 에이전트는 Amazon ECS 클러스터의 각 인프라 리소스에서 실행됩니다. 컨테이너 에이전트는 리소스에서 현재 실행 중인 작업과 리소스 사용률에 대한 정보를 Amazon ECS에 전송하고 Amazon ECS로부터 요청을 수신할 때마다 작업을 시작 또는 중지합니다. 자세한 내용은 Amazon ECS 컨테이너 에이전트 단원을 참조하십시오.

처음으로 Amazon ECS 사용하기

Amazon ECS를 처음 사용하는 경우, Amazon ECS용 AWS Management 콘솔이 웹 서버용 작업 정의를 정의하고 서비스를 구성하며 첫 번째 Fargate 작업을 시작하는 과정을 단계별로 안내하는 처음 실행 마법사를 제공합니다. Amazon ECS에 대한 사전 경험이 없는 사용자는 처음 실행 마법사를 사용하는 것이 가장 좋습니다. 자세한 내용은 Amazon ECS 시작하기 자습서를 참조하십시오.

또는 AWS Command Line Interface(AWS CLI)를 설치하여 Amazon ECS를 사용할 수 있습니다. 자세한 내용은 Amazon ECS로 설정 단원을 참조하십시오.

Amazon ECS는 다음과 같은 AWS 서비스와 함께 사용할 수 있습니다.

AWS Identity and Access Management

IAM은 사용자를 위해 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스입니다. IAM을 사용하여 AWS 리소스를 사용할 수 있는 사람을 제어(인증)하고 이들이 사용할 수 있는 리소스 및 그 사용 방법을 제어(권한 부여)합니다. Amazon ECS에서 IAM은 IAM 역할을 사용하는 컨테이너 인스턴스 레벨에서 그리고 IAM 작업 역할을 사용하는 작업 레벨에서 액세스를 제어하는 데 사용할 수 있습니다. 자세한 내용은 Amazon ECS IAM 정책, 역할 및 권한 단원을 참조하십시오.

Amazon EC2 Auto Scaling

Auto Scaling는 사용자 정의 정책, 상태 확인 및 일정에 따라 작업의 규모를 자동으로 늘리거나 줄일 수 있게 해주는 웹 서비스입니다. 서비스 내 Fargate 작업과 함께 Auto Scaling를 사용하여 여러 가지 지표에 대응해 규모를 조정하거나 EC2 작업을 함께 사용하여 클러스터 내 컨테이너 인스턴스의 규모를 조정할 수 있습니다. 자세한 내용은 서비스 자동 조정 단원을 참조하십시오.

Elastic Load Balancing

Elastic Load Balancing에서는 애플리케이션의 수신 트래픽을 Amazon ECS 서비스의 여러 작업에 걸쳐 자동으로 분산합니다. 따라서 애플리케이션의 내결함성 수준을 크게 높이고, 애플리케이션 트래픽을 배포하는 데 필요한 로드 밸런싱 용량을 원활하게 제공할 수 있습니다. Elastic Load Balancing를 사용하여 클러스터의 서비스 사이에서 트래픽을 밸런싱하는 엔드포인트를 생성할 수 있습니다. 자세한 내용은 서비스 로드 밸런싱 단원을 참조하십시오.

Amazon Elastic Container Registry

Amazon ECR은 안전하고 확장 가능하고 신뢰할 수 있는 관리형 AWS 도커 레지스트리 서비스입니다. Amazon ECR은 IAM을 사용하여 리소스 기반 권한으로 프라이빗 도커 리포지토리를 지원하므로 특정 사용자나 작업은 리포지토리 및 이미지에 액세스할 수 있습니다. 개발자는 Docker CLI를 사용하여 이미지를 푸시, 가져오기 및 관리할 수 있습니다. 자세한 내용은 Amazon Elastic Container Registry 사용 설명서 단원을 참조하십시오.

AWS CloudFormation

AWS CloudFormation을 통해 개발자와 시스템 관리자는 쉽게 관련 AWS 리소스 모음을 생성 및 관리하고 순서에 따라 예측 가능한 방식으로 프로비저닝하고 업데이트할 수 있습니다. 클러스터, 작업 정의 및 서비스를 AWS CloudFormation 스크립트의 엔터티로 정의할 수 있습니다. 자세한 내용은 AWS CloudFormation 템플릿 참조를 참조하십시오.

Amazon ECS에 액세스

다음과 같은 방식으로 Amazon ECS와 관련된 작업을 할 수 있습니다.

AWS Management 콘솔

콘솔은 Amazon ECS 리소스를 관리하기 위한 브라우저 기반 인터페이스입니다. 콘솔 사용법을 안내하는 자습서는 Amazon ECS 시작하기 단원을 참조하십시오.

AWS 명령줄 도구

AWS 명령줄 도구를 통해 시스템의 명령줄에서 명령을 실행하여 Amazon ECS 및 AWS 작업을 수행할 수 있습니다. 이렇게 하는 것이 콘솔을 사용하는 것보다 더 빠르고 편리할 수 있습니다. 명령줄 도구는 AWS 작업을 수행하는 스크립트를 작성할 때도 유용합니다.

AWS에서는 AWS Command Line Interface(AWS CLI) 및 Windows PowerShell용 AWS 도구라는 두 가지 명령줄 도구 세트를 제공합니다. 자세한 내용은 AWS Command Line Interface 사용 설명서Windows PowerShell용 AWS 도구 사용 설명서를 참조하십시오.

Amazon ECS CLI

AWS CLI를 사용하여 Amazon ECS 리소스에 액세스하는 이외에, 상위 수준 명령을 제공하는 Amazon ECS CLI를 통해 Docker Compose를 사용하는 로컬 개발 환경으로부터 클러스터 및 작업을 생성, 업데이트 및 모니터링하는 절차를 간소화할 수 있습니다. 자세한 내용은 Amazon ECS 명령줄 인터페이스 사용 단원을 참조하십시오.

AWS SDK

SDK를 사용해 다양한 프로그래밍 언어로 Amazon ECS에 액세스할 수 있습니다. SDK는 다음 작업들을 자동으로 수행합니다.

  • 서비스 요청에 대한 암호화 서명

  • 요청 재시도

  • 오류 응답 처리

사용 가능한 SDK에 대한 자세한 정보는 Amazon Web Services용 도구 단원을 참고하십시오.