- 환경변수로 설정
export EC2_ID='{ec2-id}'
- EC2 실행
aws ec2 start-instances --instance-ids $EC2_ID
- EC2 종료
aws ec2 stop-instances --instance-ids $EC2_ID
- EC2 정보 가져오기
aws ec2 describe-instances --instance-ids $EC2_ID
- EC2의 퍼블릭 IP는 따로 고정을 해놓지 않으면 계속해서 바뀌게 된다.
- 이와 상관없이 콘솔에 들어가지 않고 ec2를 실행 & ssh 접속을 하려면 ec2를 켜고, cli를 통해 ip확인, ssh 접속을 하면 된다.
- 위의 명령어 들을 응용해 스크립트를 작성했다!
실행 스크립트
#!/bin/bash
EC2_INSTANCE_ID=$1
KEY_PATH="pem_key_path"
INSTANCE_STATE=$(aws ec2 describe-instances --instance-ids $EC2_INSTANCE_ID --query "Reservations[0].Instances[0].State.Name" --output text)
if [ "$INSTANCE_STATE" = "stopped" ]; then
echo "EC2 인스턴스 시작 중..."
aws ec2 start-instances --instance-ids $EC2_INSTANCE_ID
echo "인스턴스 시작을 기다리는 중..."
aws ec2 wait instance-running --instance-ids $EC2_INSTANCE_ID
fi
INSTANCE_IP=$(aws ec2 describe-instances --instance-ids $EC2_INSTANCE_ID --query "Reservations[0].Instances[0].PublicIpAddress" --output text)
echo "SSH로 EC2 인스턴스에 연결 중..."
ssh -i $KEY_PATH ec2-user@$INSTANCE_IP
실행
sh ssh_ec2_with_start $EC2_ID