AWS CLI 기초 학습 공유

문서 목적

이 문서는 AWS Command Line Interface 사용 설명서를 살펴보며 AWS CLI에 대한 학습했던 내용을 개인적으로 정리하기 위하여 작성되었다.

AWS Command Line Interface 사용 설명서에서 필요한 부분만 정리하였다.

macOS로 진행하였고 이와 관련 된 것만 정리하였다.

AWS CLI란?

AWS CLI는 Amazon Web Service Command Line Interface의 약자로 셸의 명령을 사용하여 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구이다.

AWS Management 콘솔과 동일한 기능을 제공을 해준다. 

 자세한 내용은 AWS Command Line Interface이란 무엇입니까?를 참고한다.

설치방법

macOS

다음과 같은 환경에서 AWS CLI 설치를 진행하였다.

  • macOS Mojave 버전 10.14.6(18G87)

AWS CLI를 설치하기 위하여 아래의 Python 버전이상이 설치 되어 있어야 한다.

2019. 8. 27 기준 

Python 2 버전 2.6.5+ 또는 Python 3 버전 3.3+

Python이 설치 되어있지 않다면 설치방법에 대하여 구글링을 하거나 다음과 같은 brew 명령을 활용하여 설치하면 된다.

$ brew intall python3

다른 설치 방법도 있지만 AWS CLI의 기본 배포 방법은 pip이며, 그중 pip3로 설치하는 것을 권장하고 있으므로 pip3로 설치를 진행한다.

다음과 같이 AWS CLI를 설치를 진행한다.

$ pip3 install awscli --upgrade --user

다음과 같은 명령으로 AWS CLI 설치 확인겸 버전 확인을 한다.

$ aws --version
aws-cli/1.16.222 Python/2.7.16 Darwin/18.7.0 botocore/1.12.212

더 자세한 내용은 AWS CLI 설치 - macOS를 참고한다.

다른 OS

AWS CLI 설치에서 OS에 맞는 설치법으로 설치하면 된다.

구성 및 자격 증명 저장

AWS CLI는 자주 사용하는 구성 및 자격 증명을 파일로 저장하여 관리할 수 있다.

구성 및 자격 증명의 구조

구성 및 자격 증명은 다음과 같은 구조로 저장된다.

Users/user/.aws/
├── config
└── credentials

각각의 파일에 담기는 내용은 다음과 같다.

config

  • output : aws cli로 부터 응답을 받는 형식 (예 : json, text)

  • region : aws region을 의미한다. region 코드표는 AWS 서비스 엔드포인트를 참고하여 설정해주면 된다.

credentials

  • aws_access_key_id : 액세스 키 아이디를 입력한다.

  • aws_secret_access_key : 시크릿 액세스 키를 입력한다.

자세한 내용은 구성 및 자격 증명 파일을 참고한다.

프로필 파일

AWS CLI에서는 프로필 별로 구성 및 자격 증명을 설정할 수 있다.

프로필 별로 구성 및 자격증명을 지정하는 방법은 다음과 같다.

$ aws configure --profile "프로필명"

설정된 프로필을 확인하면 다음과 같다.

$ cat ~/.aws/config
[default]
region=us-west-2
output=json
[profile user1]
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 CLI 사용 : Amazon S3

AWS CLI에서 상위 수준(s3) 명령 사용을 참고하여 문서에서 기술한대로 동작하는 지 확인했다.

각 명령어 별로 케이스 염두하여 테스트 하였다.

cp 명령어

케이스 : 로컬 파일을 s3로 복사

$ ls
cp                local_cp_test.txt

$ aws s3 ls s3://bucket/user-s3-cli-test/
2019-08-22 21:10:50          0

$ aws s3 cp local_cp_test.txt s3://bucket/user-s3-cli-test/s3_cp_test.txt
upload: ./local_cp_test.txt to s3://bucket/user-s3-cli-test/s3_cp_test.txt

$ aws s3 ls s3://bucket/user-s3-cli-test/
2019-08-22 21:10:50          0
2019-08-22 22:23:05         21 s3_cp_test.txt

케이스 : s3 파일을 로컬로 복사

$ ls -al
total 16
drwxr-xr-x  3 user  staff    96  8 22 22:25 .
drwxr-xr-x  7 user  staff   224  8 22 20:59 ..
-rw-r--r--@ 1 user  staff  6148  8 22 22:19 .DS_Store

$ aws s3 ls s3://bucket/user-s3-cli-test/
2019-08-22 21:10:50          0
2019-08-22 22:23:05         21 s3_cp_test.txt

$ aws s3 cp s3://bucket/user-s3-cli-test/s3_cp_test.txt ./local_cp_test.txt
download: s3://bucket/user-s3-cli-test/s3_cp_test.txt to ./local_cp_test.txt

$ ls
local_cp_test.txt

케이스 : s3 파일을 s3로 복사

$ aws s3 ls s3://bucket/user-s3-cli-test/
2019-08-22 21:10:50          0
2019-08-22 22:23:05         21 s3_cp_test.txt

$ aws s3 cp s3://bucket/user-s3-cli-test/s3_cp_test.txt s3://bucket/user-s3-cli-test/s3_cp_test_copy.txt
copy: s3://bucket/user-s3-cli-test/s3_cp_test.txt to s3://bucket/user-s3-cli-test/s3_cp_test_copy.txt

$ aws s3 ls s3://bucket/user-s3-cli-test/
2019-08-22 21:10:50          0
2019-08-22 22:23:05         21 s3_cp_test.txt
2019-08-22 22:30:43         21 s3_cp_test_copy.txt

케이스 : 로컬 디렉터리를 s3로 복사

$ ls ./cp_dir_test/
local_cp_test.txt

$ aws s3 ls s3://bucket/user-s3-cli-test/
2019-08-22 21:10:50          0
2019-08-22 22:23:05         21 s3_cp_test.txt
2019-08-22 22:30:43         21 s3_cp_test_copy.txt

$ aws s3 cp ./cp_dir_test s3://bucket/user-s3-cli-test/s3_cp_dir_test --recursive
upload: cp_dir_test/local_cp_test.txt to s3://bucket/user-s3-cli-test/s3_cp_dir_test/local_cp_test.txt

$ aws s3 ls s3://bucket/user-s3-cli-test/s3_cp_dir_test
                           PRE s3_cp_dir_test/

$ aws s3 ls s3://bucket/user-s3-cli-test/s3_cp_dir_test/
2019-08-22 22:34:48         21 local_cp_test.txt

ls, mv, rm 명령

AWS CLI에서 상위 수준(s3) 명령 사용을 참고하여 테스트한다.

참고 자료

태그:

카테고리:

업데이트:

댓글남기기