AWS 커맨드 라인 인터페이스(Command Line Interface, CLI) 는 AWS 서비스를 관리하는 통합 도구이다.
커맨드 라인에서 아마존 웹 서비스(Amazon Web Service)의 API를 직접 호출 및 제어하고 스크립트를 통해 자동화할 수 있다.
또한 AWS CLI는 파이썬(Python)으로 만들어진 커맨드 라인 명령어로 깃허브 aws/aws-cli 에서 개발중이며, 최신 버전은 릴리즈 페이지에서 확인할 수 있다.
AWS CLI는 아래 페이지 링크 가이드를 통해 해당하는 OS 별로 설치가 가능하다.
설치 후 aws --version
으로 아래 사진처럼 설치 확인할 수 있다.
AWS CLI를 사용하려면 액세스 키를 등록해야 하며, aws configure
명령어를 사용한다.
$> aws configure
AWS Access Key ID [None]: <AWS Access Key ID>
AWS Secret Access Key [None]: <AWS Secret Access Key>
Default region name [None]: <Default region name>
Default output format [None]: <Default output format>
각 필드의 의미는 아래와 같다.
aws
명령어를 사용할 때 API를 호출할 기본 리전을 지정한다. 예를 들어, ap-northeast-2는 서울 리전이다.--region <REGION>
옵션으로 덮어쓸 수 있다.--output <FORMAT>
옵션으로 덮어쓸 수 있다.AWS 액세스 키 ID와 AWS 시크릿 액세스 키는 필수적으로 입력해야 하며, 이 값들이 제대로 설정되어야 API 호출이 성공적으로 이루어진다.
aws configure
명령어로 설정한 내용은 ~/.aws/config
와 ~/.aws/credentials
로 나눠서 저장된다.
credentials
에는 인증과 관련된 값들이 저장되고, 그 외의 설정은 config
파일에 저장된다.
~/.aws/config
의 경우 다음과 같이 저장된다.
[default]
region = <Default Region Name>
output = <Default Output Format>
~/.aws/credentials
의 경우 다음과 같이 저장된다.
[default]
aws_secret_access_key = <AWS Secret Access Key>
aws_access_key_id = <AWS Access Key ID>
aws configure
명령어를 사용하지 않고, 이 파일들을 직접 만들어도 똑같이 인증이 가능하다.
aws configure
명령어는 단지 이 파일들을 생성하는 것이다.
환경변수를 사용하면 설정 파일을 사용하지 않고 인증 키를 임시로 사용할 수 있다.
다음 두 개의 환경변수에 액세스 키 ID와 시크릿 액세스 키를 지정하면 된다.
기본 리전이나 기본 출력 형식은 다음 환경 변수로 지정할 수 있다.
이러한 환경변수들은 export
명령어로 실행중인 셸에 환경변수를 등록할 수 있다.
$ export AWS_ACCESS_KEY_ID=<AWS Access Key ID>
$ export AWS_SECRET_ACCESS_KEY=<AWS Secret Access Key>
등록한 환경변수들은 env
명령어로 환경변수 목록을 확인할 수 있다.
$ env | grep AWS
AWS_SECRET_ACCESS_KEY=<AWS Access Key ID>
AWS_ACCESS_KEY_ID=<AWS Secret Access Key>
환경변수에 등록된 인증키는 파일로 설정한 인증키보다 우선적으로 사용된다. 이 외에도 인증이나 설정값을 지정하는 방법이 몇 가지가 더 있으며, 각 방법은 적용되는 우선 순위가 다르다.
참고
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-configure-envvars.html
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-precedence
aws configure
명령어를 사용하는 경우 [default]
섹션에 지정한 값들이 저장된다.
이와 비슷하게 AWS CLI에서는 설정 파일의 섹션을 지정하는 방식으로 다수의 계정(프로필)을 지원한다.
aws configure
명령어를 사용하는 경우, --profile <PROFILE NAME>
옵션을 지정해 다른 계정이나 사용자의 액세스 키를 등록할 수 있다.
$> aws configure --profile <Profile Name>
AWS Access Key ID [None]: <Another AWS Access Key ID>
AWS Secret Access Key [None]: <Another AWS Secret Access Key>
Default region name [None]: <Another Default Region Name>
Default output format [None]: <Another Default Output Format>
다중 계정 설정을 하였을 경우 설정 파일들은 아래와 같이 저장된다.
~/.aws/config
의 경우
[default]
region = <Default Region Name>
output = <Default Output Format>
[<Profile Name>]
region = <Another Default Region Name>
output = <Another Default Output Format>
~/.aws/credentials
의 경우
[default]
aws_secret_access_key = <AWS Secret Access Key>
aws_access_key_id = <AWS Access Key ID>
[<Profile Name>]
aws_secret_access_key = <Another AWS Secret Access Key>
aws_access_key_id = <Another AWS Access Key ID>
로컬에 다수의 프로필이 등록 되어 있는 경우 aws 명령어를 실행할 때 --profile <PROFILE_NAME>
옵션을 지정해 특정 프로필을 사용할 수 있다.
프로필 옵션을 지정하지 않은 경우 [default]
섹션의 값이 사용 된다.
기본적으로 사용되는 프로필을 변경하고자 하는 경우 AWS_PROFILE 환경 변수를 지정하면 된다.
help
를 통해 각 명령어들의 사용법을 커맨드 라인에서 바로 확인 가능하다.
$> aws help
$> aws <COMMAND> help
$> aws <COMMAND> <SUBCOMMAND> help
예를 들어 ec2 명령어의 사용법은 다음과 같이 확인할 수 있으며,
$> aws ec2 help
ec2 명령어의 하위 명령어인 describe-images의 사용법은 다음과 같이 확인할 수 있다.
$> aws ec2 describe-images help
추가적으로 아래 공식 문서를 살펴보는 것도 좋다.
AWS CLI 명령어 레퍼런스
https://www.44bits.io/ko/post/aws_command_line_interface_basic#%EB%93%A4%EC%96%B4%EA%B0%80%EB%A9%B0
https://aws.amazon.com/ko/cli/
https://github.com/aws/aws-cli
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-configure-envvars.html
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-precedence