본문 바로가기

개발

AWS CLI로 클라우드 조작을 빠르고 간편하게

반응형

1. AWS CLI란 무엇인가요? - 개념 이해

AWS CLI(Command Line Interface)는 AWS 서비스를 관리하고 제어하기 위한 통합 도구입니다. 복잡한 AWS 관리 콘솔(웹 UI)에 접속할 필요 없이, 컴퓨터의 터미널(명령 프롬프트)에서 텍스트 명령어를 입력하여 AWS의 모든 서비스를 관리할 수 있게 해줍니다.

AWS CLI를 사용하는 것은 마치 복잡한 항공기 조종석 대신, 조종에 필요한 핵심 버튼만 모아놓은 만능 리모컨을 사용하는 것과 같습니다. 이 도구는 특히 스크립팅과 자동화에 최적화되어 있어, 반복적인 작업을 효율적으로 처리하고 DevOps 환경을 구축하는 데 필수적인 역할을 합니다.


2. AWS CLI 설치와 설정 - 시작하기

AWS CLI를 사용하기 위한 첫 번째 단계는 설치와 설정입니다.

2.1. 설치

운영체제에 따라 설치 방법이 다릅니다.

  • macOS / Linux: 파이썬의 패키지 관리자인 pip를 사용하거나, curl 명령어를 통해 설치할 수 있습니다. pip install awscli 또는 sudo apt-get install awscli (Ubuntu)
  • Windows: AWS 공식 웹사이트에서 제공하는 설치 파일을 다운로드하여 설치할 수 있습니다.

설치가 완료되면 터미널에서 aws --version 명령어를 입력하여 정상적으로 설치되었는지 확인할 수 있습니다.

2.2. 설정

AWS CLI를 사용하려면 AWS 계정에 대한 접근 권한을 설정해야 합니다. aws configure 명령어를 입력하고 아래의 정보를 입력합니다.

  • AWS Access Key ID: IAM(Identity and Access Management)에서 생성한 고유 식별자입니다.
  • AWS Secret Access Key: Access Key ID와 쌍을 이루는 비밀 키입니다. 매우 중요하므로 안전하게 보관해야 합니다.
  • Default region name: AWS 리소스가 생성될 기본 리전(예: ap-northeast-2 for Seoul)을 지정합니다.
  • Default output format: 명령어 실행 결과의 출력 형식을 지정합니다. 주로 json, text, table을 사용합니다.

이 설정 과정은 AWS가 어떤 계정의 권한으로 어떤 리전의 리소스를 제어할지 알려주는 역할을 합니다.


3. 알아두면 유용한 AWS CLI 기본 명령어

AWS CLI의 명령어 구조는 aws <서비스> <명령어> [옵션] 형식으로 되어 있습니다. 몇 가지 자주 사용하는 명령어를 통해 AWS CLI의 활용 방법을 알아보겠습니다.

3.1. S3(Simple Storage Service)

  • 버킷 목록 보기: aws s3 ls
    • AWS 계정 내의 모든 S3 버킷 목록을 보여줍니다.
  • 파일 복사: aws s3 cp ./file.txt s3://my-unique-bucket-name/folder/
    • 로컬에 있는 file.txt 파일을 지정된 S3 버킷의 폴더로 업로드합니다.
  • 버킷 내 파일 동기화: aws s3 sync ./my-local-folder/ s3://my-unique-bucket-name/
    • 로컬 폴더의 내용을 S3 버킷과 동기화합니다. 백업 작업에 매우 유용합니다.

3.2. EC2(Elastic Compute Cloud)

  • 인스턴스 목록 보기: aws ec2 describe-instances
    • AWS 계정 내의 모든 EC2 인스턴스에 대한 상세 정보를 출력합니다. --query 옵션을 사용하면 원하는 정보만 필터링할 수 있습니다. (예: aws ec2 describe-instances --query "Reservations[*].Instances[*].[InstanceId, State.Name]" --output table)
  • 인스턴스 중지: aws ec2 stop-instances --instance-ids i-1234567890abcdef0
    • 특정 ID를 가진 EC2 인스턴스를 중지합니다.
  • 인스턴스 시작: aws ec2 start-instances --instance-ids i-1234567890abcdef0
    • 특정 ID를 가진 EC2 인스턴스를 시작합니다.

3.3. IAM(Identity and Access Management)

  • 사용자 목록 보기: aws iam list-users
    • AWS 계정 내의 IAM 사용자 목록을 보여줍니다.
  • 사용자 생성: aws iam create-user --user-name Alice
    • Alice라는 이름의 IAM 사용자를 생성합니다.

3.4. CloudWatch

  • 알람 목록 보기: aws cloudwatch describe-alarms
    • 설정된 CloudWatch 알람 목록을 보여줍니다.

4. AWS CLI를 활용한 실무 예시

AWS CLI의 진정한 힘은 스크립팅에 있습니다. 단순 반복 작업을 자동화하는 예시를 살펴보겠습니다.

시나리오: 주말 동안 운영 환경이 아닌 개발 환경의 모든 인스턴스를 중지하기

DevOps 엔지니어는 매주 금요일 퇴근 전에 개발 환경의 불필요한 인스턴스를 중지하여 비용을 절감하고자 합니다. 태그에 Environment: Dev가 있는 인스턴스만 중지하는 스크립트를 작성하면 이 작업을 자동화할 수 있습니다.

 

#!/bin/bash

# 태그가 Environment:Dev인 모든 인스턴스 ID를 가져옵니다.
instance_ids=$(aws ec2 describe-instances \
    --filters "Name=instance-state-name,Values=running" \
              "Name=tag:Environment,Values=Dev" \
    --query "Reservations[*].Instances[*].InstanceId" \
    --output text)

# 인스턴스 ID가 비어있지 않으면 중지 명령을 실행합니다.
if [ -n "$instance_ids" ]; then
    echo "Stopping instances: $instance_ids"
    aws ec2 stop-instances --instance-ids $instance_ids
else
    echo "No running instances with 'Environment:Dev' tag found."
fi

위 스크립트는 describe-instances 명령어를 통해 필터링된 인스턴스 ID를 가져오고, 그 ID를 stop-instances 명령어에 전달하여 인스턴스를 중지합니다. 이 스크립트를 주기적으로 실행하도록 설정하면, 매주 수동으로 인스턴스를 관리할 필요가 없어집니다.


5. 결론: AWS CLI는 클라우드 관리의 필수 도구

AWS CLI는 단순히 명령어를 입력하는 도구를 넘어, 클라우드 리소스를 효율적으로 관리하고 자동화하는 데 없어서는 안 될 핵심 도구입니다. 웹 콘솔만으로는 불가능한 대량 작업이나 반복적인 작업을 스크립트로 구현하여 시간과 노력을 크게 절약할 수 있습니다. AWS를 깊이 있게 다루고자 한다면, AWS CLI는 반드시 익혀야 할 첫 번째 관문입니다.

반응형