AWS 에는 수많은 기능이 있고, 이를 실제 웹사이트에서 console 을 통해 제어하는 것은 개발자에게 매우 비효율적인 일이 아닐 수 없다. AWS 는 이렇게 사용자의 컴퓨터에서 AWS 상의 많은 기능을 제어하기 위해 AWS CLI 프로그램을 제공하며, 본 포스트에서는 AWS CLI 의 기본적인 사용법을 알아보고자 한다.
Installation
Mac
Mac OS 에서는 다음과 같이 pip 명령어를 통해 aws cli 를 쉽게 설치할 수 있다.
1 | pip install awscli |
Ubuntu
Authentication
AWS 는 현재 cli 프로그램을 사용하는 내가 어떤 유저인지 모르기 때문에 이를 AWS 에게 알려주어야 하며, 그것이 authentication 자체이다.
사용자의 PC에는 여러 AWS 유저들에 대한 정보를 저장할 수 있는데, AWS 는 매우 복잡한 유저 관리 체계를 가지기 때문에 이는 매우 필요한 일이다.(가령 특정 AWS 서비스의 조작을 위한 별도 Program user 를 생성하는 경우 여러 개발자가 하나의 계정을 공유하여 사용하는 것은 매우 빈번한 일이다.)
Command 를 입력할 때 특정 사용자임을 밝히기
아래 명령어를 통해 aws access key 와 secret key 를 등록하고 사용할 수 있다.
1 | aws configure |
다음과 같은 command option 을 통해 내가 어떤 사용자인지 알리고, 미리 configure 되어있는 해당 사용자의 정보로 authentication 을 진행할 수 있다.
1 | aws [command] --profile 사용자이름 |
MFA 를 사용하는 경우의 인증
콘솔 계정의 경우 cli 를 통한 작업을 진행할 경우 MFA 를 적용했다면 Access Deny 된다.
이 경우 MFA 유저를 위해 별도의 임시 인증을 거쳐야 하는데 이는 다음 명령어로 해결이 가능하다.
1 | aws sts get-session-token --serial-number <arn-mfa-device> --token-code 126355 --profile jee |
arn-mfa-device
는 각 AWS계정 정보에 들어가서 보안자격증명 탭에 할당된 MFA 디바이스를 보시면 알 수 있다.
token-code
는 Authy와 같은 2FA 토큰 값을 입력해 주면 된다.
커맨드를 실행하시면 임시 Access Key가 발급되고 Access ID, Secret Access Key, Session Token을 환경변수나 credential에 profile로 등록하신후 사용하면 된다.
때문에, 만료시간이 있기때문에 매번 재발급받아야하는데 AWS에서는 이를 각자 Cron Tab등으로 만들어서 사용하는 것을 권장한다.
다음과 같이 credential 에 등록하여 사용하면 된다.
~/.aws/credential
1 | [profile name] |
Configuration
AWS 사용자 및 기타 전역 설정에 대한 정보는 /.aws 의 config 파일에 저장되어 있다.
해당 파일을 열어보면 다음과 같이 세팅되어 있다.
config
1 | [profile user1] |
그 중에서도 유저 정보는 credentials 에 다음과 같이 저장되어 있다.
~/.aws/credentials
1 | [default] |
이처럼 기본 user 인 [default] 유저와 특정 유저를 나타내는 [profile user_name] 이 나뉘어 있다.
여기에 정의된 특정 profile 은 command line 에서 --profile user1
과 같이 사용될 수 있다.
Comments