AWS CLI 활용
AWS CLI 활용
AWS CLI 활용
- 이번 시간에는 AWS CLI을 활용하는 방법에 대해 알아보도록 하겠습니다.
- AWS CLI의 대한 개념과 설치는 AWS CLI를 참고해주세요.
AWS CLI 기본설정
- 먼저 여기서는 Window 10, Powershell에서 진행하도록 하겠습니다.
- Linux나 Mac 등 타 OS도 AWS CLI가 설치되어 있으면 모두 동일하니 똑같이 진행하셔도 문제없습니다.
- 먼저 프롬프트 혹은 터미널을 실행 후, aws configure을 입력합니다.
- 그러면 엑세스 키와 시크릿 키, 리전 그리고 파일형식을 입력하는 값이 나오는 데, 만약 전 시간에서 사용자 계정을 만들면서 학습했던 프로그래밍 엑세스 방식이 생각나신다면, 한결 수월하게 해결하실 수 있습니다.
- 혹시 모르시거나 깜박하신 분들은 AWS IAM, AWS 사용자 계정 생성을 참고해주세요.
$ aws configure
# aws 인증 값 등록
AWS Access Key ID [ AcceseeKeyId ]: *********
# 계정의 AccessKeyId를 입력
AWS Secret Access Key [ SecretAccessKey ]: ********
# 계정의 SecretAccesskey를 입력
Default region name [ Region ]: ap-northeast-2
# 리전의 이름을 입력
Default output format [ File format ]: json
# 파일의 포맷 형식을 입력
$ aws ec2 describe-security-groups
# 확인 ( 차후에 명령어에 대해 설명드리겠습니다. )
AWS CLI 사용방법
- 그럼 이제 본격적인 CLI 사용방법에 대해 알아보도록 하겠습니다.
profile을 설정
- 위에서 configure을 통해 aws CLI을 사용하기 위한 인증을 마쳤습니다.
- 하지만 만약 인증을 마친 유저에 대한 권한이 다르다면, 또 다른 계정을 사용해야 한다면 어떻게 해야할까요?
- 이를 위해 AWS CLI에서는 –profile 명령어를 통해 별도이 설정파일로 저장할 수 있습니다.
$ aws configure --profile [ User ]
AWS Access Key ID ... : ***
...
Default output format ... : ***
# 개별 설정파일 등록
$ aws [ 명령어 ] --profile [ User ]
$ [ User ]의 권한으로 명령어를 실행
- 위의 명령어를 통해 [ User ]의 profile을 지정 후 저장 후, –profile [ User ] 옵션을 통해 사용합니다.
- 등록한 모든 설정파일은 보통 사용자계정 폴더 내부의 .aws에 생성됩니다.
AWS CLI 기본적인 명령어 형태
- AWS CLI의 기본적인 명령어 형태는 다음과 같습니다.
$ aws [ 서비스 이름 ] [ 리소스 조작 명령어 ]
-------------------------------------------------------------------------------------------------
옵션 | 처리
-------------------------------------------------------------------------------------------------
--profile | 설정한 profile로 명령어를 실행합니다.
--region | 리전을 지정합니다.
--output | 출력 형식을 지정합니다.
--filters | 참조 계열 명령어를 사용할 때, 검색 조건을 지정해서 필터링 합니다.
--query | 실행 결과 내용을 압축해서 출력합니다.
Region과 output 옵션을 사용한 검색 조건 지정
$ aws ec2 describe-security-groups --region ap-northeast-2 --output [ json, text, table ]
# ap-northeast-2 리전에서 각 형식으로 ec2 보안그룹에 대한 정보를 참조
- 각 형식의 차이점을 확인해보세요.
filters 옵션을 사용한 검색 조건 지정
- –filters 옵션을 사용하면 참조 계열 명령어를 실행할 때, 검색 조건을 지정할 수 있습니다.
- 지정할 수 있는 –filters 옵션의 필터 이름은 서비스, 리소스에 따라 차이가 있어 AWS CLI 명령어 레퍼런스를 참고해주세요..
$ aws [ 서비스 이름 ] [ 리소스 조작 명령어 ] --filters "Name=[ 필터 이름 A ], Values=[ 조건A1 ]" "Name=[ 필터 이름 B ], Values=[ 조건B1 ], [ 조건B2 ]"
- 위와 같이 –filters의 사용방법은 1개의 필터에 큰 따옴표(")를 감싸고, “Name=“에 필터이름, “Values=“에 필터 이름에 대응하는 조건을 작성하는 것으로, 쉼표(,)를 통해 복수의 조건을 작성하는 것 또한 가능합니다.
$ aws ec2 describe-instances --filters "Name=private-ip-address,Values=10.0.0.10"
# 프라이빗 ip가 10.0.0.10인 ec2를 참조
$ aws ec2 describe-instances --filters "Name=instance-type,Values=t2.medium, m3.medium"
# 인스턴스의 타입이 t2.medium, m3.medium인 인스턴스를 참조
$ ec2 describe-instances --filters "Name=tag:Project,Values=AWS Training"
# 태그의 값이 AWS Training인 인스턴스를 참조
$ aws ec2 describe-instances --filters "Name=instance-type,Values=t2.medium, m3.medium" "Name=tag:Project,Values=AWS Training"
# 2번째 조건과 3번째 조건을 함께 사용하는 인스턴스 참조
$ aws ec2 describe-images --filters "Name,Values=SampleAMI2020*"
# AMI images 중에서 이름이 SampleAMI로 시작하는 모든 인스턴스를 참조
query 옵션을 사용한 출력 결과 압축
- query 옵션을 사용해서 명령어를 실행 할 때 실행 결과를 압축할 수 있습니다.
- filters와 마찬가지로 각 서비스에 따라 사용할 수 있는 query가 다르며 가능한 명령어들은 AWS CLI 명령어 레퍼런스를 참고해주세요.
$ aws [ 서비스 이름 ] [ 리소스 조작 명령어 ] --query '[ 쿼리 이름 ( 1계층 )[].쿼리 이름(2 계층)....']
- query는 계층 구조로 되어 있습니다. 따라서 AWS CLI 명령어 레퍼런스를 참고해서 계층 구조와 출력할 항목을 query 옵션으로 지정해야 합니다.
- query은 추가로 json, table 형식으로 출력할 때는 쿼리 이름이 키 ( 별칭 )을 붙여야 하며, –filter와 마찬가지로 조건을 지정할 수 있습니다. ( <, <=, ==, >=, >, !=)
$ aws ec2 describe-instances --query 'Reservations[].Instances[].InstanceId'
# 모든 인스턴스의 인스턴스 ID를 참조
$ aws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId,PrivateIpAddress]'
# 모든 인스턴스의 인스턴스 ID, 프라이빗 IP를 참조하는 방법
$ aws ec2 describe-instances --query 'Reservations[].Instances[?InstanceType='t2.small'].[InstanceId, PrivateIpAddress] --output json
# 인스턴스 유형이 t2.small인 것의 인스턴스 ID, 프라이빗 IP를 json형식으로 출력
$aws ec2 describe-instances --query 'Reservations[]. Instances[?InstanceType=='t2.small'].{IDLInstanceID,IP:PrivateIpAddress,Name:Tags[?Key=='Name'].Value}' --output json
# 인스턴스 유형이 t2.small인 것의 인스턴스 ID, 프라이빗 ID에 ID, IP라는 키를 붙여 JSON 형식으로 출력하는 방법
- 지금까지 기본적인 AWS CLI에 명령어에 대해 알아보았습니다.
- 하지만 아직, 인스턴스나 VPC, 각종 서비스에 대해 공부를 하지 않아 아직까지는 간단하게 어떻게 작동되는 지, 어떠한 형식을 가지고 있는 지만 익혀두시면 충분합니다.
마지막 수정일자