본문 바로가기

AWS/CLI

[AWS/CLI] CLI Configure, AWS 인증 정보 관리

CLI와 AWS의 상호 작용

CLI를 사용하면 AWS의 리소스와 상호 작용 할 수 있습니다. 아래 명령문은 AWS의 S3 리소스의 버킷 리스트를 출력합니다.

$ aws s3 ls
Unable to locate credentials. You can configure credentials by running "aws configure".

명령문을 실행하면 Unable to locate credentials 에러를 출력합니다. 아직 AWS 인증 정보를 추가하지 않았기 때문에 AWS가 CLI의 요청을 거부한 것입니다. 즉, CLI를 사용해 AWS 리소스에 액세스하기 위해서는 인증 작업을 선행해야 합니다.

AWS 인증 정보

AWS의 사용자를 인증을 도와주는 요소의 집합을 인증 정보라고 부릅니다. 우리가 일반적으로 웹 사이트에서 회원가입을 할 때 사용하는 ID와 Password도 인증 정보라고 볼 수 있습니다.

다음은 AWS에서 인증 정보를 구성하는 요소와 이에 대한 간단한 설명입니다. 액세스 키 ID와 보안 액세스 키를 합쳐서 액세스 키라고 부릅니다.

  • 액세스 키 ID(AWS Access key ID)
    보안 액세스 키와 함께 액세스 키를 구성합니다. 액세스 키를 생성 할 때 AWS가 자동으로 할당합니다. 웹 사이트 계정에 비유하면 계정 ID에 해당합니다.
  • 보안-비밀 액세스 키(AWS Secret key)
    액세스 키 ID와 함께 액세스 키를 구성합니다. AWS는 보안을 위해 액세스 키를 생성하는 시점에만 보안 액세스 키를 보거나 다운로드 받을 수 있습니다. 웹 사이트 계정에 비유하면 계정 비밀번호에 해당합니다.
  • 리전(AWS Region)
    요청을 전송할 서버(또는 서비스)가 위치한 AWS 리전을 지정합니다.
  • 출력 형식(Output format)
    AWS에 보낸 요청 결과를 출력하는 형식을 지정합니다. 출력 형식은 json, yaml, yaml-stream, text 그리고 table이 있습니다. 일반적으로 json을 많이 사용하며, 출력 형식을 지정하지 않으면 default로 json을 사용합니다.

아직 액세스 키가 없다면, AWS Management Console에서 새로운 액세스 키를 생성 할 수 있습니다. AWS는 루트 사용자 대신 IAM 사용자를 생성하고, IAM 사용자에 대한 액세스 키를 생성하는 것을 권장합니다(이 포스트를 계속 진행하려면 IAM 사용자를 먼저 생성해야 합니다).

액세스 키 생성

IAM 사용자를 생성하였다면, AWS Management Console에서 액세스 키를 생성 할 수 있습니다. 먼저 AWS IAM 리소스를 관리하기 위해서 다음 링크(https://console.aws.amazon.com/iam/)에 IAM 사용자로 접속합니다. 하나의 IAM 사용자에 대한 액세스 키는 여러 개 생성하여 관리 할 수 있습니다.

  • AWS Management Console에서 IAM 리소스에 접속합니다. 이미 만들어진 IAM 사용자를 사용하여 로그인합니다.
  • 좌측 IAM 탐색 창에서 사용자를 선택합니다.
  • IAM 사용자를 선택하고 보안 자격 증명(Securiy credentials) 탭을 선택합니다.
  • 액세스 키 세션에서 액세스 키 만들기(Create access key)를 선택합니다. 이미 해당 IAM 사용자에 대한 액세스 키가 존재하는 경우 액세스 키 세션에 표시됩니다. 

잠시 기다리면, AWS가 임의의 액세스 키 ID와 비밀 액세스 키를 생성하여 표시합니다. 비밀 액세스 키는 표시를 선택하여 확인 할 수 있습니다.

.csv 파일 다운로드를 선택하면 액세스 키에 대한 전체 정보를 .csv 파일로 받을 수 있습니다. 액세스 키 만들기 팝업 창은 한 번 닫으면 비밀 액세스 키를 다시는 확인 할 수 없기 때문에 .csv 파일을 반드시 다운로드하여 안전한 장소(PC 등)에서 관리해야 합니다.

액세스 키 세션을 다시 확인하면, 방금 생성한 액세스 키가 IAM 사용자에 추가된 것을 확인 할 수 있습니다. 액세스 키는 IAM 사용자 하나에 여러 개를 생성 할 수 있으며, 각 액세스 키는 상태를 활성화/비활성화로 토글 할 수 있습니다.

CLI에 인증 정보 추가(Configure)

IAM 사용자에 액세스 키를 생성했습니다. 이제 CLI에 액세스 키를 추가하면 AWS에 인증 할 수 있습니다. CLI에 인증 정보를 추가하기 위해서 터미널에 다음 명령문을 입력합니다.

$ aws configure

명령문을 실행하면 다음 4개의 인증 정보를 순차적으로 입력해야 합니다.

$ aws configure
AWS Access Key ID [None]: AKIAQFP6XJZQM7JN4UU6
AWS Secret Access Key [None]: ****************************
Default region name [None]: ap-northeast-2
Default output format [None]: json

AWS Access Key ID와 AWS Secret Access Key는 사전에 생성한 액세스 키에서 액세스 키 ID와 비밀 액세스 키에 해당합니다. Default region name은 ap-northeast-2(서울)을 입력합니다. 테스트 환경에서는 서울 외 리전에 AWS 리소스를 생성 할 필요가 없으므로 특별한 이유가 없으면 서울 리전을 사용합니다. Default output format은 json을 입력합니다. 특별한 이유가 없다면 JSON 포멧을 가장 많이 사용합니다.

모든 정보를 입력하면 별다른 출력 없이 인증 정보 추가가 종료됩니다.

CLI에 추가된 인증 정보 확인

내 PC에 추가한 인증 정보를 확인하려면 다음 명령문을 입력합니다.

$ aws configure list

CLI에 추가한 인증 정보를 전부 확인 할 수 있습니다. 액세스 키에 해당하는 내용은 역시 숨겨져 있습니다. 앞서 액세스 키를 생성할 때 다운로드 받은 .csv 파일을 유실하면, CLI에서도 해당 정보를 확인 할 수 없기 때문에 관리에 유의해야 합니다.

$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************4UU6 shared-credentials-file    
secret_key     ****************bncg shared-credentials-file    
    region           ap-northeast-2      config-file    ~/.aws/config