본문 바로가기

Compute/EC2

AWS EC2 User data script sample(node.js)

AWS EC2의 User data에서 yarn install/run 명령어 수행이 되지 않음..

 

 초기 EC2 생성 시의 User data 아래와 같이 구성하면 되고

 

시작 시 Linux 인스턴스에서 명령 실행 - Amazon Elastic Compute Cloud

시작 시 Linux 인스턴스에서 명령 실행 Amazon EC2에서 인스턴스를 시작할 때 사용자 데이터를 인스턴스에 전달하여 일반적인 구성 작업을 자동으로 수행하는 데 사용하도록 할 수 있고, 인스턴스가 시작된 후에 스크립트를 실행할 수도 있습니다. Amazon EC2에 shell 스크립트 및 cloud-init 명령이라는 두 가지 유형의 사용자 데이터를 전달할 수 있습니다. 시작 마법사에 이 데이터를 일반 텍스트, 파일(명령줄 도구를 사용하여 인스턴스를

docs.aws.amazon.com

 

#!/bin/bash
yum update -y
amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2
yum install -y httpd mariadb-server
systemctl start httpd
systemctl enable httpd
usermod -a -G apache ec2-user
chown -R ec2-user:apache /var/www
chmod 2775 /var/www
find /var/www -type d -exec chmod 2775 {} \;
find /var/www -type f -exec chmod 0664 {} \;
echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

 

이미 생성된 EC2의 User data를 수정하기 위해서는 Instance Settings -> View/Change User Data에서 가능하다.

그러나 쉘 스크립트가 실행되지 않음... 

 

이 경우에는 InstanceHooks(#cloud-boothook / 주석 아님) 기능을 사용하는데 아래 샘플 참고

cloud-boothook을 통해 쉘 스크립트는 실행된다...

 

그러나 node의 npm, yarn 패키지 명령어가 먹히지 않는다. 

아래 도큐먼트를 참고하여 로그 내역을 보면 aws userdata /usr/bin/env: node: no 에러 메시지가 계속 출력....

 

EC2 Linux 사용자 데이터를 로깅한 후 콘솔 로그로 전송

Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스 부트스트랩의 문제를 해결하려고 합니다. 사용자 데이터 호출을 로그한 후 콘솔 로그로 전송하려면 어떻게 해야 합니까? SSH를 통해 인스턴스에 액세스하지 않고도 EC2 인스턴스 부트스트랩의 문제를 해결하려면 모든 출력을 /var/log/user-data.log 및 /dev/console로 리디렉션하는 사용자 데이터 bash 스크립트에 코드를 추가하면 됩니다. 코드가

aws.amazon.com

 

 

#cloud-boothook
#!/usr/bin/env bash
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
 PATH="$PATH:/root/.nvm/versions/node/v10.16.0/bin"
 pm2 delete fxxk
 rm -rf /root/fxxk
 git clone https://github.com/fxxk/fxxk.git /root/fxxk
 cd /root/fxxk/
 yarn install
 yarn run start
 mv /root/.env /root/fxxk/.env

 

환경변수 문제.. 직접 path 명령어를 입력해도 안 된다.. 정의하고 명령어를 실행하면 된다... 이유는 잘모르겠음...

#cloud-boothook
#!/bin/bash
wget -S https://fxxk.com/start.sh
chmod +x /root/start.sh
sh /root/start.sh

아무튼 이제 잘 된다... 삽질하지 말고 참고하시라... 아 나만 삽질한건가?