AWS 관리형 인스턴스 (Managed Instance)는 문자 그대로 AWS를 통해서 관리하는 인스턴스를 의미합니다. 본래 EC2는 AWS에서 인프라만 제공하고 그 외의 모든 관리와 책임은 고객이 가져가는 IaaS에 속합니다. 그런데, AWS Systems Manager 라는 서비스를 이용하게 되면, EC2에 대한 일부 권한을 AWS에 위임하여 조금 더 편리하게 EC2를 관리할 수 있습니다.

관리형 인스턴스 목록에 EC2가 포함되면 크게 3가지 작업을 할 수 있습니다.

  • 세션 매니저 (Session Manager) – IAM에 기반한 SSH 연결
  • 런 커맨드 (Run Command) – 사전 정의된 작업이나 명령의 벌크 작업
  • 패치 매니저 (Patch Manager) – 패치 상태 점검 및 자동 업데이트

특히, 하이브리드 활성화 기능을 사용해서 온프레미스의 VM들도 등록하고 기능을 사용할 수 있다는 것은 큰 장점입니다. 관리가 투명해지고 벌크 작업을 손쉽게 할 수 있지만, 그만큼 권한 제어도 신경을 써야 하겠지요.

관리형 인스턴스와 관련 항목들.

각각의 기능이 어떻게 동작하는지 살펴보도록 하겠습니다.

세션 매니저 (Session Manager)

지난 글 중 하나에서 세션 매니저를 이용하여 EC2에 별도의 키 없이 IAM 인증을 통해서 SSH 연결하는 방법에 대한 글을 작성한 적이 있습니다. 세션 매니저에 대한 내용은 이 글을 살펴보시면 됩니다.

런 커맨드 (Run Command)

런 커맨드는 이름에서부터 쉽게 알 수 있듯이, 명령 (Command)을 실행하는 것입니다. 이 명령은 사전에 AWS에서 템플릿으로 제공하는 것일 수도 있고, 내가 만든 템플릿일 수도 있습니다. 많은 경우에 AWS에서 제공하는 템플릿을 이용하게 될텐데, 단순 명령을 실행하는 것도 AWS-RunShellScript 템플릿을 이용하면 됩니다.

명령 파라미터에 원하는 명령을 입력합니다.

간단하게 여러 인스턴스에서 현재 사용중인 파티션과 각 파티션별 용량을 보기 위해 다음 명령을 실행해보도록 하겠습니다.

df -ah
Code language: Bash (bash)
런 커맨드의 대상 선택.

그 후에 명령을 실행할 대상을 선택해야 하는데, 3가지 방법이 있습니다.

  • EC2의 태그 키와 값으로 대상 지정
  • 수동으로 EC2를 지정
  • 사전 정의된 리소스 그룹으로 지정

간단하게 수동으로 3대의 인스턴스를 선택하고 진행을 하겠습니다. 이제 명령을 실행한 결과를 어떻게 받을 것인지 결정해야 합니다.

명령 실행 결과의 출력 방법을 지정할 수 있습니다.

기본적으로 출력 옵션은 3가지가 제공됩니다.

  • 기본 – S3나 CloudWatch를 선택하지 않아도 출력 결과를 간략하게 제공해주는 기능입니다. 명령 기록을 통해서 최근 한 달의 기록을 제공합니다.
  • S3 – 출력 결과가 파일로 제공되므로 보다 많은 결과를 저장할 수 있습니다. 기본 로그가 2500자로 제한되기 때문에 대량의 출력이 발생하고 그에 따른 데이터 처리가 필요할 때 유용합니다.
  • CloudWatch – 출력 결과가 로그 형태로 제공됩니다. 각 명령과 각 인스턴스에 대한 로그 스트림이 생성되므로 출력 결과물에 대한 히스토리를 관리할 수 있습니다.

현재 실행하고자 하는 명령이 매우 단순하므로 CloudWatch를 이용해보도록 하겠습니다. 모든 준비가 완료되었으므로 실행 버튼을 눌러서 명령을 실행합니다.

명령 실행의 결과를 바로 확인할 수 있습니다.

CloudWatch에서는 다음과 같이 개별 명령 결과를 확인할 수 있습니다. 인스턴스의 디스크 사용량이 높은 편이므로 용량을 확장해야 할 것 같네요.

출력 결과가 로그로 들어와 있습니다.

여기까지 런 커맨드를 살펴보면서 뭔가 느낌이 확 오지 않으셨나요? AWS에서 제공하는 템플릿 중에는 AWS-ConfigureAWSPackage 라는 것이 있습니다. 이 템플릿은 배포자 메뉴에 등록되어있는 패키지를 설치해주는 템플릿 입니다. 그리고 여기에는 CloudWatch 또는 Code Deploy 등등의 Agent가 등록되어 있습니다!

즉, EC2를 관리형 인스턴스로 등록하셨다면 일일히 접속해서 Agent를 설치할 필요가 없고 벌크로 한 번에 설치하는 것이 가능하다는 뜻입니다! 🤩

패치 매니저 (Patch Manager)

클라우드 인프라를 이용하는 비즈니스 스케일이 커지면 커질 수록 인스턴스의 숫자는 계속 늘어나게 될 것입니다. 그리고 이렇게 수 없이 많은 인스턴스들의 패치 상태를 일일히 점검하는 것도 굉장한 일입니다.

그러나, 우리에게는 런 커맨드가 있습니다. 왜 패치 매니저가 아니고 런 커맨드냐고요? 사실 패치 매니저는 사전 정의된 패치 상태 확인 및 패치 적용에 대한 템플릿이 런 커맨드를 통해서 주기적으로 실행될 뿐입니다. 앞서 설명드린 런 커맨드는 단순히 사용자만을 위한 것이 아니고 AWS에서도 동일한 기능을 이용하여 패치 매니저라는 서비스를 별도로 제공하고 있습니다.

패치 매니저를 이용하기 위해서는 인스턴스에 추가로 정책이 요구됩니다. 기존의 관리형 인스턴스 등록을 위한 정책과 별개로 AmazonSSMPatchAssociation 정책을 추가해야 합니다.

패치 기준을 정해야 합니다.

제일 먼저 해야 할 일은 패치 기준을 잡는 일입니다. 기본적으로 잡혀있는 패치 기준을 그대로 이용하셔도 됩니다. 심각도나 패치 종류를 설정함으로써 원하는 기준의 패치만 적용할 수 있게 설정하실 수 있습니다.

패치 적용은 지금 패치 적용을 눌러 특정 시점에 패치를 적용할 수도 있고, 패치 적용 구성을 설정하여 어느 시점에 패치를 적용할 것인지 결정할 수 있습니다. 보통은 인스턴스의 유지 관리 시간에 수행하게 될 겁니다. 또한 패치 적용은 단순히 적용해야 할 패치들을 스캔하기만 할 수도 있고, 자동으로 패치를 적용하도록 설치까지 포함할 수도 있습니다.

대상 선택은 런 커맨드와 방식이 동일합니다.

심각한 보안 업데이트를 신경쓰지 않고 자동으로 패치를 적용하게끔 구성한다면 보안 이슈에 보다 손쉽게 대응할 수 있을 것입니다.

SSM 에이전트 설치

관리형 인스턴스로 등록하기 위해서는 사전에 SSM 에이전트가 설치되어 있어야 합니다. 아래의 AMI에는 SSM 에이전트가 사전에 설치되어 있으므로 IAM 정책, AmazonSSMManagedInstanceCore만 할당하면 손쉽게 관리형 인스턴스로 등록할 수 있습니다.

  • Windows Server 2008-2012 R2 (2016년 11월 이후에 게시된 AMI)
  • Windows Server 2016 및 2019
  • Amazon Linux
  • Amazon Linux 2
  • Ubuntu Server 16.04, 18.04 및 20.04
  • Amazon ECS 최적화 AMI

그 외의 경우에는 직접 SSM-에이전트를 설치해야 합니다. [참고 문서]


지금까지, AWS의 관리형 인스턴스에 대해서 제공되는 3가지 기능을 살펴보았습니다. 관리형 인스턴스를 사용할 충분한 이유가 되었나요? AWS의 훌륭한 기능을 사용해보시고 그 편리함을 최대한 누리시길 바라며 글을 마칩니다. 😉