AWS CLI EC2 인스턴스 실행 및 SSH 접속

realBro·2023년 11월 21일
0
  • 환경변수로 설정
    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 인스턴스 ID를 받습니다.
EC2_INSTANCE_ID=$1
KEY_PATH="pem_key_path"

# EC2 인스턴스의 현재 상태를 확인합니다.
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

# 인스턴스의 공개 IP 주소를 가져옵니다.
INSTANCE_IP=$(aws ec2 describe-instances --instance-ids $EC2_INSTANCE_ID --query "Reservations[0].Instances[0].PublicIpAddress" --output text)

# SSH로 EC2 인스턴스에 연결합니다.
echo "SSH로 EC2 인스턴스에 연결 중..."
ssh -i $KEY_PATH ec2-user@$INSTANCE_IP

실행

sh ssh_ec2_with_start $EC2_ID

0개의 댓글