Amazon ECS 개발자 도구 개요 - Amazon Elastic Container Service

Amazon ECS 개발자 도구 개요

Amazon ECS는 대기업이나 스타트업 모두에게 전문성 수준과 관계없이 컨테이너를 빠르게 사용할 수 있는 데 도움이 되는 다양한 도구를 제공합니다. 다음과 같은 방법으로 Amazon ECS에서 작업할 수 있습니다.

  • AWS Management Console을 사용해서 컨테이너 애플리케이션과 서비스를 개발, 관리, 시각화 하는 방법에 대해 알아보세요.

  • AWS Command Line Interface, AWS SDK 또는 ECS API를 사용하여 프로그래밍이나 스크립트를 통해 자동 배포로 Amazon ECS 리소스에 특정 태스크를 수행합니다.

  • AWS CloudFormation를 사용한 자동 배포로 환경 내 모든 AWS 리소스를 정의하고 관리합니다.

  • 완전한 AWS Copilot CLI 전체 개발자 워크플로로 인프라의 AWS 모범 사례를 준수하는 컨테이너 애플리케이션을 생성, 릴리스 및 운영할 수 있습니다.

  • 원하는 프로그래밍 언어를 사용하여 AWS CDK로 인프라 또는 아키텍처를 코드로 정의합니다.

  • 컨테이너를 위한 AWS App2Container 통합 이동성과 툴링 에코시스템을 사용하여 온프레미스 또는 Amazon EC2 인스턴스에 호스팅되는 애플리케이션을 컨테이너화합니다.

  • Amazon ECS CLI에서 Docker Compose 파일 형식을 사용하여 Amazon ECS에 애플리케이션을 배포하거나 Amazon ECS에서 실행되는 컨테이너로 로컬 컨테이너를 테스트합니다.

  • Docker Desktop의 Amazon ECS를 사용하여 Docker Desktop과 Amazon ECS 통합에서 컨테이너를 시작합니다.

AWS Management Console

AWS Management Console은 Amazon ECS 리소스를 관리하기 위한 브라우저 기반 인터페이스입니다. 콘솔은 서비스에 대한 시각적 개요를 제공하여 추가적인 도구 없이도 Amazon ECS의 기능을 쉽게 탐색할 수 있습니다.ls. 콘솔 사용 방법을 안내하는 여러 가지 관련 자습서와 시연이 준비되어 있습니다.

콘솔 사용법을 안내하는 자습서는 Amazon ECS 리소스 생성 및 사용 방법 알아보기 섹션을 참조하세요.

많은 고객이 처음 시작할 때는 콘솔을 사용하는 것을 선호합니다. 작업이 성공하는지 시각적 피드백을 통해 즉시 확인할 수 있기 때문입니다. AWS Management Console에 친숙한 AWS 고객은 로드 밸런서, Amazon EC2 인스턴스와 같은 관련 리소스를 손쉽게 관리할 수 있습니다.

AWS Management Console로 시작하세요.

AWS Command Line Interface

AWS Command Line Interface(AWS CLI)는 AWS 서비스를 관리하는 데 사용하는 통합 도구입니다. 이 도구 하나만으로 여러 AWS 서비스를 제어하고 스크립트를 통해 서비스를 자동화할 수 있습니다. AWS CLI의 Amazon ECS 명령은 Amazon ECS API를 그대로 반영합니다.

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

AWS CLI는 명령줄 도구로 스크립트를 작성하고 연결하는 것을 선호하고 이에 익숙하면서도 Amazon ECS 리소스에서 어떤 태스크를 할지 명확히 알고 있는 고객에게 적합합니다. AWS CLI는 Amazon ECS API에 익숙해지고자 하는 고객에게도 유용합니다. 고객은 AWS CLI를 사용하여 명령줄 인터페이스에서 직접 생성, 읽기, 업데이트, 삭제 등을 비롯한 여러 가지 Amazon ECS 리소스 태스크를 수행할 수 있습니다.

Amazon ECS API와 해당 CLI 명령에 익숙하거나 익숙해지고 싶고, 자동 스크립트를 작성해 Amazon ECS 리소스에 특정한 태스크를 수행하고 싶다면 AWS CLI를 사용하세요.

AWS CloudFormation

Amazon ECS용 AWS CloudFormationTerraform은 코드형 인프라를 정의할 수 있는 효과적인 방법을 제공합니다. 언제든 어떤 버전의 템플릿이나 AWS CloudFormation 스택이 실행되는지 손쉽게 추적하고, 필요하다면 이전 버전으로 롤백할 수 있습니다. 동일한 자동화 방식으로 인프라와 애플리케이션을 배포할 수도 있습니다. 이런 유연성과 자동화 덕분에 AWS CloudFormation 및 Terraform은 지속적 전달 파이프라인에서 Amazon ECS 워크로드를 배포하는 데 일반적으로 사용하는 형식이 되었습니다.

에 대한 자세한 내용은 AWS CloudFormation 섹션을 참조하세요.AWS CloudFormation을 사용하여 Amazon ECS 리소스 생성.

Amazon ECS에서 인프라 배포와 애플리케이션을 자동화하고 싶고 환경 내에서 모든 AWS 리소스를 명시적으로 정의해 관리하고 싶다면 AWS CloudFormation 또는 Terraform을 사용하세요.

AWS Copilot CLI

AWS Copilot CLI(명령줄 인터페이스)는 고객이 소스 코드에서 직접 Amazon ECS의 컨테이너와 환경에 패키징된 애플리케이션을 배포하고 실행할 수 있도록 허용하는 종합적인 도구입니다. AWS Copilot을 사용하면 AWS 및 Amazon ECS 요소(예: Application Load Balancer, 퍼블릭 서브넷, 태스크, 서비스, 클러스터)에 대한 이해가 없어도 이런 태스크를 실행할 수 있습니다. AWS Copilot은 사용자를 대신해 특정한 서비스 패턴(예: 부하가 분산된 웹 서비스, 백엔드 서비스)에서 AWS 리소스를 생성하고 컨테이너화된 애플리케이션을 위한 즉각적 프로덕션 환경을 제공합니다. 여러 환경, 계정 또는 리전에서 AWS CodePipeline 파이프라인을 통해 배포할 수도 있으며, 이 모든 것은 CLI 내에서 관리가 가능합니다. AWS Copilot을 사용하면 로그, 서비스 상태 조회 등과 같은 연산자 태스크를 수행할 수도 있습니다. AWS Copilot은 클라우드 리소스를 더욱 손쉽게 관리하여 애플리케이션 개발과 관리에만 집중할 수 있도록 돕는 올인원 도구입니다.

자세한 내용은 AWS Copilot 명령줄 인터페이스를 사용하여 Amazon ECS 리소스 생성 섹션을 참조하세요.

AWS Copilot의 완전하고 전체적인 개발자 워크플로로 인프라의 AWS 모범 사례를 준수하는 컨테이너 애플리케이션을 생성, 릴리스 및 운영할 수 있습니다.

AWS CDK

AWS Cloud Development Kit (AWS CDK)는 오픈 소스 소프트웨어 개발 프레임워크이며, 익숙한 프로그래밍 언어를 사용하여 클라우드 애플리케이션 리소스를 모델링 및 프로비저닝하도록 지원합니다. AWS CDK는 AWS CloudFormation을 통해 안전하고 반복적인 방식으로 리소스를 프로비저닝합니다. 고객들은 CDK를 사용하여 애플리케케이션 구축에 사용했던 것과 동일한 언어로 적은 코드만 작성해서 환경을 생성할 수 있습니다. Amazon ECS는 CDK에서 ecs-patterns라는 모듈을 제공하는데, 이는 공통적인 아키텍처를 생성합니다. 사용 가능한 패턴은 ApplicationLoadBalancedFargateService()입니다. 이 패턴은 AWS Fargate에서 부하가 분산된 Amazon ECS 서비스를 실행하기 위한 클러스터, 태스크 정의, 추가적 리소스를 생성합니다.

자세한 내용은 AWS CDK를 사용하여 Amazon ECS 리소스 생성 섹션을 참조하세요.

원하는 프로그래밍 언어로 코드형 인프라 또는 아키텍처를 정의하고 싶다면 AWS CDK를 사용하세요. 예를 들어 애플리케이션을 작성하는 데 사용했던 것과 동일한 언어를 사용할 수 있습니다.

AWS App2Container

때로 엔터프라이즈 고객들은 온프레미스나 EC2 인스턴스, 혹은 그 두 가지에서 모두 호스팅하는 애플리케이션이 있을 수도 있습니다. 이들은 Amazon ECS 컨테이너로 구성된 이동성 및 툴링 에코시스템에 관심이 있고, 우선 컨테이너화가 필요합니다. AWS App2Container를 사용하면 이 작업을 수행할 수 있습니다. App2Container(A2C)는 .NET과 Java 애플리케이션을 컨테이너화된 애플리케이션으로 현대화하는 명령줄 도구입니다. A2C는 가상 머신, 온프레미스 또는 클라우드에서 실행되는 모든 애플리케이션의 인벤토리를 분석하고 구축합니다. 컨테이너화하려는 애플리케이션을 선택하고 나면 A2C가 애플리케이션 아티팩트와 식별된 종속성을 컨테이너 이미지로 패키징합니다. 그리고 네트워크 포트를 구성하고 Amazon ECS 태스크를 생성합니다. 마지막으로 필요에 따라 배포하거나 수정할 수 있는 CloudFormation 템플릿을 생성합니다.

자세한 내용은 AWS App2Container 시작하기를 참조하세요.

온프레미스나 Amazon EC2 인스턴스, 또는 그 두 가지에서 모두 호스팅되는 애플리케이션이 있으면 Use App2Container를 사용하세요.

Amazon ECS CLI

Amazon ECS CLI를 사용하면 Docker Compose 파일 형식을 사용하여 Amazon ECS와 AWS Fargate에서 애플리케이션을 실행할 수 있습니다. 리소스를 빠르게 프로비저닝하고, Amazon ECR을 사용해서 이미지를 풀, 푸시하고, Amazon ECS 또는 AWS Fargate에서 실행되는 애플리케이션을 모니터링할 수 있습니다. CLI 내에서 클라우드의 컨테이너, 로컬에서 실행되는 컨테이너도 테스트할 수 있습니다.

자세한 내용은 Amazon ECS 명령줄 인터페이스 시작하기 섹션을 참조하세요.

Compose 애플리케이션이 있고 Amazon ECS에 배포하고 싶거나, 클라우드의 Amazon ECS에서 실행되는 컨테이너로 로컬 컨테이너를 테스트하고 싶을 경우 ECS CLI를 사용하세요.

Docker Desktop과 Amazon ECS 통합

AWS와 Docker가 협력하여 Docker 도구를 사용해 Amazon ECS에 직접 컨테이너를 배포하고 관리할 수 있는 단순화된 개발자 환경을 만들었습니다. 이제 Docker Desktop 및 Docker Compose를 사용하여 컨테이너를 로컬로 구축하고 테스트한 다음 Fargate의 Amazon ECS에 배포할 수 있습니다. Amazon ECS와 Docker의 통합을 시작하려면 Docker Desktop을 다운로드하고 필요에 따라 Docker ID에 가입합니다. 자세한 내용은 Docker DesktopDocker ID 가입을 참조하세요.

컨테이너를 처음 접하는 사람은 대개 Docker 도구(예: Docker CLI, Docker Compose)를 사용하여 컨테이너에 대해 배우기 시작합니다. 그래서 로컬에서 테스트가 끝나면 AWS에서 컨테이너를 실행할 때 자연스럽게 Amazon ECS용 Docker Compose CLI 플러그인을 사용하게 됩니다. Docker는 Amazon ECS에 컨테이너를 배포하는 방법을 단계별로 제공합니다. 자세한 내용은 Docker Compose CLI - Amazon ECS를 참조하세요.

추가적인 Amazon ECS 기능을 사용할 수도 있습니다. 예를 들어, 서비스 검색, 로드 밸런싱, Docker Desktop으로 애플리케이션에 사용할 다른 AWS 리소스 등이 있습니다.

GitHub에서 Amazon ECS용 Docker Compose CLI 플러그인을 다운로드할 수도 있습니다. 자세한 내용은 GitHub의 Amazon ECS용 Docker Compose CLI 플러그인을 참조하세요.

AWS SDK

또한, AWS SDK를 사용하여 다양한 프로그래밍 언어로 Amazon ECS 리소스와 태스크를 관리할 수 있습니다. SDK는 다음 목록에 있는 태스크를 비롯하여 태스크를 관리할 수 있는 모듈을 제공합니다.

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

  • 요청 재시도

  • 오류 응답 처리

사용 가능한 SDK에 대한 자세한 내용은 Amazon Web Services용 도구 섹션을 참조하세요.

요약

다양한 옵션이 있으므로 자신에게 가장 적절한 옵션을 선택하면 됩니다. 다음의 옵션을 고려해보세요.

  • 시각적인 방식을 선호할 경우, AWS Management Console을 사용하여 시각적으로 컨테이너를 생성하고 운영할 수 있습니다.

  • CLI를 선호한다면 AWS Copilot이나 AWS CLI를 사용해보세요. 또는 Docker 에코시스템을 선호한다면 Docker CLI에 있는 ECS 기능을 사용하여 AWS에 배포할 수 있습니다. 이런 리소스를 배포하고 나면 CLI를 사용하거나 콘솔에서 시각적으로 이들을 계속 관리할 수 있습니다.

  • 개발자라면 AWS CDK를 사용하여 애플리케이션과 동일한 언어로 인프라를 정의할 수 있습니다. CDK와 AWS Copilot을 사용하여 CloudFormation 템플릿을 내보낼 수 있습니다. 여기에서 세부적인 설정을 변경하고, 다른 AWS 리소스를 추가하고, 스크립트 작성 또는 CI/CD 파이프라인(예: AWS CodePipeline)을 통해 배포를 자동화할 수 있습니다.

AWS CLI, SDK 또는 ECS API는 ECS 리소스에 대한 태스크를 자동화하는 데 유용한 도구이므로 배포에 이상적입니다. AWS CloudFormation을 사용하여 애플리케이션을 배포하려면 다양한 프로그래밍 언어나 간단한 텍스트 파일을 사용하여 애플리케이션에 필요한 모든 리소스를 모델링하고 프로비저닝할 수 있습니다. 그런 다음에는 자동화되고 안전한 방법으로 여러 리전과 계정에 애플리케이션을 배포할 수 있습니다. 예를 들어 ECS 클러스터, 서비스, 태스크 정의 또는 용량 공급자를 파일의 코드 형식으로 정의하고 AWS CLI CloudFormation 명령을 사용하여 배포할 수 있습니다.

운영 태스크를 수행하기 위해 AWS CLI, SDK 또는 ECS API를 사용하여 리소스를 프로그래밍 방식으로 확인하고 관리할 수 있습니다. describe-taskslist-services와 같은 명령은 최신 메타데이터 또는 모든 리소스 목록을 표시합니다. 고객은 배포할 때와 마찬가지로 update-service 등의 명령을 포함하는 자동화를 작성하고, 갑작스럽게 중단된 리소스를 탐지하는 즉시 시정 조치를 제공할 수 있습니다. 또한 AWS Copilot을 사용해서 서비스를 운영할 수도 있습니다. copilot svc logscopilot app show와 같은 명령은 각 마이크로서비스 또는 애플리케이션 전체에 대한 세부 정보를 제공합니다.

고객은 이 문서에서 언급된 사용 가능한 툴링 중 무엇이든 선택해서 다양한 조합으로 사용할 수 있습니다. ECS 툴링은 요구 사항 변화에 따라 특정 도구에서 알맞은 다른 도구로 옮겨갈 수 있는 다양한 경로를 제공합니다. 예를 들어 필요에 따라 리소스에 대한 세부적인 제어나 자동화 중에서 선택할 수 있습니다. 또한 ECS는 다양한 요구 사항과 전문성 수준에 맞는 여러 가지 도구를 제공합니다.