Heesung Yang
AWS CLI - 설치 및 기본 설정 방법
Why CLI?
CLI : Command Line Interface의 약자로 명령어 기반의 사용자 환경을 의미한다.
처음 AWS를 접할 때는 GUI 환경인 AWS Management Console
을 이용하는게 좀 더 직관적이고 사용성이 좋다.
그러나 GUI의 한계점은 분명히 있다. 예를 들면,
- 비슷한 작업을 계속 GUI로 하는건 번거롭다.(예를 들어 EC2를 반복적으로 중지/시작 하는 일)
- GUI로 작업하는 과정을
문서화
하기 번거롭다. (일일이 스크린샷을 찍어야 한다.) - AWS Management Console의 GUI는 계속 업데이트되기 때문에 기껏 스크린샷 열심히 찍어가며 작성했던 메뉴얼이 어느 순간 무용지물이 된다.
- 무용지물까지는 아니더라도 최신 내용이 반영되지 않기 때문에 문서를 읽는 사람에게 혼란을 줄 수 있다.
반면 CLI는 위 단점을 보완해 줄 수 있기 떄문에, 위 단점에 대해 공감하는 사람이라면 CLI 사용을 추천한다.
- 비슷한 작업을 계속 GUI로 하는건 번거롭다.(예를 들어 EC2를 반복적으로 중지/시작 하는 일)
- 대부분 명령어 한 줄로 가능하다.
- GUI로 작업하는 과정을
문서화
하기 번거롭다. (일일이 스크린샷을 찍어야 한다.)- 명령어 기반이기 때문에(텍스트) 문서화가 비교적 간단하다.
- AWS Management Console의 GUI는 계속 업데이트되기 때문에 기껏 스크린샷 열심히 찍어가며 작성했던 메뉴얼이 어느 순간 무용지물이 된다.
- cli는 옵션이 추가될지 언정 거의 변경되지는 않는다.
- 변경되더라도 텍스트 수정이라 상대적으로 덜 번거롭다.
CLI가 무조건 좋다는 얘기가 아니다. GUI와 CLI가 가진 장단점이 명확하기 때문에 자신의 환경에 맞는 방법을 선택하면 된다.
설치
AWS CLI는 버전 1과 버전 2가 있다. 당연히 버전 2가 최신 버전이므로 버전 2를 설치하자. 설치는 AWS 공식 문서를 참고 하자. 매우 간단하다.
설치 후 터미널에서 아래 명령을 입력하여 제대로 설치 되었는지, 어떤 버전이 설치되었는지 확인할 수 있다.
aws --version
# Windows 10
aws-cli/2.2.39 Python/3.8.8 Windows/10 exe/AMD64 prompt/off
# Mac
aws-cli/2.1.10 Python/3.9.1 Darwin/20.6.0 source/x86_64 prompt/off
# Linux
aws-cli/2.0.13 Python/3.7.3 Linux/3.10.0-1160.21.1.el7.x86_64 botocore/2.0.0dev17
설정
AWS 계정 생성 시 생성한 Access Key와 Secret Access Key 정보를 AWS CLI에 설정하자.
설정 시 기본으로 사용할 region
이름과 cli 명령어 결과를 보여줄 형식(output)을 지정할 수 있다.
~$ aws configure
AWS Access Key ID [None]: YOUR_ACCESS_KEY
AWS Secret Access Key [None]: YOUR_SECRET_ACCESS_KEY
Default region name [None]: ap-northeast-2
Default output format [None]: json
region name에 설정할 값은 이 글 하단 AWS Region List를 참조하자.
output format 값에 따란 출력 결과 예시는 이 글 하단의 AWS CLI Output Format Sample을 참조하자.
위와 같이 입력하면 $HOME
폴더 밑에 .aws
폴더가 생성되고 하위에 config
, credentials
라는 파일이 생성된다.
Windows : C:\Users\hsyang\.aws
Mac : /Users/hsyang/.aws
Linux : /home/hsyang/.aws
파일을 열어보면 방금 설정한 정보가 텍스트 형태로 저장되어 있음을 확인할 수 있다.
-
config
[default] region = ap-northeast-2 output = json
-
credentials
[default] aws_access_key_id = YOUR_ACCESS_KEY aws_secret_access_key = YOUR_SECRET_ACCESS_KEY
[default]
라는 문구가 보이는데 이는 default
라는 이름의 profile
을 의미한다.
AWS CLI는 profile
이라는 개념을 제공하여 여러 개의 Access Key/Secret Access Key
를 사용하는 경우 각 Key별 profile
을 만들어 두고 필요에 따라 변경하며 사용할 수 있다.
dev
라는 이름의 profile을 추가해보자.
~$ aws configure --profile dev
AWS Access Key ID [None]: YOUR_ACCESS_KEY_FOR_DEV
AWS Secret Access Key [None]: YOUR_SECRET_ACCESS_KEY_FOR_DEV
Default region name [None]: us-east-1
Default output format [None]: table
그리고 config, credentials 파일을 확인하면 아래와 같이 정보가 추가되어 있다.
-
config
[default] region = ap-northeast-2 output = json [profile dev] region = us-east-1 output = table
-
credentials
[default] aws_access_key_id = YOUR_ACCESS_KEY aws_secret_access_key = YOUR_SECRET_ACCESS_KEY [dev] aws_access_key_id = YOUR_ACCESS_KEY_FOR_DEV aws_secret_access_key = YOUR_SECRET_ACCESS_KEY_FOR_DEV
aws configure 명령을 사용하여 설정한 region 이름과 output은 aws cli 커맨드 실행할 때마다 변경할 수 있기 때문에, 처음 설정 시 잘 모르겠다면 일단 그대로 두고 나중에 수정하면 된다.
# default profile 설정이 적용된다.
# ap-northeast-2(서울) 리전의 EC2 리스트가 출력되고, 출력 포맷은 json 형태다.
~$ aws ec2 describe-instances
## 리전만 변경하고 싶으면 아래와 같이 한다.
~$ aws ec2 describe-instances --region us-east-1
## 출력 포맷을 변경하고 싶으면 아래와 같이 한다.
~$ aws ec2 describe-instances --output text
## default profile 대신 dev profile을 적용하고 싶으면 아래와 같이 한다.
~$ aws ec2 describe-instances --profile dev
## 위 3가지 옵션을 동시에 사용할 수도 있다.
~$ aws ec2 describe-instances --profile dev --region eu-central-1 --output yaml
## dev profile 의 region을 변경하고 싶으면 아래와 같이 할 수 있다.
~$ aws configure --profile dev
AWS Access Key ID [****************_DEV]: # Enter를 입력하면 기존 정보를 그대로 사용
AWS Secret Access Key [****************_DEV]: # Enter를 입력하면 기존 정보를 그대로 사용
Default region name [us-east-1]: ap-northeast-2 # us-east-1 => ap-northeast-2 로 변경
Default output format [table]: # Enter를 입력하면 기존 정보를 그대로 사용
Appendix
AWS Region List
Name | Region | Country |
---|---|---|
Seoul | ap-northeast-2 | Asia |
Mumbai | ap-south-1 | Asia |
Osaka | ap-northeast-3 | Asia |
Singapore | ap-southeast-1 | Asia |
Sydney | ap-southeast-2 | Asia |
Tokyo | ap-northeast-1 | Asia |
Hongkong | ap-east-1 | Asia |
Ohio | us-east-2 | US |
Virginia | us-east-1 | US |
Califonia | us-west-1 | US |
Oregon | us-west-2 | US |
Sanpaulo | sa-east-1 | South America |
Canada | ca-central-1 | Canada |
Frankfurut | eu-central-1 | Europe |
Island | eu-west-1 | Europe |
London | eu-west-2 | Europe |
Paris | eu-west-3 | Europe |
Stockholm | eu-north-1 | Europe |
AWS CLI Output Format Sample
다음은 aws iam list-groups 명령어 실행 결과 예시이다.
json
aws iam list-groups --output json
{
"Groups": [
{
"Path": "/",
"GroupName": "Administrator",
"GroupId": "GROUP_ID_1",
"Arn": "arn:aws:iam::YOUR_ACCOUNT_ID:group/Administrator",
"CreateDate": "2021-01-22T04:34:11+00:00"
},
{
"Path": "/",
"GroupName": "Operator",
"GroupId": "GROUP_ID_2",
"Arn": "arn:aws:iam::YOUR_ACCOUNT_ID:group/Operator",
"CreateDate": "2021-02-04T06:39:10+00:00"
},
{
"Path": "/",
"GroupName": "SysAdministrator",
"GroupId": "GROUP_ID_3",
"Arn": "arn:aws:iam::YOUR_ACCOUNT_ID:group/SysAdministrator",
"CreateDate": "2021-01-22T04:34:43+00:00"
}
]
}
table
aws iam list-groups --output table
----------------------------------------------------------------------------------------------------------------------------------
| ListGroups |
+--------------------------------------------------------------------------------------------------------------------------------+
|| Groups ||
|+------------------------------------------------------+----------------------------+-------------+-------------------+--------+|
|| Arn | CreateDate | GroupId | GroupName | Path ||
|+------------------------------------------------------+----------------------------+-------------+-------------------+--------+|
|| arn:aws:iam::YOUR_ACCOUNT_ID:group/Administrator | 2021-01-22T04:34:11+00:00 | GROUP_ID_1 | Administrator | / ||
|| arn:aws:iam::YOUR_ACCOUNT_ID:group/Operator | 2021-02-04T06:39:10+00:00 | GROUP_ID_2 | Operator | / ||
|| arn:aws:iam::YOUR_ACCOUNT_ID:group/SysAdministrator | 2021-01-22T04:34:43+00:00 | GROUP_ID_3 | SysAdministrator | / ||
|+------------------------------------------------------+----------------------------+-------------+-------------------+--------+|
yaml
aws iam list-groups --output yaml
Groups:
- Arn: arn:aws:iam::YOUR_ACCOUNT_ID:group/Administrator
CreateDate: '2021-01-22T04:34:11+00:00'
GroupId: GROUP_ID_1
GroupName: Administrator
Path: /
- Arn: arn:aws:iam::YOUR_ACCOUNT_ID:group/Operator
CreateDate: '2021-02-04T06:39:10+00:00'
GroupId: GROUP_ID_2
GroupName: Operator
Path: /
- Arn: arn:aws:iam::YOUR_ACCOUNT_ID:group/SysAdministrator
CreateDate: '2021-01-22T04:34:43+00:00'
GroupId: GROUP_ID_3
GroupName: SysAdministrator
Path: /
text
aws iam list-groups --output text
GROUPS arn:aws:iam::YOUR_ACCOUNT_ID:group/Administrator 2021-01-22T04:34:11+00:00 GROUP_ID_1 Administrator /
GROUPS arn:aws:iam::YOUR_ACCOUNT_ID:group/Operator 2021-02-04T06:39:10+00:00 GROUP_ID_2 Operator /
GROUPS arn:aws:iam::YOUR_ACCOUNT_ID:group/SysAdministrator 2021-01-22T04:34:43+00:00 GROUP_ID_3 SysAdministrator /
Previous post
윈도우에서 DLL 파일을 찾을 수 없는 오류 해결 방법 (msvcp.dll, msvcr.dll 등등)Next post
AWS CLI [EC2] - 생성하기