EC2의 재부팅 자체는 자동으로 가능하지만, 재부팅 후 특정 프로세스의 실행이 다시 필요한 경우가 있습니다.
EC2를 처음 생성할 때에는 사용자 데이터 스크립트를 작성해 원하는 프로세스를 실행할 수 있지만, 사용자 데이터 스크립트는 재부팅 시에는 실행되지 않습니다.
사용자 데이터는 EC2 생성 시에 설정할 수 있지만, 아래와 같이 생성 뒤에도 수정이 가능합니다.
단, 생성되어 있는 EC2의 사용자 데이터를 편집하려면 인스턴스를 잠시 중지해야 합니다.
그럼 설정을 통해 사용자 데이터 스크립트를 재부팅 시에도 실행될 수 있도록 수정해 보도록 하겠습니다.
위 스크립트를 해석하면 아래와 같습니다.
# Content type이 multipart임을 의미하고, 아래 내용들을 "//"로 구분(boundary)하겠다는 의미입니다.
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--// # 여기까지 multipart 1번
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: # user data를 언제 실행할지 설정하는 부분
- [scripts-user, always] # always로 설정해 재부팅 시에도 실행
--// # 여기까지 multipart 2번
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
# 여기부터는 실행 스크립트 정보입니다.
#!/bin/sh
# 서버 시작 시간을 변수에 저장합니다.
START_TIME=$(date)
# 서버 시작 시간을 출력합니다.
echo "Server started at $START_TIME" >> /home/ubuntu/userdata-test.txt
--//-- # 여기까지 multipart 3번(끝)
먼저 EC2 첫 생성 시 실행되었을 사용자 데이터의 결과를 확인하겠습니다.
다음은 EC2 재부팅 후 사용자 데이터 실행 결과를 확인하겠습니다.
만약 재부팅마다 실행되는 사용자 데이터를 다시 생성 시에만 실행되도록 하고 싶다면,
아래 명령어를 실행해 원래대로 되돌리면 됩니다.
# user-data.txt 초기화
cat /dev/null > /var/lib/cloud/instances/i-*/user-data.txt
# cloud-config.txt 초기화
cat /dev/null > /var/lib/cloud/instances/i-*/cloud-config.txt
# config_scripts_user.once 삭제
rm -rf /var/lib/cloud/sem/config_scripts_user.once
'AWS' 카테고리의 다른 글
EC2 인스턴스 사이즈 변경 방법 (0) | 2024.05.28 |
---|---|
Mountpoint for Amazon S3 자동으로 마운트하기 (0) | 2024.03.07 |
CloudWatch 경보 알림을 사용한 EC2 자동 재부팅 (0) | 2024.01.19 |
AWS Backup을 사용한 EC2 자동 백업 (0) | 2024.01.19 |
EC2 관리하기 : 자동 백업, 자동 재부팅, 자동 재실행 (0) | 2024.01.18 |
댓글