[AWS] EC2 Restart시 특정 shell script 실행하도록 설정


0. INTRO

  • EC2 서버 하나에서 개인적인 프로젝트를 수행하고 있을 때, 웹서버가 계속 서비스되고 있으면 좋겠지만 과금의 우려 때문에 해당 서버를 계속 켜놓기는 부담스러운 경우가 있다. 이런 경우에는 EC2를 잠시 Stop 해놓는 방법이 있지만 다시 start를 하게 되면 웹서버는 내려가있는 상황이고 다시 CLI 명령을 통해 웹서버를 구동시켜주거나 하는 추가 작업이 필요하다.
  • Cloud-init 서비스를 통해서 EC2가 시작될 때 특정 script가 동작되도록 설정할 수 있다. 해당 서비스를 사용하는 기능은 생각보다 가까이서 찾을 수 있는데, 새로운 EC2를 시작할 때 인스턴스 시작과 함께 실행되는 script를 적는 user data 기능이 cloud-init을 이용하고 있다.
  • 간단한 설정을 통해 인스턴스가 이미 생성된 이후에도 restart시 특정 script를 자동으로 시작하도록 설정할 수 있다.

1. 본문

  1. conf 파일 추가
    • 디렉토리 이동 후 .cfg 파일을 생성해준다.(해당 디렉토리 내에 .cfg 형태의 파일이 있다면 자동으로 read)

      cd /etc/cloud/cloud.cfg.d/

    • .cfg 파일 생성 후 아래 내용을 기입하고 저장.
      • cloud-config.cfg

         #cloud-config
         cloud_final_modules:
         - [scripts-user, always]
        
  2. EC2 user-data 명령 수정
    1. EC2 Stop 한다.
    2. EC2 선택 > Action > Instance Setting > Edit User Data
    3. 이전 script가 있다면 삭제 후 restart시 실행될 shell script 작성 후 저장 image

    4. Instance restart 후 script 실행되는지 확인

2. 참고 사이트

  1. How to run bash commands on AWS EC2 instance restart ?

  2. execute-user-data-ec2

Leave a comment