Amazon ECS에서 사용자 지정 AMI를 생성하고 사용하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 4월 15일

Amazon Elastic Container Service(Amazon ECS) 클러스터에서 CentOS, SUSE Enterprise Server 또는 RHEL 기반 사용자 지정 Amazon Machine Image(AMI)를 설정하고 사용하고 싶습니다.

간략한 설명

Amazon ECS에서 사용할 사용자 지정 AMI를 생성하려면 다음을 수행합니다.

  1. AMI를 생성합니다.
  2. 운영 체제에 Docker를 설치합니다.
  3. ecs-init 패키지를 설치합니다.
  4. ECS 서비스를 활성화하고 ECS 컨테이너 에이전트가 활성 상태인지 확인합니다.
  5. 나중에 사용할 수 있도록 이미지를 정리합니다.
  6. 새 Amazon Elastic Compute Cloud(Amazon EC2) 이미지를 생성합니다.
  7. Amazon ECS Linux 컨테이너 인스턴스를 시작하고 인스턴스를 실행할 때 필요한 UserData를 추가하여 ecs.config 파일을 구성합니다.

해결 방법

AMI 생성

AMI 생성에는 세 가지 옵션이 있습니다.

Docker 설치

운영 체제 및 시스템 아키텍처에 맞게 Docker를 설치하려면 Docker 엔진 설치를 참조하세요.

ecs-int 패키지 설치

1.    다음 명령 중 하나를 실행하여 CentOS, SUSE Enterprise Server 또는 RHEL용 Amazon ecs-int 패키지를 다운로드합니다.

참고: 리전을 인스턴스를 시작한 AWS 리전으로 바꿉니다.

x86_64 CentOS 7/8, SUSE Enterprise Server 15 또는 RHEL 7의 경우:

$ curl -o amazon-ecs-init.rpm https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.x86_64.rpm

aarch64 CentOS스 7/8 또는 RHEL 7의 경우:

$ curl -o amazon-ecs-init.rpm https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.aarch64.rpm

2.    다음 명령 중 하나를 실행하여 인스턴스용으로 다운로드한 rpm 패키지를 설치합니다.

CentOS 7/8RHEL 7rpm 패키지의 경우:

$ sudo yum install -y ./amazon-ecs-init.rpm

SUSE Enterprise Server 15rpm 패키지의 경우:

$ sudo zypper install -y --allow-unsigned-rpm ./amazon-ecs-init.rpm

ECS 서비스를 활성화하고 ECS 컨테이너 에이전트가 활성 상태인지 확인

1.    ECS 서비스를 활성화하려면 다음 명령을 실행합니다.

$ sudo systemctl enable --now ecs

2.    다음 명령을 실행하여 ECS 서비스가 활성화되고 ECS 컨테이너 에이전트가 활성 상태인지 확인합니다.

$ sudo systemctl status ecs

$ sudo docker ps

출력은 다음과 유사합니다.

ecs.service - Amazon Elastic Container Service - container agent
     Loaded: loaded (/lib/systemd/system/ecs.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-02-22 08:39:02 UTC; 11min ago
CONTAINER ID   IMAGE                            COMMAND    CREATED         STATUS                   PORTS     NAMES
108cfb8a10d2   amazon/amazon-ecs-agent:latest   "/agent"   9 minutes ago   Up 9 minutes (healthy)             ecs-agent

이미지 정리

1.    나중에 사용할 수 있도록 이미지를 정리하려면 다음 명령을 실행하여 ecs-init 패키지 및 Docker 프로세스를 중지합니다.

$ sudo systemctl stop ecs
$ sudo systemctl stop docker

2.    이미지를 저장할 때 보존되지 않도록 현재 인스턴스에서 모든 로그 파일을 제거합니다. EC2 Image Builder용 보안 모범 사례의 예시 스크립트를 사용하여 인스턴스에서 다양한 파일을 정리합니다.

3.    ECS 특정 데이터를 정리하려면 다음 명령을 실행합니다.

$ sudo rm -rf /var/log/ecs/*
$ sudo rm /var/lib/ecs/data/agent.db

새 Amazon EC2 이미지 생성

다음 명령을 실행하여 이전 단계에서 구성한 이미지를 사용하여 새 이미지를 생성합니다.

$ aws ec2 create-image --description "My ECS Image" --instance-id 
i-012345678910 --name Custom-ECS-Image --reboot

출력은 다음과 유사합니다.

{
    "ImageId": "ami-01234567890101"
}

인스턴스 시작

인스턴스를 시작하려면 Amazon ECS Linux 컨테이너 인스턴스 시작 단원을 참조하세요.

그런 다음 새 AMI를 사용하여, 다음 명령을 실행해ecs.config 파일에 쓰는 명령이 UserData에 포함되어 있는지 확인합니다. 참고: your_cluster_name을 클러스터 이름으로 바꿉니다.

#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config

이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?