...
AWS CLI (Command Line)
AWS Command Line Interface는 쉘 커맨드를 사용하여 AWS 서비스와 상호 작용할 수 있는 도구이다.
우리가 브라우저로 아마존 웹 서비스 홈페이지(콘솔 홈)에 가서 서비스를 이용한 것 처럼, 터미널에서 명령줄로 aws 서비스를 이용하는 것이라고 보면 된다.
최소한의 구성으로 AWS CLI를 사용하면 브라우저 기반 AWS Management Console에서 제공하는 것과 동일한 기능을 구현하는 명령을 실행할 수 있다.
편하게 웹에서 관리하면 되지, 따로 CLI 기반의 커맨드를 지원하는 이유는, AWS CLI를 사용하여 서비스의 기능을 살펴보고 리소스를 관리할 쉘 스크립트를 개발할 수 있기 때문이다.
예를들어 VPC 인프라를 구축한다고 하면 웹 콘솔 브라우저에서는 마우스로 이리저리 클릭하며 생성해야 되지만, 쉘 스크립트로 템플릿을 짜서 실행만 하면 뚝딱 만들 수 있다.
그래서 만일 인프라 서비스 규모가 커지면, 오히려 커맨드로 관리하는 것이 더 수월해 질 수 있다.
다행히 아마존에서는 정말 다양한 API 도구들을 지원해주니 우리는 이를 잘 활용하여 사용하기만 하면 된다.
AWS CLI 설치
리눅스 (Linux)
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install
$ aws --version
aws-cli/2.7.9 Python/3.9.11 Linux/5.13.0-51-generic exe/x86_64.ubuntu.20 prompt/off
$ rm -f awscliv2.zip # 설치 되었으면 zip은 지워주자. 용량이 여유롭지 못하다
만일 이미 설치되어있고 업데이트만 하려면 다음 명령어를 입력한다.
$ which aws
/usr/local/bin/aws
$ sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
윈도우 (Windows)
↓ 아래 링크로 AWSCLIV2.msi 파일을 다운로드
https://awscli.amazonaws.com/AWSCLIV2.msi
설치가 완료되면 Windows(키) + R 실행하여 CMD를 실행시켜 준다.
CMD 창에 aws --version 명령어를 입력하여 아래와 같은 출력이 나오면 AWS CLI 설치가 완료 된 것이다.
맥 (Mac)
Mac OS는 Homebrew를 사용하면 명령어로 간단히 설치 할 수 있다.
$ brew install awscli
$ which aws
/usr/local/bin/aws
$ aws --version
aws-cli/2.0.26 Python/3.8.3 Darwin/19.0.0 botocore/2.0.0dev30
AWS CLI 사용법
CLI 인증 설정
AWS Cli를 사용하기 위해서는 AWS 계정에서 발급한 IAM 사용자의 AWS Access Key ID와 AWS Secret Access Key가 필요하다.
AWS 홈페이지에서 계정을 로그인 한 것과 같이, CLI에서도 내 서비스를 이용하기 위해선 IAM에서 등록한 사용자 계정의 아이디와 비밀번호가 필요하다.
그 아이디와 비밀번호가 Access Key ID와 Secret Access Key 라고 보면 된다.
이미 발급받은 IAM 정보가 있다고 가정하고 진행 한다.
만일 자신의 엑세스 키와 시크릿 키를 분실하였다면 IAM 콘솔 메뉴에 들어가서 간단하게 재발급 받을 수 있다. (최대 2개)
유저 엑세스 키를 알아냈다면, aws configure를 입력하여 이용하고자 하는 User의 Access, Secret Access Key를 입력해주자.
$ aws configure
AWS Access Key ID [None] : [발급받은 IAM의 Access Key ID]
AWS Secret Access Key [None] : [발급받은 IAM의 Secret Access Key]
Default region name [None] : ap-northeast-2[서울 리전]
Default output format [None] : text / json / table
Default output format(기본 출력 포맷)은 API를 호출한 결과를 출력할 포맷을 지정.
이 값은 명령어를 실행할 때 --output <FORMAT> 옵션으로 덮어쓸 수 있다.
CLI 다중 계정 설정
위의 방식은 default 프로필로 등록이 된다.
기본적으로 AWS CLI는 default 프로파일을 사용한다.
그런데 Cli를 사용하다 보면 default 계정 이외에 다중 계정을 이용할 경우가 꽤 발생한다.
CLI에서 만일 여러 AWS 계정과 아이디를 운용하고 싶은 경우OS에서도 여러 계정을 생성할 수 있듯이, --profile 옵션으로 지정해줄 수 있다.
--profile 옵션을 지정하고 이름을 할당하여 다양한 자격 증명 및 설정을 통해 명명된 프로파일을 추가로 생성하고 사용할 수 있다.
$ aws configure --profile [원하는 이름]
이렇게 프로필을 설정해 다중 계정을 구축한다면, 다른 서비스 CLI 명령어를 사용할 때 --profile 이름을 붙여서 다른 계정의 내역을 출력할 수 있게 된다.
$ aws s3 ls # default user의 s3 내역을 출력한다.
$ aws s3 ls --profile [profile이름] # profile의 s3 내역을 출력한다.
$ aws s3 ls --configure=[profile이름]
하지만 다른 프로필을 사용해야 할때 일일히 옵션을 붙여가며 하는건 비효율적이다.
따라서 aws용 환경변수에 프로필을 등록해 기본 사용자를 변경할수 있다.
$ export AWS_PROFILE=[profile이름]
$ export AWS_PROFILE=default
설정한 인증 정보 보기
위에서 aws configure 로 설정한 인증정보는, /home/유저명/.aws 경로에서 config파일과 credentials 파일에 들어있다.
aws configure 정보를 등록하게 된다면, .aws 라는 폴더에 config와 credentials 파일이 생성되게 된다.
여기에 인증정보가 저장되니, 인스턴스를 재부팅해도 인증정보가 계속 인스턴스에 유지되게 된다.
저장된 credentials 파일은,
Linux 또는 macOS의 경우는 ~/.aws/에,
Windows의 경우는 C:\Users\USERNAME\.aws\에 있다.
config
- output : aws cli로 부터 응답을 받는 형식 (예 : json, text)
- region : aws region을 의미한다. region 코드표는 AWS 서비스 엔드포인트를 참고하여 설정해주면 된다.
credentials
- aws_access_key_id : 액세스 키 아이디
- aws_secret_access_key : 시크릿 액세스 키
$ cat ~/.aws/config
[default]
region=us-west-2
output=json
[profile 프로필명]
region=us-east-1
output=text
$ cat ~/.aws/credential
[default]
aws_access_key_id="디폴트 엑세스 키 아이디"
aws_secret_access_key="디폴트 시크릿 엑세스 키"
[프로필명]
aws_access_key_id="프로필명 엑세스 키 아이디"
aws_secret_access_key="프로필명 시크릿 엑세스 키"
$ aws configure list # 설정한 인증 정보를 확인
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************IV67 shared-credentials-file
secret_key ****************pVnu shared-credentials-file
region ap-northeast-2 config-file ~/.aws/config
이밖의 CLI 명령어
help 명령어를 사용해 명령어들의 사용방법을 커맨드 라인에서 바로 확인할 수 있다.
$ aws help
$ aws <COMMAND> help
$ aws <COMMAND> <SUBCOMMAND> help
# 모든 프로파일 리스트
$ aws configure list-profiles
# 현 사용자 Region 변경하기
$ aws configure set region us-east-1
# aws iam user 정보 얻어오기
$ aws iam list-users
$ aws iam list-users --profile <profile-name>
# 현재 사용중인 iam 정보(권한) 얻기
$ aws sts get-caller-identity
{
"UserId": "AIDAYXPEPKAAAH2G44W3T",
"Account": "600163123454",
"Arn": "arn:aws:iam::600163123454:user/QA2"
}
# 참고 자료
https://www.thelambdablog.com/a-concise-guide-to-setting-up-the-aws-command-line-libraries-on-your-local-development-environment/
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.