개발 공부 기록하기/03. AWS & Infra

AWS 시작 템플릿 (Launch Template) 옵션 하나하나 살펴보기

lannstark 2020. 10. 21. 09:13

안녕하세요~ 여러분 공부하는~개발자 입니다 ㅎㅎㅎ

오늘은 바로바로 <시작 템플릿>에 대해서 집중적으로 알아보려 합니다.

 

이전 포스팅에서 Auto Scaling 그룹 만들때 필요했었는데 뭔가 이것저것 하다보니 그냥 되었죠 ㅋㅋㅋㅋ 그래서 이번 포스팅에서는 조금 더 디테일하게 까보려고 합니다

AWS 공식 문서와 만들어진 실행그룹을 보며 각 설정이 하나하나 어떤 뜻인지 들이파 보겠습니다.

 

우선 공식문서부터 바로바로 가보시죠~

공식 문서 정리

우선 시작 템플릿이란 EC2 인스턴스 시작에 필요한 구성 정보를 모아둔 template 입니다. 이 시작 템플릿에는 버전이 있는데요 마치 저희가 코드 살짝 바꾸고 버전 올려서 배포하는 것과 비슷하다고 생각하시면 됩니다.

1 버전에서는 t2.small이었던 인스턴스 유형이 2버전에서 t2.medium 바뀔 수도 있는 거지요. 따라서 한 템플릿에는 여러 버전이 존재하고 특정 버전을 default 로 설정해둘 수 있습니다.

특정 시작 템플릿으로부터 인스턴스를 시작할때 별도로 버전을 지정하지 않으면 default 버전이 사용되고요. 요건 코드랑 좀 다르네요. 보통 코드는 가장 최신버전이 자동으로 배포되니까요

또한 시작 템플릿의 버전은 생성한 순서대로 번호가 자동 지정된다고 합니다.

한 AWS 계정을 사용하는 여러 유저들에게 시작 템플릿과 관련된 여러 정책 바리에이션을 적용할 수 있습니다.

  • ec2:RunInstance 작업에 대한 리소스 수준 권한을 사용하여 사용자가 지정할 수 있는 시작 파라미터를 제어할 수 있습니다
  • 사용자에게 시작 템플릿을 사용하여 인스턴스를 시작할 권한을 부여할 수 있습니다.
  • 특정한 시작 템플릿만을 사용하도록 지정할 수도 있으며, 특정 시작 템플릿에서 재정의할 수 있는 시작 파라미터를 제어할 수도 있습니다

네, 그러니까 <시작 템플릿> 기능을 쓰게 해줄지 말지 꽤나 custom하게 설정할 수 있다고 합니다.

시작 템플릿 사용 제어와 관련하여 주의할 점은 ec2:CreateLaunchTemplateec2:CreateLaunchTemplateVersion 작업을 사용할 수 있는 권한을 부여할 때는 신중해야 한다는 점입니다. 리소스 수준 권한을 사용하여 사용자가 시작 템플릿에서 지정할 수 있는 리소스를 제어할 수 없기 때문입니다.

넵 이제 <시작 템플릿>이 무엇인지 진짜 감이 오네요.. EC2 만들때 설정해야 할 많은(?) 설정값들을 미리 모아둔 템플릿입니다. 결국 <시작 템플릿>의 옵션 하나하나를 안다는 것은 EC2의 옵션 하나하나를 아는거네요 ㅋㅋㅋㅋㅋ

넵 어찌되었건 이제 하나하나 까보겠습니다

시작 템플릿 내용

  • AMI : 네, 저희가 아는 바로 그 AMI 입니다. 소유하고 있는 AMI 혹은 AWS Marketplace, community AMI를 사용할 수 있습니다.
  • 인스턴스 유형 : t2.small 같은 것입니다.
  • 키 페어 이름 : ssh로 접속할때 사용되는 pem키 이름입니다.
  • 네트워크 플랫폼 : VPC 또는 EC2-Classic 중 선택
    • VPC는 AWS를 사용하는 다른 고객 (같은 계정의 사용자가 아닌 정말 다른 계정)과 분리된 network를 사용하지만 EC2-Classic은 다른 고객들과 같은 plain network를 사용한다고 합니다
  • 보안그룹 : 네 우리가 잘 아는 sg 입니다 ㅎㅎ (sg 워너비 같네여)

스토리지(볼륨)

  • 볼륨유형 : EBS 볼륨 유형입니다, 범용SSD, 프로비저닝된 IOPS SSD등 익숙하죠..?
  • 디바이스 이름 : 넵 디바이스 이름입니다
  • 스냅샷 : 볼륨이 생성되는 스냅샷의 ID 입니다
  • IOPS : 프로비저닝된 IOPS SSD 볼륨 유형의 경우 해당 볼륨이 지원할 수 있는 초당 입력/출력 작업 수를 지정할 수 있스빈다.
  • 종료시 삭제 : EBS가 연결된 인스턴스가 종료되면 볼륨을 삭제할지 여부를 결정할 수 있습니다
  • 암호화/키 : 인스턴스 유형이 EBS 암호화를 지원하는 경우 활성화 할 수 있으며, 키는 EBS암호화에 사용할 고객 마스터 키(Customer Master Key) 입니다

리소스 태그

  • 키와 값의 조합을 제공하여 태그를 지정할 수 있습니다.

오잉 여기까지는 참 쉽네요..?

네트워크 인터페이스

  • 디바이스 인덱스 : 네트워크 인터페이스의 디바이스 번호입니다. 이 필드를 비워두면 AWS가 기본 네트워크 인터페이스를 생성합니다
  • 네트워크 인터페이스 : 네트워크 인터페이스의 ID입니다. AWS가 새로운 네트워크 인터페이스를 생성하도록 하려면 비워둡니다.
    • (일반 용어) 네트워크 인터페이스는 존재할 수 있는 모든 어댑터에 대한 지속적인 인터페이스를 IP계층에 제공하기 위해 네트워크 고유 장치 드라이버 및 IP 계층과 통신하는 네트워크 고유 SW 입니다
    • (AWS 용어) 네트워크 인터페이스는 VPC에서 가상 네트워크를 나타내는 논리적 네트워킹 구성 요소입니다.
  • 설명 : (선택 사항) 새로운 네트워크 인터페이스의 설명입니다
  • 서브넷 : 새로운 네트워크 인터페이스를 생성할 서브넷입니다. 넵 VPC-subnet의 subnet 맞습니다
  • 자동 할당 퍼블릭 IP : 기본 네트워크 인터페이스에 퍼블릭 IP 주소를 자동으로 할당한 것인지 여부입니다.
  • 기본 IP : 서브넷 범위 중 private IPv4 주소입니다. AWS가 자동으로 private IPv4 주소를 선택하도록 하려면 비워 둡니다.
  • 보조 IP : 서브넷 범위 중 보조 private IPv4 주소입니다. AWS가 자동으로 선택하도록 하려면 비워 둡니다.
  • (IPv6에만 해당) IPv6 IPs : 서브넷 범위 중 IPv6 주소입니다.
  • 보안 그룹 : 네트워크 인터페이스를 연결할 VPC의 하나 이상의 보안그룹 입니다. 앗 여기도 sg가 들어가네요. EC2에 연결된 네트워크 인터페이스에 연결된 보안그룹을 의미합니다.
  • 종료 시 삭제 : 네트워크 인터페이스를 연결할 VPC의 하나 이상의 보안그룹입니다.
  • EFA(Elastic Fabric Adapter) : 네트워크가 EFA인지 아닌지 여부를 나타냅니다.
    • EFA란 EC2에 붙일 수 있는 네트워크 장치인데요, 아주 고성능의 컴퓨팅이 필요하거나 머신러닝 애플리케이션을 가속하기 위해 사용한다고 합니다.

고급 세부 정보

  • 구입 옵션 : 스팟 인스턴스, 온 디맨드 여부를 선택할 수 있습니다
  • IAM profile : 인스턴스에 연결할 IAM 인스턴스 프로파일 입니다.
  • 종료 방식 : shutodnw 혹은 poweroff 명령어 등에 대해서 인스턴스를 중지할지 종료할지 결정할 수 있습니다
  • 중지-최대절전 모드 동작 : 최대 절전 모드를 활성화할지 여부입니다.
    • 최대 절전 모드를 사용하면 디스크가 일시 중단되고 모든 RAM 데이터를 EBS에 저장합니다. 최대 절전 모드 사전 조건이 충족되어야 동작할 수 있습니다.
  • 종료방지 : 실수로 인한 종료를 방지할 것인지 여부입니다.
  • 세부 CloudWatch 모니터링 : CloudWatch를 사용하여 인스턴스에 대한 세부 모니터링 기능을 활성화할지 여부입니다. 추가 요금이 적용될 수 있습니다.
  • 탄력적 인터페이스(Elastic Interface) : EC2 CPU 인스턴스에 연결할 탄력적 추론 엑셀러레이터입니다. ML 할때 사용되나 봅니다 ㅎㅎ
  • T2/T3 무제한 : 애플리케이션이 필요한 시간만큼 기준 이상으로 버스트를 할 수 있는지 여부입니다. T2, T3, T3a 인스턴스에만 유효하며 추가 요금이 적용될 수 있습니다.
  • 배치 그룹 이름 : 인스턴스를 시작할 배치 그룹을 지정합니다
  • EBS 최적화 인스턴스 : Amazon EBS I/O에 대한 추가, 전용 용량을 제공합니다. 모든 인스턴스 유형이 이 기능을 지원하는 것은 아니며 추가 요금이 적용될 수 있습니다.
  • 용량 예약 : 인스턴스를 공유 용량, 임의 open 용량 예약, 특정 용량 또는 용량 예약 그룹으로 시작할지 여부를 지정합니다.
  • 테넌시 : 인스턴스를 공유 하드웨어 (공유), 격리된 전용 하드웨어(전용), 또는 전용 호스트(전용 호스트)에서 실행할지 선택합니다. 전용 호스트에서 인스턴스를 시작하도록 선택하면 인스턴스를 호스트 리소스 그룹에서 시작할지 여부를 지정하거나 특정 전용 호스트를 대상으로 지정할 수 있습니다. 추가 요금이 적용될 수 있습니다.
  • RAM 디스크 ID (PV AMI에만 유효) : 인스턴스의 RAM 디스크입니다.
  • 커널 ID (PV AMI에만 유효) : 인스턴스의 커널입니다
  • 라이선스 구성 : 지정된 라이선스 구성에 대해 인스턴스를 시작하여 라이선스 사용을 추적할 수 있습니다.
  • 엑세스 가능한 메타데이터 : 인스턴스 메타데이터에 대한 엑세스를 활성화할지 비활성화할지 여부입니다.
  • 메타데이터 버전 : 인스턴스 메타데이터에 대한 엑세스를 활성화한 경우 버전을 고를 수 있습니다.
  • 메타데이터 응답 TTL : 인스턴스 메타데이터에 대한 엑세스를 활성화한 경우 메타데이터 토큰에 허용되는 TTL을 설정할 수 있습니다.
  • 사용자 데이터 : 시작 과정에서 인스턴스를 구성하거나 구성 스크립트를 실행할 때 사용할 사용자 데이터를 지정할 수 있습니다. 자세한 내용은 docs에서 확인하실 수 있습니다 ㅎㅎ

TMI (?)

  • region당 5,000개의 시작 템플릿과, 시작 템플릿당 10,000개의 버전으로 생성이 제한된다

오.. 옵션 하나하나를 읽어봤는데 생각보다 어렵지는 않네요..?

대신 EC2 자체 말고 AWS에 대해 전반적으로 알고 있어야 이해가 더 잘 되는 것 같습니다 ㅠㅠ

예를 들어 VPC와 서브넷에 대한 개념을 진작 알고 있다면 아 VPC 서브넷 설정~ 하고 바로 넘어갈 수 있겠죠. 저도 배치 그룹, 메타데이터 등은 처음 봐서 조금 더 찾아봐야 할 것 같습니다 ㅎㅎㅎ

설정된 시작 템플릿 확인

이제 공식 문서에서 읽었던 내용을 바탕으로 설정되어 있는 시작 템플릿 하나를 보며 web 화면에 어떻게 나타나는지 보려고 합니다!

버전

간단하니까 버전 부터 봐보죠~

오호 docs에 나와있던 것처럼 버전이 여러개 있고 default version에 대한 구분 값이 있습니다.

description을 기술할 수도 있고, 생성시간/생성자/AMI ID 등도 나와 있네요! (캡쳐본에서는 지웠습니다)

세부 정보

인스턴스 세부 정보

시작 템플릿의 AMI ID, 인스턴스 유형, 가용 영역, 키 페어 이름, 그리고 보안그룹 관련 정보들이 나옵니다

스토리지

볼륨 유형은 EBS, 범용SSD (gp2)로 설정되어 있고, 디바이스이름, 스냅샤, 크기, 종료시 삭제 여부 등이 설정되어 있네요 ㅎㅎ

한 인스턴스에 여러 볼륨을 넣을 수 있도록 되어 있습니다

리소스 태그

넵, 그 태그 맞습니다 ㅋㅋㅋㅋ

네트워크 인터페이스

네트워크 인터페이스에 대한 설정도 나와 있습니다 (1 : N 이군요) 보통은 VPC 안에 EC2를 두고 별도의 네트워크 인터페이스를 붙여본적은 없어서 언제 쓰이는지 잘 모르겠네요.. 혹시 주로 사용되는 곳을 알고 계신 분은 댓글 부탁드리겠습니다 ㅎㅎㅎ

고급 세부 정보

앜ㅋㅋㅋ 여기 뭔가 많습니다... 다 몰려 있네요

온디맨드를 사용하는 경우 스팟 구매 옵션에 관한 설정들은 비어 있고요~

여기도 대부분의 설정들이 비어 있네요 ㅎㅎ 실제로 WAS 입장에서 사용할만한게 딱히 없어 보이긴 합니다 ㅋㅋㅋㅋ IAM 프로파일이랑 종료방식, 종료방지 여부, CloudWatch 사용여부, EBS 최적화 여부, 그리고 사용자 데이터

딱 요정도인듯 합니다 ㅎㅎㅎㅎ

자 이상으로 시작 템플릿 옵션을 하나하나 알아봤습니다.

시작 템플릿을 처음 만들때는 머릿속에 '와 이거 뭐냐 하나도 모르겠다' 느낌이었는데, 막상 옵션을 하나씩 놓고 보니 대략적으로 느낌이 다 오네요 ㅋㅋㅋㅋㅋㅋ

감사합니다 😉