[AWS] AWS CLI 살펴보기

bolee·2022년 8월 3일
0
post-thumbnail
post-custom-banner

AWS Command Line Interface (AWS CLI)

AWS 커맨드 라인 인터페이스(Command Line Interface, CLI) 는 AWS 서비스를 관리하는 통합 도구이다.

커맨드 라인에서 아마존 웹 서비스(Amazon Web Service)의 API를 직접 호출 및 제어하고 스크립트를 통해 자동화할 수 있다.

또한 AWS CLI는 파이썬(Python)으로 만들어진 커맨드 라인 명령어로 깃허브 aws/aws-cli 에서 개발중이며, 최신 버전은 릴리즈 페이지에서 확인할 수 있다.

AWS CLI 설치

AWS CLI는 아래 페이지 링크 가이드를 통해 해당하는 OS 별로 설치가 가능하다.

최신 버전의 AWS CLI 설치 또는 업데이트

설치 후 aws --version으로 아래 사진처럼 설치 확인할 수 있다.

AWS CLI 계정 설정

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>

각 필드의 의미는 아래와 같다.

  1. AWS 액세스 키 ID(AWS Access Key ID)
    a. 액세스 키의 ID 값 지정
  2. AWS 시크릿 액세스 키(AWS Secret Access Key)
    a. 액세스 키의 ID 값에 대응하는 시크릿 키 지정
    b. 시크릿 키는 오직 발급하는 시점에만 확인할 수 있다.
  3. 기본 리전(Default region name)
    a. aws 명령어를 사용할 때 API를 호출할 기본 리전을 지정한다. 예를 들어, ap-northeast-2는 서울 리전이다.
    b. 이 값은 명령어를 실행할 때 --region <REGION> 옵션으로 덮어쓸 수 있다.
  4. 기본 출력 포맷(Default output format)
    a. API 호출한 결과를 출력할 포맷 지정
    b. text, json, table 중에 하나를 사용할 수 있으며, 이 값은 명령어를 실행할 때 --output <FORMAT> 옵션으로 덮어쓸 수 있다.

AWS 액세스 키 ID와 AWS 시크릿 액세스 키는 필수적으로 입력해야 하며, 이 값들이 제대로 설정되어야 API 호출이 성공적으로 이루어진다.

AWS CLI 계정 설정 파일

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와 시크릿 액세스 키를 지정하면 된다.

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

기본 리전이나 기본 출력 형식은 다음 환경 변수로 지정할 수 있다.

  • AWS_DEFAULT_REGION
  • AWS_DEFAULT_OUTPUT

이러한 환경변수들은 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

post-custom-banner

0개의 댓글