AWS CLI는 CLI Shell 명령어를 사용하여 AWS 서비스를 관리할 수 있는 오픈소스 도구이다.
AWS CLI를 통해 터미널에서 브라우저로 AWS 콘솔에서 작업하는 것과 동일하게 기능을 구현할 수 있다.
또한, AWS CLI를 다루는 것이 능숙해진다면 AWS 서비스의 Public API에 엑세스가 가능하며 리소스를 관리하거나 기능을 구현하는 Shell Script를 작성하여 작업을 자동화할 수 있다.
AWS CLI의 명령 구조는 아래와 같다.
$ aws <command> <subcommand> <옵션이나 파라미터>
CLI에서 도움말 설명서를 보려면 아래의 명령어 중 하나를 입력하면 된다.
각각 AWS CLI, AWS CLI 명령어, AWS CLI 하위 명령어에 대한 도움말 설명서이다.
$ aws help
$ aws <command> help
$ aws <command> <subcommand> help
명령어에 대한 디버깅을 하고 싶으면 명령어를 아래와 같은 형식으로 작성한다.
$ aws --debug <command> <subcommand> <옵션이나 파라미터>
이 장에서는 AWS CLI를 다루기 위해 필요한 IAM 계정 생성에 대한 내용을 다룬다.
IAM 계정과 엑세스 키를 가지고 있다면 이 장은 건너뛰어도 된다.
AWS 콘솔에서 IAM 서비스에 들어간다.
위의 그림과 같이 IAM 대시보드에서 좌측의 메뉴에서 사용자로 이동한다.
사용자 메뉴로 이동해주었다면 사용자 추가를 눌러 IAM 계정을 추가해주어야 한다.
root 계정일 경우, 사용자 추가를 할 수 있지만 root 계정 이외에 IAM 계정으로 로그인하고 있다면 사용자 추가 권한이 없다면 이 작업을 할 수 없다는 것을 알아두어야 한다.
사용자 추가를 눌렀을 때 총 5단계를 거쳐야 사용자가 추가되는데 우선 1번째 단계이다.
사용자의 이름과 AWS 엑세스 유형을 선택하는 단계인데 여기서 그림 2와 같이 프로그래밍 방식 엑세스를 반드시 선택해주어야 한다.
이것을 선택해주어야 후에 엑세스 키가 발급되고 이를 통해 AWS CLI로 작업이 가능하다.
선택해주었다면 다음 단계로 넘어간다.
2단계는 권한 설정이다.
현재 생성 중인 계정이 AWS 내에서 어떤 서비스에 접근이 가능하며 얼만큼의 제어가 가능한지 지정해주는 단계이다.
필자는 Admin 권한을 넣어주었으나 원한다면 따로 권한 설정을 하는 것도 좋다.
사용자의 태그를 지정하는 단계이다.
현재는 크게 중요한 부분은 아니기 때문에 설정하지 않고 다음으로 넘어가도 된다.
생성 직전 검토 단계이다. 1~3단계까지 설정한 것을 검토하는데 이때 AWS 엑세스 유형에 프로그래밍 방식 엑세스가 반드시 있어야 한다.
그렇지 않다면 1단계로 돌아가 프로그래밍 방식 엑세스에 체크해주어야 한다.
이제 마지막 단계이다.
.csv
다운로드를 눌러 .csv
파일을 다운받는다.
이 파일에 AWS CLI나 AWS SDK로 AWS 서비스에 접근할 수 있는 엑세스 키가 있기 때문에 반드시 다운받아야 한다.
다운받은 .csv
파일을 열면 그림 8과 같이 사용자 이름, 엑세스 키 ID, 비밀 엑세스 키 등이 적혀있다.
이 파일에서 필요한 것은 엑세스 키 ID와 비밀 엑세스 키이다.
또한 이러한 엑세스 정보는 보안과 직결되므로 외부에 노출되지 않도록 개인이 잘 보관해야 한다.
OS는 Windows 10으로 하여 작업했으니 Windows 11과는 다소 차이가 있을 수 있다.
우선 이 페이지에서 AWS CLI2 설치파일을 다운받는다.
설치가 완료되었다면 정상적으로 설치되었는지 확인하기 위해 Command Prompt나 Power Shell 등 CLI를 열어 AWS CLI의 버전을 확인한다.
정상적으로 설치가 되었다면 위의 그림과 같이 버전에 관한 정보를 확인할 수 있다.
> aws --version
AWS CLI를 사용하기 위해 명령어 aws configure
를 입력하여 엑세스 키의 ID와 비밀 엑세스 키를 붙여넣고 작업할 리전과 출력 형식을 입력해준다.
출력 형식은 json, table, text, yaml, yaml-stream이 있다.
그 후, 아래의 명령어로 AWS CLI로 현재 계정에서 EC2로 접근 가능한 리전을 확인한다.
명령어가 위의 그림과 같이 결과를 잘 뱉으면 현재 계정으로 AWS CLI를 사용할 수 있다는 의미이다.
> aws ec2 describe-regions
설정을 변경하고 싶다면 명령어 aws configure
명령어를 입력하여 설정을 변경하거나 위의 그림과 같이 홈 디렉토리에 있는 .aws
디렉토리에서 config
파일과 credentials
파일을 수정해서 설정을 변경할 수 있다.
이렇게 Windows 환경에서 AWS CLI를 사용할 준비가 끝났다.
아래의 명령어로 AWS CLI 압축 파일을 다운받는다.
그 후, 압축 해제 명령어를 통해 다운받은 압축 파일의 압축을 해제한다.
압축 해제 명령어가 없다면 설치를 받아야 한다.
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
아래의 명령어를 통해 설치 프로그램을 실행하는 동시에 권한을 부여한다.
그럼 기본적으로 설치는 /usr/local/aws-cli
에 되며 /usr/local/bin
에 심볼 링크가 생성된다.
설치 프로그램을 실행 후, 실행한 디렉토리를 -i
옵션으로 복사할 디렉토리와 -b
옵션으로 심볼릭 링크로 연결해준다.
다음 명령어는 AWS CLI를 업데이트하는 명령어인데, 기존 심볼 링크 및 설치 관리자 정보를 추가하여 --update
파라미터를 포함한 install 명령을 구성한다.
마지막으로 AWS CLI 버전을 확인했을 때 위의 그림와 같이 버전 정보가 확인된다면 정상적인 설치가 완료된 것이다.
$ sudo ./aws/install
$ sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
$ ls -l /usr/local/bin/aws
$ aws --version
엑세스 정보 설정은 Windows와 마찬가지로 aws configure
명령어로 진행한다. 엑세스 정보 설정 이후, 아래의 명령어로 EC2에 접근 가능한 리전을 확인한다. 결과가 잘 나오면 AWS CLI를 정상적으로 사용할 수 있다.
$ aws ec2 describe-regions
macOS는 homebrew를 사용하면 명령어로 프로그램을 간단히 설치할 수 있다.
homebrew에서 AWS CLI를 설치하는 명령어는 아래와 같다.
$ brew install awscli
설치 후, 경로와 버전을 확인하면 위의 그림과 같은 결과가 나오는 것을 확인할 수 있다.
엑세스 정보 설정은 aws configure
명령어를 통해 설정하면 된다.
이번 항목에서는 위에서 소개했던 방식 이외에 AWS CLI를 다루는 방식들을 소개한다.
CloudShell은 웹브라우저로 AWS 콘솔에 접근하여 직접 사용할 수 있다.
CloudShell은 AWS CLI2가 세팅되어 있는 상태라 별 다른 설정 없이 AWS CLI를 다룰 수 있으며 Python과 Node 런타임, Bash, PowerShell, git, ECS CLI, jq, npm, pip 등이 포함되어 있으며 향후 더 많은 기능이 제공될 예정이다.
CloudShell을 지원하는 리전은 이 페이지에서 확인하면 된다.
이 외에 CloudShell에 대해서는 아래와 같이 간단히 정리해두었다.
스토리지:
$HOME
에 저장된 파일은 Cloud Shell 호출 간에도 유지되지만 그 이외에 설치한 SW는 유지되지 않으며 용량은 리전당 1GB로 제한된다.요금: 리전 당 최대 10개의 Shell을 동시에 사용했을 때 무료로 사용이 가능하며 Cloud Shell에서 AWS CLI로 작업을 하여도 Cloud Shell은 과금이 되지 않는다.
시간 초과 및 지속성: 20분 동안 사용하지 않으면 세션이 만료된다.
네트워크 엑세스: 세션은 인터넷 아웃바운드 연결을 생성이 가능하지만, 인바운드 연결은 불가능하며 세션은 private VPC 서브넷 내의 리소스에 접근할 수 없지만 이 기능은 단기 로드맵에 존재한다.
Cloud Shell을 사용하는 방법은 매우 간단하다.
AWS 콘솔에 접속해서 Cloud Shell을 지원하는 리전에서 위의 그림와 같이 우측 상단 Cloud Shell 아이콘을 클릭하면 된다.
Cloud Shell는 AWS CLI가 기본으로 깔려있기 때문에 따로 세팅해줄 것은 거의 없다고 보면 된다.
AWS Shell은 AWS CLI 셸 프로그램으로 AWS CLI를 사용하는 사용자에게 도움되는 자동 완성, OS Shell 명령 실행, 실행한 명령의 결과를 text 편집기로 내보내기 등 편리한 기능이 탑재되어 있다.
AWS CLI만을 사용하면 간혹 옵션명이 헷갈리거나 기억나지 않는 경우가 있는데 AWS Shell을 사용하면 이러한 경우를 대폭 줄일 수 있다.
AWS Shell을 설치하기 위해서는 python과 pip가 필요한데 pip가 없는 사람은 설치를 해준다.
python이 없으면 마찬가지로 python을 설치해준다.
이미 설치되어 있는 사람들은 이곳을 무시하고 다음으로 넘어가면 된다.
$ sudo apt install python3-pip -y
pip를 통해 AWS Shell을 설치해준다.
$ sudo pip install aws-shell
설치가 완료되면 AWS Shell을 실행시켜준다.
실행하는 명령어는 aws-shell
이다.
보통 터미널에서 AWS CLI를 사용하면 앞에 무조건 aws를 붙여야 하는데 AWS Shell에서는 앞에 aws를 붙일 필요가 없다.
즉 AWS Shell에서는 명령어를 작성할 때 맨앞의 접두사인 aws
를 빼고 <command> <subcommand> <옵션이나 파라미터>
와 같이 명령어를 작성할 수 있다. 또한 자동 완성 기능 또한 편리하기에 유용하다.
필자는 명령어가 정상적으로 동작하는지 확인하기 위해 명령어 하나를 실행시켜 보았다.
명령어는 잘 동작한다.
필자는 이미 계정 정보를 설정해두어서 잘 동작하는 것이다.
계정 정보의 설정을 하지 않고 AWS Shell만 설치한 사람은 위의 그림과 같이 AWS Shell 내에서 명령어 configure
를 통해 설정이 가능하다.
AWS Shell에서 나가려면 F10
을 누르면 나갈 수 있다.