본문 바로가기

프로그래밍/배포

아마존웹서비스(AWS) 기초 이해하기

aws

AWS 알아보기

OS : Ubuntu 16.04 LTS

이번 포스팅에서는 아마존클라우드웹서비스(AWS)에 회원가입을 하고, 간단하게 로컬환경에 있는 폴더를 아마존 서버에 올리는 것까지 연습하는 것을 목표로 한다. AWS를 처음 보면 웹 홈페이지가 굉장히 딱딱해보이고, 절차도 생각보다 복잡하다.

이 포스팅을 위해서 계정을 두 번 갈아 엎었다. 세번째 시도해서야 내 생각대로 조금씩 동작하는 느낌을 받을 수 있었다. 사실 처음에는 인스턴스라는 말이 굉장히 딱딱해보이는데, AWS에 배정받는 새로운 컴퓨터 한대라는 느낌만 가져가도 충분히 성공한 포스팅이라고 생각한다.

아마존 웹서비스와 클라우드

클라우드의 핵심적인 아이디어는, 인터넷으로 또 다른 컴퓨터(크고, 복잡하고, 성능이 좋은)를 연결해 사용할 수 있는 것이다. 아마존 웹서비스는 아마존이 제공하는 클라우드 서비스(줄여서 AWS)를 이용해서 컴퓨터 작업을 진행할 수 있다.

지역과 가용구역

아마존 region
지역(region) : AWS가 어느 위치에 있는가?. 위치가 가까울수록 속도가 빨라질 확률이 높다. 전에는 일본의 Region을 이용했지만 2016년부터 한국이 12번째 region으로 선정되면서, 지역을 서울로 선택할 수 있다.

가영영역(availiability zone) : 지역 다음으로 살펴봐야 할 것이 가용영역이다. 지역 내에는 또 다시 여러 개의 데이터센터로 나뉜다. 혹시 모를 상황에 대비해 예비 센터가 존재한다. 이 가용영역끼리는 전용선으로 이어져 있어서 데이터의 송수신이 가능하다. (지역간도 가능하지만 느림)

EC2 소개

EC2(Elastic Compute Cloud)는 독립된 컴퓨터를 제공해주는 상품이라고 생각하면 된다.

1. 회원가입

스크린샷, 2017-06-29 20-58-20
첫 메인페이지. 인터페이스가 참...
처음 이용한다면 새 사용자입니다를 클릭한다.

스크린샷, 2017-06-29 21-32-32

모든 개인정보는 영어로 입력해야 통과가 가능하다.

스크린샷, 2017-06-29 21-34-12

해외 결제가 가능한 카드 번호를 입력하면 1.5달러 정도가 통장에서 빠져나간다. 유효한 카드번호인지 확인하는 것이니 나중에 다시 돌려준다. 다음 단계에서 ARS 인증을 받는다.

스크린샷, 2017-06-29 21-36-50

전문적인 개발자가 아니라면 기본을 선택한다.

2. 가격정책

스크린샷, 2017-07-01 20-26-16

AWS 프리티어의 경우 1년 동안 매달 750시간을 무료를 제공한다. 한달 내내 켜놔도 720시간 남짓이니 사실상 공짜이다.

스크린샷, 2017-07-01 20-30-12

요금제를 살펴보면 지역에 따라, 운영체제에 따라, 인스턴스 타입에 따라 가격이 달라진다.

스크린샷, 2017-07-01 20-36-08

요금제 역시 다양하게 세분화되어있다.

  1. 온 디맨드 인스턴스(On-demand)는 우리가 필요할때마다 인스턴스를 끄고, 킬 수 있는 형태의 서비스를 의미한다.

  2. 예약 인스턴스는 할인권 개념이다. 만약, 우리가 운영할 서비스가 1년 동안 끌 필요가 없다면 경우에 따라서는 더욱 저렴하게 서비스를 이용할 수 있다. 3년 동안 서비스 혜택을 받을 수 있다.

  3. 스팟 인스턴스를 구입하면, 놀고있는 컴퓨터가 많으면 가격이 저렴해지고, 놀고 있는 컴퓨터가 없으면 가격이 높아질 수 있는 개념이다. (주가처럼 가변적인 가격정책을 가져간다.)

3. 인스턴스 생성하기

스크린샷, 2017-06-29 21-40-58

첫 메인화면에서 EC2(Elastic Computer Cloud)를 검색한 뒤 EC2를 클릭한다.
스크린샷, 2017-06-29 21-44-14

접속을 하고나면, 상단 오른쪽 부분에서 Asis Pacific(Seoul)로 바꿔준다.
그리고 Create Instance를 클릭해 AWS 인프라 위에 컴퓨터 하나(인스턴스 하나)를 생성한다.

2-1 가상머신 선택(AMI, Amazone Machine Image)

스크린샷, 2017-07-01 20-13-19
위에서는 EC2 서비스를 이용해 새로운 컴퓨터를 배정받을 수 있다. 인스턴스를 생성하려고 하면 맨 처음화면에서 운영체제를 설정할 수 있다. Free tier eligible이라고 써져있다면 1년 동안 무료 사용이 가능하다. 여러 아마존 가상 머신들이 있지만 본 포스팅에서는 서버 운용에 적합한 Ubuntu Server 16.04를 선택했다.

2-2 인스턴스 타입 선택 (Instance Type)

스크린샷, 2017-07-01 20-14-55
인스턴스는 컴퓨터 하나라고 생각하면 된다. Instance Type은 컴퓨터의 사양이라고 생각하면 된다. 이 역시 Free tier eligible이라고 써져있는 것이 1년간 무료로 제공되는 인스턴스이다. 앞으로 새롭게 배정받은 컴퓨터를 인스턴스라고 표현하겠다.

Family는 인스턴스의 목적에 따라 나뉜다. 어떤 것은 용량에 강점을 갖고, 어떤 것은 GPU에 강점을 갖는다.

vCPUSs는 몇 개의 CPU인가? 여기서 v는 가상화(virtual)를 의미한다.

Mememory는 몇 기가바이트의 메모리를 갖고 있는지를 의미한다.

network Performance는 말 그대로 네트워크의 성능이다.

자신의 상황에 맞게 사양을 알맞게 선택하면 된다.

2-3 인스턴스 세부 환경 설정 (Configure Instance Details)

스크린샷, 2017-07-01 20-41-13

Number of Instances 대여받을 인스턴스 수를 설정할 수 있다.
Purchasing Option에서는 가변적인 요금제를 갖는 스팟 인스턴스를 선택할 수 있다.
Network, Subnet, Auto-assign Public IP를 통해서 자신의 네트워크환경을 커스텀 할 수 있다.

Shutdown Behavior는 우리가 만든 운영체제를 셧다운시키면 Stop시킬 것인지, Terminate할 것인지 정할 수 있다. Stop을 사용하면 저장장치에 해당하는 비용만 해당하고, Terminate를 설정하면 데이터가 날라갈 수 있다.
Enable termination protection을 설정하면 실수로 인스턴스를 삭제하는 것을 방지할 수 있는 기능이다.
Monitoring은 인스턴스의 상태(CPU, 메모리점유율)를 더 디테일하게 저장할 수 있도록 도와준다. 단, 추가 요금(additional charges)이 적용된다.

2-4 스토리지 추가하기 (Add Storage)

스크린샷, 2017-07-01 20-45-31

아마존에서는 스토리지를 EBS라는 말을 사용한다. 이는 Elastic Block Store의 줄임말로 일종의 하드디스크라고 생각하면 된다.

Size는 이러한 EBS의 용량을 정할 수 있다. 30GB까지는 무료다. 만약 리눅스를 만들면 8GB, 윈도우를 만들면 30GB로 세팅된다.

Volume Type은 우리가 만든 저장장치가 어떤 형식으로 할지 정하는 것이다. 아무래도 SSD가 훨씬 빠르다. Provisional IOPS는 우리가 속도를 정할 수 있는데, 이 속도를 높게 잡을수록 가격이 뛴다.

Delete on Termination이 체크되어있으면 저장장치도 삭제된다(하드디스크도 같이 폐기되는 개념). 체크가 해제되어있으면 저장장치는 남아있다. 나중에 인스턴스를 폐기해야 하는데, 체크가 해제되어있으면 남아있는 저장장치에 대해서는 요금이 과금될 수 있다.

EBS의 특징은 아래와 같다.

  1. 필요한 용량에 맞게 구입 할 수 있다. 이를테면 EC2 인스턴스를 웹서버의 용도로만 쓰고 파일 저장은 S3를 사용한다면 넉넉 잡고 1기가바이트만 구입하면 된다.

  2. 필요에 따라서 즉시 생성하고, 제거 할 수 있다.
    사용한 만큼 과금 되는 종량제다. 자세한 내용은 설명서의 비용예측을 참고한다.

  3. 내부적으로 데이터를 실시간 복제하고 있기 때문에 하드디스크에 비해서 데이터를 잃어버릴 확률이 현저히 낮다.

  4. 스냅샷 기능을 제공해서 EBS의 현재 상태 그대로 보존 할 수 있다.

  5. CloudWatch를 통해서 EBS의 통계를 열람 할 수 있다.

  6. EC2 인스턴스를 제거해도 EBS는 독립적이기 때문에 데이터가 유지 된다.

2-5. 태그 추가하기 (Add Tags)

스크린샷, 2017-07-01 20-52-43
우리가 인스턴스를 만들 때, 만든 인스턴스가 어떤 역할을 하는지, 누가 관리를 하는지의 태그를 달아줄 수 있다.

2-6 보안그룹 설정하기 (Configure Security Group)

스크린샷, 2017-07-01 20-54-07
인스턴스에 접근하는 권한을 지정할 수 있다. 네트워크를 통해 누가 접속할 수 있게 할건지 일종의 방화벽 역할을 한다. 네트워크에 대한 지식이 필요한 부분이다. 만약 지식이 조금 부족하다고 느껴지면 여기서 강의를 들을 수 있다.

스크린샷, 2017-07-01 20-56-49
인스턴스를 새로 만드는 경우라면 Create a new security group을 선택하고, 그룹 이름과 설명을 달아줄 수 있다.

그리고, Security Group에 대해 정책을 설정할 수 있다. 우리가 만든 인스턴스에 접속할 수 있는 여러가지 방법들이 있다. 원격접속도 있고, FTP를 이용해 파일 업로드를 위한 접속도 있고, 일반 사용자들이 접속하는 경우 등 여러가지 방법이 있다.
스크린샷, 2017-07-04 00-01-48
모든 경우의 접근을 허용하면 문을 활짝 열어놓는거나 다름없으므로, Type을 통해 접근 제한을 가할 수 있다. SSH(Secure Shell)은 원격제어를 통해 접근하는 경우(유닉스, 리눅스 계열)의 방식이다. 우리가 만든 인스턴스가 리눅스 계열이라면 SSH를 설정해줘야 한다. Source에서 everywhere는 모든 SSH의 접속을 허용한다는 의미다. 만약 접근 제한을 가하려면 My IP를 지정해줘야 한다.

만약 인스턴스를 웹서버로 활용한다고 한다면, 다른 사람들의 접속 역시 허용해야 한다. 이 경우에는 Add Rule을 눌러서 HTTP 타입을 설정한 뒤 80번 포트를 이용해 접근하도록 해야 한다.

만약 Window 환경의 인스턴스라면 RDP타입을 사용해서 원격제어가 가능하다.

2-6. 인스턴스 비밀번호 생성 (Key Pair)

스크린샷, 2017-07-01 21-05-46

키 페어를 설정하면, AWS가 비밀번호를 만들어서 다운로드 받게 만들어준다. 그리고 우리가 생성한 인스턴스에 비밀번호를 심어놓는다. 우리가 인스턴스에 접속하려고 한다면, 이 비밀번호를 같이 들고 통과해야 한다.

위에서 Launch를 누르게 되면 key pair를 생성하라고 한다.
인스턴스를 처음 만든다면 Download Key Pair를 눌러서 받은 .pem 확장자의 파일을 .ssh 폴더로 옮겨주자.

스크린샷, 2017-06-29 21-55-28
최종적으로 .ssh라는 폴더 안에 practice.pem을 옮겨놔야 한다. 다시 설정창으로 돌아간 뒤, Choose an existing key pair를 선택해 방금 받은 key pair를 선택하자.

스크린샷, 2017-06-29 21-59-08
그러면 Instance를 클릭해보면 AWS 자원위에 컴퓨터 하나가 올라갔다고 볼 수 있다.

2-7. 리눅스에서 웹서버 사용

만약 다른 사용자에게 웹페이지를 보여주려고 한다면, Security Group을 지정해줘야 한다.
스크린샷, 2017-07-01 21-21-02
80번 포트가 지정되어 있지 않다면 사용자들은 웹서버로 접속할 수 없다. 만약 설정되어 있지 않다면, Security Group - Inbound에서 Type이 HTTP이고 Port Range가 80번을 설정해줘야 한다.

3. AWS 인스턴스 연결하기

스크린샷, 2017-06-29 22-05-25
이제 AWS에 컴퓨터를 하나 올려놨으니, 이 컴퓨터(인스턴스)에 연결할 수 있다.
이 단계에서 아까 옮겨놓은 .pem 파일과 방금 생성한 인스턴스의 Public DNS가 쓰이게 된다.

ssh -i [.pem 파일의 전체 경로] [가상머신 고유 유저명]@[접속할 인스턴스의 Public Domain]
 
>>> ssh -i ~/.ssh/practice.pem ubuntu@ec2-52-78-17-137.ap-northeast-2.compute.amazonaws.com

[가상머신 고유 유저명]은 가상머신 설정(AMI)에 따라 달라진다.
Amazon Linux : ec2-user
Ubuntu : ubuntu 또는 root
Centos : Centos
Fedora : ec2-user

스크린샷, 2017-06-29 22-12-10
yes를 입력

스크린샷, 2017-06-29 22-15-12
yes를 입력하면 Permission 0664 에러를 일으킨다.
우리가 .ssh 폴더로 가져온 .pem의 권한을 수정해줘야 한다.

스크린샷, 2017-06-29 22-18-30
practice.pem의 권한을 바꿔줘야 한다.

>>> chmod 400 practice.pem

- <파일타입> rwx <user권한> rwx <group권한> rwx <other권한>

4(read) : 읽기 권한
2(write) : 쓰기 권한
1(execute) : 실행 권한

스크린샷, 2017-06-29 22-20-49
chmod 400 이라면, (user)에게 읽기 권한만 준 것을 의미한다. (즉, -r--------)

스크린샷, 2017-06-29 22-33-26
chmod 700 이라면, (user)에게 모든 권한을 준 것을 의미한다. (즉, -rwx------)

스크린샷, 2017-06-29 22-32-57
chmod 777 이라면, (user, group, other)에게 모든 권한을 준 것을 의미한다. (즉, -rwxrwxrwx)

스크린샷, 2017-06-30 00-35-11
이제는 아마존 쉘 접속이 가능하게 되었다. 다시 로컬환경으로 돌아오고자 한다면 exit 명렁어를 입력한다.

그러나 아직 문제점이 남아있다. ssh -i ~/.ssh/[].pem ubuntu@[public DNS] 라는 길고 험난한 명령어를 처야 AWS의 인스턴스로 연결이 가능하다. 이러한 비효율적인 불상사를 막기 위해 alias 설정을 한다.

본인은 zsh를 쓰고 있기 때문에 vim ~/.zshrc로 들어가서 맨 하단에 alias설정을 해주었다.
alias 설정은 포스팅 하단 번외에서 다루도록 하겠다.

4. 인스턴스 연결 후 세팅

지금까지 우리는 컴퓨터 자원(인스턴스)을 만들고, 이를 AWS 서버에 올리고, 연결까지 했다. 이제 우리는 AWS 위에 있는 컴퓨터를 쓰려고 한다. 인스턴스 연결에 성공했다면 순정이나 다름없는 컴퓨터 한 대를 쓰게되는 것이다.

이번 파트에서는 각자 환경에 맞는 세팅을 실시하면 된다. 본인은 python-pip, zsh, oh-my-zsh, pyenv, tree를 설치했다.

python-pip 설치

sudo apt-get install python-pip

zsh 설치

sudo apt-get install zsh

oh-my-zsh 설치

sudo curl -L http://install.ohmyz.sh | sh

설치 후에 AWS 인스턴스 연결을 해제한 뒤(exit) 다시 들어오면 셸이 변경된다.

쉘 변경에서 "Password: chsh: PAM: Authentication failutre" 라는 오류가 발생한다면 아래와 같은 명령어를 입력한다. 

$ sudo chsh ubuntu -s /bin/zsh

pyenv requirements 설치

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev
 libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils

pyenv 설치

curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

pyenv 설정 .zshrc에 기록

스크린샷, 2017-06-30 01-11-11

>>> vim ~/.zshrc
export PATH="/home/ubuntu/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

처음에 python --version을 치게되면 Python 2.7.12다.
pyenv install 3.6.1을 설치한 뒤 pyenv versions를 해보면 system이 메인 python이라면, pyenv local 3.6.1을 실행해 로컬폴더의 파이썬 환경을 3.6.1버전으로 바꿔준다.
스크린샷, 2017-06-30 02-15-05
그리고 다시 pyenv versions를 해보면 * 모양이 옮겨진 것을 확인해야 한다.

tree 설치

sudo apt-get install tree

5. 로컬 환경 폴더를 AWS 인스턴스로 옮기기

5-1 AWS 인스턴스 환경

스크린샷, 2017-06-30 01-20-00
AWS 인스턴스 연결후, 가장 상위 폴더로 올라가보면 srv이라는 폴더가 있다. 이 폴더에는 서비스 디렉토리의 준말로, 주로 ftp, http, cvs 등의 데이터가 존재한다. 로컬 환경이나 AWS 인스턴스 환경은 cdrom 폴더만 제외하고는 구조가 똑같다.

스크린샷, 2017-06-30 01-25-20
아무튼, 로컬 환경에서 AWS 인스턴스로 복사하고자 한다면 이 srv 폴더의 권한을 수정해야 한다.
이때, SCP(Secure Copy)라는 개념이 들어가는데 자세한 내용은 번외에서 설명한다.

sudo chown -R ubuntu:ubuntu /srv/

스크린샷, 2017-06-30 01-25-40
폴더의 소유권한(chown)을 ubuntusrv 폴더 안까지 모두(-R 옵션) ubuntu로 바꿔준다.

5-2 로컬환경으로 돌아가야 한다.

AWS 인스턴스 내 복사하고자 하는 폴더의 권한을 변경하는데 성공했다면, 다시 로컬환경으로 돌아가야 한다. 이때 리눅스의 서버와 서버간 파일 또는 폴더 복사는 scp라는 명령어를 이용하게 된다.

scp [복사하려는 파일 위치 및 이름] 공백한칸 [서버2의 특정계정 @ 서버2의 ip주소 : 서버2의 특정 위치]

간단하게 쓰려해도, 디렉토리의 경로 전체를 써줘야하기 때문에 길어질수밖에 없다.

scp -i ~/.ssh/practice.pem -R /home/[myDir]/[myProject] ubuntu@[Public DNS]:srv/practice

실제 예제를 살펴보면 위와 같다. 파일의 폴더복사 역시 .ssh폴더내에 key를 통해서 이루어진다는 것과 -R 옵션을 기점으로해서 왼쪽이 복사하려는 폴더(파일) 위치, R 옵션 오른쪽이 계정@DNS:복사 위치로 나뉜다는 것을 볼 수 있어야 한다.

이 역시 명령어가 길어지기 때문에, alias 설정을 할 수 있다. alias에 관해서는 번외에서 설명하도록 하겠다.

VPC <--- Security GROUP <-- EC2 <-- Django(런서버))

직접 겪은 에러

1. Permission Denied

>>> ssh -i ~/.ssh/practice.pem ubuntu@ec2-13-124-157-186.ap-northeast-2.compute.amazonaws.com
 
The authenticity of host 'ec2-13-124-157-186.ap-northeast-2.compute.amazonaws.com (13.124.157.186)' can't be established.
ECDSA key fingerprint is SHA256:zBtOthdm0GB2Yhzzg3VtJTpZ/rno0B5GEP7a2ogxHoI.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added
 
'ec2-13-124-157-186.ap-northeast-2.compute.amazonaws.com,13.124.157.186' (ECDSA) to the list of known hosts.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

모든걸 똑같이 쳤는데, Permission Denied가 떠서 당황했다. 구글링해도 안나오고, 수십번을 확인해도 나오지 않은 에러였다. 내가 저지른 실수는 AWS 인스턴스를 만들 때, 가상환경 이미지를 잘못설정했기 때문이다.

스크린샷, 2017-06-29 21-46-40
서버 인스턴스를 만들때 가상환경 이미지를 ubuntu가 아니라 red hat으로 만들었기 때문에 발생했던 문제였다. 이후에는 정상적으로 작동했다. 참고로 가상환경 이미지에 따라서 user 이름이 달라질 수 있으니 확인해야 따로 확인해야 한다.

이 블로그를 참고해 AWS 인스턴스 내 쉘 환경(vim ~/.vimrc)을 수정했다.

2. 아마존 쉘 내 한글깨짐 문제

스크린샷, 2017-06-29 16-40-33

3. 로컬에서 AWS인스턴스로 파일 복사할때 발생하는 문제

스크린샷, 2017-06-29 20-11-16
AWS 인스턴스 내 복사하고자 하는 폴더의 권한을 변경해야 한다.
본문 5-1에서 문제를 해결하는 방법이 나와있다.

번외

1. AWS CLI를 통한 인스턴스 연결법

AWS CLI(Command Line Interface)는 명령줄을 통해 AWS를 제어하고, 스크립트를 자동화할 수 있는 인터페이스를 제공한다.

pip install awscli

위 명령어로 설치 가능하다.

aws ece get-console-output --instance-id [My instance-id]
>>> aws ec2 get-console-output --instance-id i-0XXXXXXXXXXXXXXXX

우리가 만든 서버 인스턴스는 콘솔을 출력할 수 있는 모니터가 없다.get-console-output의 명령어는
퍼블릭키를 hash를 이용해 짧게 만들어준 서버에서 주는 지문값이랑 같은지 비

AWS CLI 에러 해결법

스크린샷, 2017-06-29 23-48-56
아마, 높은 확률로 위와 같은 에러 메시지를 만나게 될 것이다. AWS CLI를 설치하고 처음 해야 할 일은 Access KeySecret Access Key 그리고 기본 region출력 format을 설정하는 것이다. 참조(AWS 한국블로그)

이때, 접근 키(Access Key, Secret Access Key)는 Root 권한이 아닌, IAM(Identiy & Access Management)라는 개별 서비스 권한 사용자를 생성하고 만든 키를 사용하는 것이 안전하다.

IAM을 통한 키 생성

스크린샷, 2017-06-29 23-54-33
먼저, 메인 페이지로 돌아가서 IAM을 검색하자.

스크린샷, 2017-06-30 00-01-12

왼쪽 사이드바에 Users를 클릭하고, 유저를 추가하자. 그러면 4단계를 거친다.

1단계 user 세부사항 설정
스크린샷, 2017-06-30 00-01-41

접근타입은 Programmatic access을 체크해야 Access KeySecret Access Key를 발급해준다. Secret Access Key는 한번 확인하고나면 다시 확인할 수 없기 때문에 생성 후에 잘 복사해두어야 한다.

2단계 user에 대한 권한 설정
스크린샷, 2017-06-30 00-10-45
말 그대로, 우리가 만든 user에게 권한을 어디까지 줄 것이냐?를 선택하는 항목이다.
여기서는 AmazoneEC2FullAccess에만 항목을 체크한다.

3단계, 4단계 검토 및 완성
스크린샷, 2017-06-30 00-12-49
우리가 만든 user에 대해 검토를 하고, 4단계에서는 완료페이지다. 만든 유저가 생성되면 Success라는 메시지를 출력한다. 그리고 우리가 원했던 Access keySecret Access Key가 나온다.

AWS configure

>>> asw configure

다시 콘솔로 돌아가서, 위의 명령어를 입력한다.

스크린샷, 2017-06-30 00-14-39
차례대로 한줄씩 방금 만든 IAM 유저의 키와 비밀키를 입력한다.

region에는 한국을 의미하는 ap-northeast-2 (참고로 1은 일본) 을 입력하고,
output format은 json타입으로 정한다.

만약, 입력을 잘못했다면 홈폴더로 돌아가 .aws 폴더로 이동한 뒤, vim credentials를 통해 수정한다.

2. IAM 이란?

스크린샷, 2017-06-30 00-06-58
이미지 출처(http://realmojo.tistory.com/178)

root 계정은 모든 권한이 다들어있어서 잘못 사용했다가는 위험을 초래할 수 있다.
따라서 IAM을 통해 그룹을 만들고, 권한을 다르게 지정해하게 함으로써 AWS읙 각 리소스에 접근제어 및 권한관리를 하게 할 수 있다.

3. alias 설정하기

자신이 사용하고 있는 쉘 종류에 따라 조금씩 차이가 난다. 본인은 zsh를 쓰고 있기 때문에 이를 기준으로 설명하고자 한다.

스크린샷, 2017-06-30 00-42-47
vim ~/.zshrc 명령어를 친 뒤, 하단부에 위와 같이 입력한다.
kkk부분에는 자신이 만들고 싶은 명령어를 사용하면 된다.
이후에 source ~/.zshrc를 하거나 터미너를 재부팅함으로써 alias 사용이 가능해진다.

스크린샷, 2017-06-30 00-46-10
kkk만 입력했는데도 AWS 서버 내 인스턴스 연결이 가능해진다.

3. SCP(Secure Copy)란?

scp(보안기능으로 파일전송)
리눅스 서버 간에 파일다 또는 폴더 복사에 사용되는 명령어는 scp가 대표적이다.

scp [복사하려는 파일 위치 및 이름] 공백한칸 [서버2의 특정계정 @ 서버2의 ip주소 : 서버2의 특정 위치]

로 이루어진다. 서버2의 특정계정의 비밀번호를 알고 있어야 하며, 서버2의 특정계정의 쓰기 권한이 있어야 한다.

폴더를 복사하고자 한다면, scp앞에 -r이라는 명령어를 붙인다.

참고한 사이트

1. 리눅스 서버간 파일 복사

2. 아마존 공식 문서(Amazone Elastic Compute Cloud)

3.생활코딩