Education*
Devops
Architecture
F/B End
B.Chain
Basic
Others
CLOSE
Search For:
Search
BY TAGS
linux
HTTP
golang
flutter
java
fintech
개발환경
kubernetes
network
Docker
devops
database
tutorial
cli
분산시스템
www
블록체인
AWS
system admin
bigdata
보안
금융
msa
mysql
redis
Linux command
dns
javascript
CICD
VPC
FILESYSTEM
S3
NGINX
TCP/IP
ZOOKEEPER
NOSQL
IAC
CLOUD
TERRAFORM
logging
IT용어
Kafka
docker-compose
Dart
AWS CLI 설치 및 credential 설정
Recommanded
Free
YOUTUBE Lecture:
<% selectedImage[1] %>
yundream
2023-11-04
2017-12-12
84131
![AWS CLI and credential](https://docs.google.com/drawings/d/e/2PACX-1vTTWSlZXl57J3VVnpcUy_Fpy6G0S4ejjEYknN8Adk-61xG8LfQFrIEmEKb7VMUc-3WXCZbshgqNQ9G_/pub?w=1204&h=407) ### AWS CLI AWS CLI(AWS Command Line Interface)는 터미널에서 AWS 서비스를 관리할 수 있도록 도와주는 AWS 관리 도구다. 웹으로 AWS의 관리를 도와주는 **AWS Management Console**의 터미널 버전이라고 생각하면 된다. 명령어 기반으로 빠르게 작업을 수행 할 수 있고, bash shell 등과 함께 사용해서 자동화를 할 수 있기 때문에 DevOps 및 클라우드 엔지니어는 반드시 사용해야 하는 필수 도구다. ### AWS CLI 인스톨 우분투 리눅스 23.10 환경에서 인스톨 했다. 아래 명령을 이용해서 awscli를 다운로드하고 설치스크립트를 실행한다. ```shell $ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" $ unzip awscliv2.zip $ sudo ./aws/install ``` 아래 명령을 사용하여 설치를 확인한다. ```shell $ which aws /usr/local/bin/aws $ aws --version aws-cli/2.13.31 Python/3.11.6 Linux/6.5.0-10-generic exe/x86_64.ubuntu.23 prompt/off ``` ### AWS Credential 설정 AWS CLI를 이용해서 AWS 자원을 관리하려면 **자격증명(credential)** 이 필요하다. AWS 자격증명을 위한 **secret key** 와 **access key** 를 사용하여 사용자가 누구인지 그리고 요청중인 AWS 자원에 대한 접근권한이 있는지 여부를 확인한다. AWS 관리자 콘솔에서 IAM User를 만들고 credential을 발급해 보자. 이 IAM user의 이름은 **s3_manager** 로 s3에 대한 모든 권한을 가진다. ##### IAM User 생성 ![IAM User 생성](https://docs.google.com/drawings/d/e/2PACX-1vRPU85LGSOBz5xZM35DPBJLtdmuO82X97EXKijwdHOmMsGjpJirsolbx0m0aEQOxJADZWdc8CXYJe4g/pub?w=918&h=327) "AWS > Identity and Access Management(IAM)"로 이동해서 **Creat user** 를 클릭한다. ![IAM User](https://docs.google.com/drawings/d/e/2PACX-1vRX1uuapEN-yAVbDbnywdfDXi5Wy5Wvmc8CCQexuW79X0zxY9r7UqJBdKuiaSYahbM17sIwg9qn3XrL/pub?w=975&h=453) User name에 s3_manager를 입력한다. 웹으로 접근할 필요가 없으니 "Provide user access to the AWS Management Console"는 체크하지 않는다. ![IAM User](https://docs.google.com/drawings/d/e/2PACX-1vQDMU7woOgGjz3dL92BB9vsiv1TdvI47NNkRPB4xy-GZSL8az8bfdcWbgavHgzfYKxnvLCnDSAx29uq/pub?w=933&h=533) 유저의 권한을 설정 한다. 권한을 부여하는 몇 가지 방법이 있다. "Add user to group"으로 그룹에 할당된 권한을 상속받는 방법이 있고 이를 권장하는데, 여기에서는 **"Attach policies directly"** 를 선택했다. "Attach policies directly"를 이용하면 각 유저에게 개별적으로 권한 정책(policy)를 설정할 수 있다. 이제 **"permissions plicies"** 에서 적용할 정책을 찾으면 된다. S3에 대한 모든 권한을 허용하는 **AmazonS3FullAccess** 를 선택했다. ![IAM User](https://docs.google.com/drawings/d/e/2PACX-1vTY6JlDuSLYy7awMwB94E8dPNpdxwcd-4b6Nf0aN-iXQno06FCmRpAtae6zzIRkvQC1r1UdulRo2cGC/pub?w=948&h=796) 마지막으로 Name 태그 설정(옵션)하고 **Create user**를 클릭하면 user가 만들어진다. #### Credential 설정 이제 아래와 같이 s3_manager user가 만들어졌을 것이다. ![AWS Credential](https://docs.google.com/drawings/d/e/2PACX-1vTI5PTA2ChRLrl3pqIHVZJ3TfzBwDJliRXWjoxkzi2cnMxz3Nutc1MLxNKIOKSuCONpIkMpdf_nBVkx/pub?w=1025&h=389) s3_manager user에 대한 **credential 설정**을 해보자. ![AWS Credentials](https://docs.google.com/drawings/d/e/2PACX-1vROTtQAcyAHypUQ8rZZNLcGOFyGDMETaqbxFvbukDcIbB7-TYNWjILX55Kdb65wUzbInA25BO4EQErG/pub?w=983&h=666) user 이름을 클릭하고 **"Security credentials"** 탭에서 **"Create access key"** 를 클릭한다. ![AWS Credentials](https://docs.google.com/drawings/d/e/2PACX-1vTVenPkmber3MF06pdox-J_izObMjUKpR9CpJUkApXIFnZNj_u5dpO9Lz6FvD8nqYpcx7474pwdumLq/pub?w=768&h=349) 사용사례에 따라서 다양한 방식의 access key를 생성할 수 있는데, AWS CLI 작업이므로 **Command Line Interface (CLI)** 를 선택하면 된다. ![AWS Credential](https://docs.google.com/drawings/d/e/2PACX-1vSUPP7MkidF_dnSMuknRhmPgLeP2EW22wLGBAQo1vbGGsDrm_WhztvRL7tQ5dHfl0dyZkMaLQM-KY9S/pub?w=762&h=329) access key 설명을 작성하고 **Create access key**를 클릭하면 credential을 만들 수 있다. ![AWS Credential](https://docs.google.com/drawings/d/e/2PACX-1vRIC4cKzW-LFCU7HOU4WDraa6ogiwcvwG3Z4r2aQaeANrkQZPB27Qo7elbeMPTRqr5YK50-KVsvkXRl/pub?w=777&h=626) **Download .csv file**을 누르면 secret key 와 access key 가 담긴 파일을 다운로드 할 수 있다. 일단 한번 만들고 나면, secret key를 확인할 수 있는 방법이 없으니, 반드시 다운로드하거나 "show"를 눌러서 출력된 secret key를 어딘가에 저장해둬야 한다. 파일의 내용은 아래와 같다. 아래의 값들을 사용해서 credential 설정을 할 수 있다. ``` Access key ID,Secret access key AKIAQMYACCESSSKEY,GnufZFtsnienfienfMYSECRETKEY ``` ### 개발 PC에 credential 설정하기 credential 파일은 **$HOME/.aws** 디렉토리 밑에 위치한다. aws configure 명령을 이용해서 credential 파일을 만들 수 있다. ``` $ aws configure AWS Access Key ID [None]: AKIAQMYACCESSSKEY AWS Secret Access Key [None]: GnufZFtsnienfienfMYSECRETKEY Default region name [None]: ap-northeast-2 Default output format [None]: json ``` Credential 은 **config** 파일과 **credentials** 두 개의 파일로 구성된다. $HOME/.aws 디렉토리에 이 두개의 파일이 만들어진 걸 확인할 수 있을 것이다. ```shell $ cd $HOME/.aws $ cat config [default] region = ap-northeast-2 output = json ``` * **default**는 profile 이름이다. 사용자는 하나 이상의 credential을 가질 수 있는데, profile 이름을 이용해서 이들을 구분할 수 있다. * region: AWS CLI 명령을 사용할 때 적용될 기본 region 이다. * output: AWS CLI 명령 결과의 포맷이다. **credentials** 파일에는 access key와 secret key를 설정한다. ``` [default] aws_access_key_id = AKIAQMYACCESSSKEY aws_secret_access_key = GnufZFtsnienfienfMYSECRETKEY ``` * aws_access_key_id: access key * aws_secret_access_key: secret key 이제 aws cli로 실제 s3에 접근할 수 있는지 확인하면 된다. ```shell $ aws s3 ls 2023-10-30 09:42:35 joinc-site-image ``` ### 두 개 이상의 profile 관리 EC2 관리를 위한 새로운 credential을 만들었다고 가정해보자. 이 유저는 이제 두 개의 credential을 관리하게 되는데, 아래와 같이 credential 파일을 만들면 된다. **config** ``` [default] region = ap-northeast-2 output = json [ec2] region = ap-northeast-2 output = json ``` **credentials** ``` [default] aws_access_key_id = AKIA5E_S3AdminAccessKey aws_secret_access_key = HWNt_S3AdminSecretkey [ec2] aws_access_key_id = AKIA_EC2AccessKey aws_secret_access_key = bE7JdO_EC2SecretKey ``` 만약 cloudweatch 관련 api를 호출하고 싶다면 "--profile" 옵션을 이용해서 profile 이름을 설정하면 된다. ```shell $ aws ec2 describe-instances --instance-ids i-1234567890abcdef0 --profile ec2 ``` profile을 명시하지 않을 경우 **default** 프로파일이 적용된다. ### Profile 환경변수 관리 여러 개의 profile을 관리 할 경우 매번 --profile 옵션을 사용하는 것은 귀찮은 일이다. 환경변수를 이용해서 profile을 간단히 관리 할 수 있다. Profile 관련해서는 두 가지 **환경변수**가 있다. * AWS_PROFILE: --profile이 없을 때, default 대신 환경변수의 값으로 설정된다. * AWS_DEFAULT_PROFILE: --profile이 없을 때 기본으로 호출할 프로파일 이름이다. 예를 들어 아래와 같이 환경변수를 설정했다면 ``` $ export AWS_PROFILE=ec2 ``` ec2 프로파일로 명령이 실행된다. ### aws-shell 2023년 현재 aws는 200개가 넘는 서비스들을 제공한다. 이에 따라서 aws cli도 수백개의 명령을 제공하는데 메뉴얼을 보면서 사용하는게 보통일이 아니다. 명령 자동완성을 지원하는 [aws-shell](https://github.com/awslabs/aws-shell)이라는 툴이 있으니 사용해보도록 하자. ![aws shell](https://drive.google.com/uc?export=view&id=1BVw2BM4Lr0zbNSULmc_ndA2Pl2BNijmg)
Recent Posts
GPT를 이용한 Reranker 테스트
5분만에 만들어보는 Streamlit 챗봇
Let's encrypt로 SSL 인증서 관리하기
Upscayl을 이용한 이미지 업스케일링
스테이블 디퓨전 설치 및 사용해보기
Elasticsearch 설치
AI / LLM에 대한 친절한 소개
SLA 다운타임 계산기
Docker로 GitLab 설치하기
Ubuntu Linux에 NVIDIA 드라이버 설치
Archive Posts
Tags
aws
cli
iac
Copyrights © -
Joinc
, All Rights Reserved.
Inherited From -
Yundream
Rebranded By -
Joonphil
Recent Posts
Archive Posts
Tags