1 Amazon ECS Task Definitions
- Amazon ECS Task Definitions은 컨테이너 애플리케이션의 구성을 정의하는 JSON 형식의 파일입니다.
- 각 태스크 정의에는 컨테이너 정의, 볼륨, 네트워크 모드, IAM 역할 등의 설정이 포함됩니다.
- ECS에서의 작업 정의(Task Definition)는 단순히 컨테이너가 어떻게 실행되어야 하는지를 설명하는 청사진(설계도) 역할을 합니다.
- 작업 정의 자체는 컨테이너를 실행하지 않으며, 실제 컨테이너 실행을 위해서는 작업 정의를 기반으로 작업(Task) 또는 서비스(Service)를 생성해야 합니다.
2 주요 구성 요소
2.1 컨테이너 정의(Container Definitions)
- 이미지: 컨테이너에서 사용할 Docker 이미지의 이름과 태그를 지정합니다.
- 메모리 및 CPU: 컨테이너에 할당할 메모리와 CPU 리소스를 정의합니다.
- 환경 변수: 컨테이너 내에서 사용할 환경 변수를 설정할 수 있습니다.
- 포트 매핑: 컨테이너의 내부 포트를 호스트 포트와 매핑하여 외부에서 접근할 수 있도록 합니다.
- 로깅 설정: Amazon CloudWatch Logs와 같은 로깅 서비스에 컨테이너의 로그를 전송할 수 있도록 구성합니다.
- 태스크 정의(Task Definition)에서 최대 10개의 컨테이너를 정의할 수 있습니다.
3 볼륨(Volumes)
- 호스트 볼륨(Host Volume): 호스트 EC2 인스턴스의 파일 시스템을 컨테이너에 마운트하여 데이터를 공유합니다.
- EFS 볼륨: Amazon Elastic File System을 사용하여 여러 컨테이너에서 파일을 공유할 수 있습니다.
4 네트워크 모드(Network Mode)
- 브리지 모드(Bridge Mode): 기본 네트워크 모드로, 컨테이너와 호스트 간에 네트워크 연결을 설정합니다.
- 호스트 모드(Host Mode): 컨테이너와 호스트가 동일한 네트워크 네임스페이스를 공유합니다.
- awsvpc 모드: 컨테이너에 자체적인 네트워크 인터페이스와 고정 IP를 할당합니다.
5 IAM 역할(IAM Roles)
- 태스크 역할(Task Role)
- 컨테이너가 특정 AWS 서비스에 액세스할 수 있도록 권한을 부여하는 IAM 역할입니다.
- 예를 들어, 컨테이너가 DynamoDB 테이블에 접근해야 한다면, 해당 작업을 수행할 수 있는 권한을 부여하는 역할을 할당합니다.
- 실행 역할(Execution Role)
- ECS 에이전트가 AWS API를 호출할 때 사용하는 IAM 역할입니다.
- 예를 들어, 컨테이너 이미지를 Amazon ECR에서 가져오기 위한 권한을 포함할 수 있습니다.
- 실행 역할은 ECS 태스크를 시작하고 모니터링하는 데 필요한 권한을 제공합니다.
6 Task Definition 생성 방법