본문 바로가기
AWS

AWS EC2 Cloud-init을 통한 서버 재부팅 시 애플리케이션 자동 실행 방법

by devLog by Ronnie's 2023. 9. 8.

서버가 재시작 되는 케이스는 다양하다. 이때 실행하고 있던 애플리케이션이 있다면 다시 실행해주는 작업은 번거롭다. AWS에서 제공하는 cloud-init을 통해 서버 재부팅 시 애플리케이션을 자동 실행하는 방법에 대해 정리한다.

 

AWS EC2 Cloud-init을 통한 서버 재부팅 시 애플리케이션 자동 실행 방법

 

AWS EC2 Cloud-init을 통한 서버 재부팅 시 애플리케이션 자동 실행 방법

 

 

Cloud-init 설치 확인 또는 설치


먼저 Cloud-init을 설치가 되어 있는지 아래 명령어를 통해 확인한다.

 

apt-cache search cloud-init (ubuntu)

yum list installed cloud-init (CentOS)

 

설치가 안되어 있다면 아래 명령어를 통해 설치해주자.

 

apt-get install -y cloud-init

 

 

EC2 인스턴스 설정


이후 AWS에 접속하여 설정하고자 하는 EC2 인스턴스를 중지 시켜준다. (시간이 다소 걸릴 수 있다.)

 

이후 해당 인스턴스의 우클릭을 하여 인스턴스 설정 -> 사용자 데이터 편집에 들어가준다.

 

그럼 다음과 같이 아직 중지가 안됐다면 아래와 같은 화면이 나올 것 이다.

 

수정이 가능하면 다음과 같이 데이터를 입력할 수 있는 창이 나오게 된다.

 

사용자 데이터를 텍스트로 수정 항목에 다음과 같이 입력해주고 저장을 누른다.

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [scripts-user, always]

--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/bash
/bin/echo "Hello World" >> /tmp/test.txt
—//

 

이후 중지한 인스턴스를 시작해준다.

 

 

동작 확인


재시작 후 /tmp 경로에 test.txt 파일이 생기고 파일에 들어가보면 Hello World가 찍혀 있는 것을 확인할 수 있다.

 

정상 동작을 하는지 확인하기 위해 SSH 로 ec2에 접속하여 /var/log 경로로 이동해준다.

 

해당 경로에서 cloud-init-output.log 파일을 확인해보면 재시작 시 어떤 동작이 일어났는지 확인이 가능하다.

 

 

sh 파일 실행하기


먼저 실행할 sh 파일을 만들어 둔다. 예를 들어 /home/ubuntu 경로에 start.sh을 만들어두었다하자.

 

그럼 다시 AWS에 접속하여 사용자 데이터를 수정해주면 된다.

 

기존
#!/bin/bash
/bin/echo "Hello World" >> /tmp/test.txt
—//

쉘파일 실행으로 변경 (경로는 상황에 맞게 수정)
#!/bin/bash
$(/home/ubuntu/startup.sh)
--//

 

변경 이후 재시작을 하고 정상적으로 sh파일이 실행되었는지 확인한다.

 

만약 정상적으로 실행이 되지 않았다면 cloud-init-output.log 파일을 들어가서 확인을 할수 있다.

 

 

 

참고 문서


https://repost.aws/ko/knowledge-center/execute-user-data-ec2

 

EC2 인스턴스를 처음 시작한 후 사용자 데이터 실행

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 다시 시작할 때마다 사용자 데이터를 사용하여 스크립트를 실행하려고 합니다. 어떻게 해야 하나요?

repost.aws

 

댓글