AWS ec2 우분투(ubuntu)에 awscli 설치 하기

AWS의 경우 문서가 훌륭하게 준비가 되어 있어서 사실 AWS에서 제공해 주는 메뉴얼 및 튜토리얼을 보는 것이 가장 확실한 정보를 얻을 수 있는 수단입니다.
(AWS 한국어 문서 페이지: https://aws.amazon.com/ko/documentation/)
아래 내용은 기본적으로 AWS에서 제공하는 문서를 참고하여 정리한 내용입니다.

대상 EC2의 OS는 Ubuntu 이지만 CentOS나 AmazonLinux도 사실 apt 대신 yum을 사용하는 것 외에 별 다를 것은 없을 것 같습니다.

AWS cli 는 무엇에 쓰는 물건인가?(What Is the AWS Command Line Interface?)

The AWS Command Line Interface is a unified tool to manage your AWS services.
Refer: http://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-chap-welcome.html

AWS에서는 AWS 서비스를 관리할수 있는 통합도구라고 표현하고 있습니다.
AWS cli(Command Line Interface)라 하면 사용자가 AWS와의 대화(제어, 관리)를 Command Line으로 할 수 있게 구현해 놓은 일종의 툴 이라고 볼 수 있습니다.
사실 보통 사용자들은 CLI보다는 화면상에서 버튼을 클릭하거나 드래그&드롭 할 수 있는 GUI(Graphic User Interface)에 익숙해져 있어서 처음 사용할때는 어려워 보이지만 익숙해지면 나름 GUI처럼 편하게 사용할 수 있습니다.

AWScli 설치

Refer: http://docs.aws.amazon.com/ko_kr/cli/latest/userguide/installing.html
AWS에서 제공하는 문서에는 pip(The PyPA recommended tool for installing Python packages)를 이용한 설치방법이 나와 있습니다. 이 글에서는 pip를 이용한 설치방법과 apt install를 이용한 방법 두가지 모두 다루겠습니다. 어느 방법을 하는것이 저 적합한지 잘 모르겠다 하시는 분들은 2. apt install 방법을 선택하시는것 을 추천 합니다.

1. pip를 이용한 cli 설치

Refer: http://docs.aws.amazon.com/ko_kr/cli/latest/userguide/installing.html

설치

ec2-shell> pip install --upgrade --user awscli

옵션 설명

–upgrade 옵션은 이미 설치된 관련 패키지가 있으면 업그래이드 가능한 경우 업그래이드를 하게 해주는 옵션입니다.
–user 옵션은 pip 명령을 실행한 유저의 서브디렉터리에 설치를 하라는 옵션입니다.

aws 명령어로 확인

ec2-shell> aws
usage: aws [options]   [ ...] [parameters]
To see help text, you can run:

  aws help
  aws  help
  aws   help
aws: error: the following arguments are required: command

유의사항

pip를 이용하여 위와 같이 튜토리얼대로 설치하면 설치한 유저만 awscli를 사용할 수 있습니다. 사용환경에 설치된 디렉터리를 path로 잡아주면 다른 사용자들도 사용할 수 있습니다.

2. apt를 이용한 설치

awscli가 설치 되지 않은 상태에서 아래와 같이 명렁어를 입력하면 apt install 을 권유하는 가이드를 볼 수 있습니다.

ec2-shell> aws
The program 'aws' is currently not installed. You can install it by typing:
apt install awscli

awscli 설치

ec2-shell> sudo apt install awscli

aws 명령어로 확인

ec2-shell> aws
usage: aws [options]   [ ...] [parameters]
To see help text, you can run:

  aws help
  aws  help
  aws   help
aws: error: the following arguments are required: command

이렇게 설치하면 모든 계정이 awscli 사용이 가능합니다.

AWS cli 설정

위 설치 과정을 완료후에 바로 사용할 수 있으면 좋겠지만 중요한 과정인 계정 access  key 셋팅을 포함한 기타 설정 과정을 완료해야 cli를 사용 할 수 있습니다. Access Key를 만들기 위해서는 먼저 IAM 에서 유저를 생성해야 합니다.

1. IAM 유저 생성

먼저 aws 콘솔에서 IAM 서비스로 이동합니다. 왼쪽 메뉴에 Users 가 있는데 이 것을 클릭하고 기존에 User가 없으면 생성하는 과정이 필요합니다. 새 User가 속할 그룹도 만들어야 합니다. 복잡해 보이는데 이 과정은 줄일 수가 없어서 감내해야 합니다.

User Name을 적어주세요. 그리고 지금 생성하는 유저는 AWS콘솔용 유저가 아니고 CLI에서 사용할 User 이기 때문에아래 캡쳐화면과 같이 Programmatic access 를 체크해줍니다.

다음 단계로 갔는데 기존에 사용하던 그룹이 없으면 이것 또한 만들어야 합니다. 이 유저그룹은 해당 유저가 어떠한 권한을 가지게 될지에 대해서 범위를 정해주는 역할을 하게 됩니다.

아래 캡쳐화면과 같이 사용하실 그룹 이름을 적어줍니다. 그리고 하단 테이블에서 이 유저가 가지게 될 policy type이 어떤 것인지 선택해야 합니다. 다중 선택도 가능합니다. 혹은 그룹 한개당 한개의 policy만 선택해서 여러개를 만들어 놓고 나중에 유저의 그룹을 다중으로 선택해도 됩니다. 일단 여기에서는 CLI를 테스트 할때 S3을 이용할 계획이기 때문에 S3에 대한  Full Access할 수 있는 policy type을 선택하겠습니다.

생성한 그룹중에서 원하는 그룹을 선택해줍니다. 이 예제에서는 CLI가 되겠습니다.

2. Access Key 생성

새로 유저를 생성하게 되면 그 유저를 선택해서 Access Key를 생성할 수 있습니다. 긴 과정을 거쳐서 이제 거의 다 왔습니다.  Access Key를 생성하면 아래와 같이 생성된 키를 볼수 있는 창이 하나 나옵니다. 캡쳐 화면에서 보신것과 같이 생성하신 Key는 다운로드 하셔서 보관하시는 것을 추천합니다. 이 화면에서 close 하면 다시는 Secret Key를 aws 콘솔에서는 찾을 수 가 없습니다. Secret key가 **** 표시 되어 있는데 “Show”를 클릭하면 볼 수 있습니다.

키 분실에 대해서 너무 걱정안하셔도 되긴 합니다. 얼마든지 새로 생성할 수 있습니다. 이렇게 Key ID와 Secret Key를 생성한것을 aws cli에 셋팅해주어야 합니다.

3. AWS configure

configure 옵션을 사용하여 셋팅합니다.
ec2-shell> aws configure
위와 같이 명렁어를 실행시키면 아래와 같은 입력 라인(한줄씩 나옵니다.)이 나옵니다.

AWS Access Key ID [None]: #여기엔 위에서 생성한 Key ID를 붙여넣고 엔터
AWS Secret Access Key [None]:  # Secret Key를 붙여놓고 엔터
Default region name [None]:  ap-northeast-2 # 디폴트로 cli를 사용할 resoin을 씁니다.  이 예시는  서울 리전 입니다.
Default output format [None]:  # 여기는 그냥 엔터로 넘어갔니다.

참고로 각 resion의 endpoint및 resion이름을 알수 있는 페이지를 AWS에서 제공하고 있습니다. 본인의 resion을 모르시면 여기서 찾아보시면 됩니다. http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/using-regions-availability-zones.html

자 이제 셋팅을 마쳤으니 테스트를 해보겠습니다.

ec2-shell> aws s3 ls
2017-02-10 00:48:24 algopie-api
2017-02-17 01:04:48 algopie-public

이렇게 S3 버킷이 이미 존재한다면 ls로 리스트가 나옵니다. cli의 S3 에서 가장 많이 사용하게 될 것은 아마 cp, mv, rm 정도가 아닐까 생각됩니다.

간단한 확인으로 S3를 어떻게 제어하는지 옵션을 어떻게 써야 하는지 보려면 아래와 같이 help 옵션을 사용하시면 아주 익숙한 man page가 나옵니다.

ec2-shell> aws s3 help

s3 외에도 다양한 서비스들을 command line으로 관리할수 있는 강력한 툴이 바로 aws cli 입니다.