ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 아마존 웹 서비스 가입 및 AWS Cli 설정
    소프트웨어 개발 툴 2019. 3. 12. 15:54

    클라우드 서비스의 등장으로 인해 소프트웨어는 제 2의 전성기를 맞았다고 해도 과언이 아닐 정도로 다시 엄청난 붐을 맞았다. 클라우드 서비스란 무엇인가? 클라우드 서비스란 간단하게 말해 인터넷을 통해 자원(cpu, memory, etc) 또는 서비스를 사용하는 것을 의미한다. 즉, 우리가 물리적으로 컴퓨터 또는 어플리케이션을 살 필요 없이 인터넷으로 컴퓨터/어플리케이션을 사고 인터넷을 이용해 그 컴퓨터/어플리케이션을 이용한다는 뜻이다. 이 때 우리가 클라우드를 이용해 사용하는 컴퓨터는 대부분 서버로 사용된다. 이런 서비스를 제공하는 대표적인 회사중 하나가 바로 아마존 웹 서비스이다. 이 포스트를 통해서 우리는 아마존 웹 서비스에 어떻게 가입하고, 아마존 웹 서비스에는 어떤 서비스들이 있는지 알아보도록 한다.

    예상 독자

    아마존 웹 서비스가 뭔지 알고 싶은 사람.

    아마존 AWS Cli를 설치하고 싶은 사람.

    목표

    • 아마존 웹 서비스 회원 가입
    • AWS Management Console
    • 지역(Region)
    • IAM (Identity & Access Management)
    • AWS Cli

    아마존 웹 서비스 회원 가입

    일단 아마존 회원 가입을 해 보자. 아마존 웹 서비스 여기로 가면 프리 티어가 어쩌고 하면서 화면이 나올 것이다. 여기서 무료 계정 생성을 누른다. 프리 티어라는건 무료로 사용 할 수 있는 몇가지 서비스들이 존재한다는 뜻이다.


    무료 계정 생성을 누르면 다음과 같은 화면이 나오는데 여기다가 원하는 이메일을 이용해 계정을 생성하면 된다.

    이후에 위와 같은 연락처란이 나온다. 여기서 연습용으로 만드는 거라면 개인을 회사를 위해 만드는 거라면 프로페셔널로 선택하면 된다. 본인/회사의 정보를 적은 후 '계정을 만들고 계속 진행'해 보자.

    다음으로 진행하면 결제 정보가 나온다. 이 란에 결제 정보를 입력한다고 과금되지 않는다. 결제 정보 입력은 신원 확인과 이후에 혹시 free tier한도를 초과 해 사용하는 경우 요금을 청구하기 위해 필요 한 것이다. 그러니 free tier내에만 쓰던지 돈을 내던지 하면 된다. 카드 정보를 넣은 후 다음으로 넘어가면 핸드폰으로 인증해야 할 것이다. 인증까지 마친 후 아마존 웹 서비스에 가입 한 후 로그인 해 보자.

    AWS Management Console

    로그인을 하면 AWS Management Console이 뜬다. 이 화면에서 모든 아마존 웹 서비스의 서비스들을 찾을 수 있다. 위의 화면을 보면 내가 ECR, ECS, IAM, EC2등의 서비스를 최근해 이용 했음을 알 수 있다. 전체 서비스 또는 왼쪽 상단에 서비스를 누르면 아마존 웹 서비스에서 사용 할 수 있는 모든 서비스가 나온다. 

    지역(Region) 

    이제 Region에 대해 잠깐 알아보자.

    왼쪽 상단의 메뉴의 내 계정 오른쪽을 보면 지역 이름이 뜨는 것을 확인 할 수 있다. 이 지역을 눌러보면 밑에 여러 지역들이 나온다. 얘네는 뭘까? 얘네는 바로 아마존 웹 서비스가 관리하는 데이터센터이다. 각각의 지역 하나가 그 지역의 데이터센터를 의미한다. 각 데이터 센터마다 Availability Zone(가용 지역)이라는 것이 있는데, 그 지역의 데이터 센터는 한 곳에 몰려 있는 게 아니라 물리적으로 다른 여러곳에 배치되어 있다. 한 지역(Region)내에서도 다른 장소에 만들어진 각 데이터 센터가 바로 Availability Zone이다. 즉 한 리젼 당 여러개의 데이터센터가 그 리젼 안에 존재하고 해당 리젼 안의 각 데이터센터를 Availability Zone이라고 부른다.

    아마존 웹 서비스는 왜 이런 구조를 택했을까? 이는 분산 시스템의 핵심 중 하나인 Availability를 구현하기 위해서이다. 만약 우리가 하나의 어플리케이션 서버 및 데이터서버를 가지고 있고, 그 서버가 아시아 태평양 (서울) 데이터센터에 존재한다고 하자. 그리고 AZ(Availability Zone)이라는 개념이 없고 한 지역 당 한 데이터센터만 있다고 치자. 어느 날 무슨 일이 발생해 그 데이터센터가 폭발되었다. 여러분의 서버와 데이터는 어떻게 되는가? 사라진다. 이런 일이 일어나길 원하지 않을것이다. 다행히 AWS에는 AZ가 있기 때문에 우리는 우리의 어플리케이션을 서로 다른 여러 AZ에 실행시고 또 데이터를 여러 AZ에 복사해 놓는다. 이렇게 하면 어느 AZ하나에 문제가 생겨도 계속 서비스를 운영 할 수 있다. 하지만 예를들어 정전으로 인해 그 지역(Region)의 데이터센터가 전부 셧다운 됐다고 치자. 그러면 같은 문제가 또 발생한다. 그러므로 이 개념을 확대해 우리는 서로 다른 여러개의 지역(Region)에 우리의 어플리케이션을 실행 시킬 수 있다. 이처럼 서버 어플리케이션을 항상 요청을 받을 수 있는 상태로 유지하는 것은 분산시스템이 해결해야 할 핵심 문제중 하나인데 이를 High Availability라고 부른다. 이제 아마존 웹 서비스가 왜 AZ를 Availability Zone이라고 하는지 조금 감이 오지 않는가? 

    또한 네트워크 속도는 거리에 비례하기 때문에 전 세계에 데이터센터를 만들어 네트워크 Latency를 줄이려 한 것 같다. 지금은 여러분의 고객들이 이용 할 지역과 가장 가까운 지역을 선택하면 된다. 나는 그냥 오하이오를 선택했다.

    Region과 AZ는 AWS의 블로그에 더 자세히 나와있으니 AWS의 블로그를 참조하기 바란다.

    IAM (Identity & Access Management)

    클라우드 제공자가 고민해야 할 다른 하나는 보안이다. 클라우드 서비스가 막 나오기 시작 했을 때 사람들은 보안 때문에 많은 걱정을 했고 일부는 보안 문제 때문에 클라우드 서비스가 오래가지 못 할거라는 예측도 했다. 이를 해결하기 위해 아마존 웹서비스는 IAM(Identity & Access Management)이라는 서비스로 권한을 관리한다. IAM을 이용하면 사람이 가질 수 있는 권한/롤, 어플리케이션/서비스가 가질 수 있는 권한/롤등을 따로따로 상세하게 설정 할 수 있다. AWS CLI를 이용하기 위해서는 User가 필요하니 IAM 유저를 만들어 보도록 하자. IAM 전체를 여기서 설명하긴 힘드니 공식 문서를 참고하기 바란다. 다음 포스트가 나올 때 까지 기다려라. EC2를 만들 때 또 IAM에 대한 이야기가 나올 것이다.

    서비스를 누르고 IAM으로 들어간다.


    왼쪽의 사용자를 누른다.

    내가 먼저 만들어 놓은게 있는데, 이건 상관하지 말자. 왼쪽 위에 '사용자 추가'를 누르면 된다.

    사용자 이름을 적고 엑세스 유형해 프로그래밍 방식 엑세스를 누른다. 프로그래밍 방식 엑세스는 여러분의 어플리케이션이 aws를 이용하거나 awscli가 aws를 이용하고자 할 때 사용하는 방법이다. AWS Management Console액세스는 기존 아이디/비밀번호 방식의 로그인 사용자를 추가하는 것이다. 우리는 밑에서 awscli를 설치하고 이용 할 것이므로 프로그래밍 방식 액세스를 선택한다.

    그 다음 화면에서는 어떤 권한을 줄지 설정하도록 나온다. 기업에서 사용하는 AWS의 경우 직책에 따라 또는 어플리케이션의 특성에 따라 권한이 달라질 수 있으므로 유저마다 다르 권한을 줄 수 있어야 한다. 아무 생각 없이 모든 권한을 주는건 좋지 못한 습관이다. 하지만 지금은 연습하는 것이니 AdministratorAccess을 선택 해 보겠다. 다음 화면에서는 아무것도 하지 말고 그냥 '다음(검토)'를 눌러라.

    사용자 만들기를 누른다.

    주의!!!!!! 여기서 그냥 넘어가면 안된다. 액세스 키 ID와 비밀 액세스 키가 바로 여러분의 ID와 비밀번호이다. 얘를 반드시 기억해야한다. 지금 이 화면이 지나면 비밀 액세스키를 절대 볼 수 없기 때문이다. '표시'를 눌러서 비밀 액세스키를 드러나게 한 후 두 값을 어딘가에 꼭 저장해라. 그리고 닫기를 누르면 아래와 같이 유저가 생성 될 것이다.


    만약 Secret키를 잃어버렸다면 당황하지 말고 해당 유저의 사용자 이름을 누르자. 


    이후 '보안 자격 증명'을 누르고 아래의 액세스 키에서 '액세스 키 만들기'를 우르면 새로운 키와 Secret키를 받을 수 있다. 


    AWS Cli

    이제 AWS Client를 설치 해 보자. AWS Client는 파이썬이 필요하므로 파이썬이 없는 사람들은 파이썬 먼저 설치하라. 이제 커맨드라인이나 파워셸을 이용해 인스톨한다.

    각 환경마다 인스톨 하는 방법은 공식 문서에 잘 나와있다.

    ➜ pip3 install awscli --upgrade --user
    Collecting awscli
    Downloading https://files.pythonhosted.org/packages/0e/ 48/12923764e48cafabe60838be3e4194e53866bb3806fc532c8a7992391514/ awscli-1.16.122-py2.py3-none-any.whl (1.5MB)
    100% |████████████████████████████████| 1.5MB 9.3MB/s
    Collecting colorama<=0.3.9,>=0.2.5 (from awscli)
    Downloading https://files.pythonhosted.org/packages/db/c8/ 7dcf9dbcb22429512708fe3a547f8b6101c0d02137acbd892505aee57adf/ colorama-0.3.9-py2.py3-none-any.whl
    Collecting botocore==1.12.112 (from awscli)
    Downloading https://files.pythonhosted.org/packages/0d/6b/ d6ffec0ec8c100ae89324a764ea35c34c1a1ea099f97c6868f70d3597707/ botocore-1.12.112-py2.py3-none-any.whl (5.3MB)
    100% |████████████████████████████████| 5.3MB 3.4MB/s
    Collecting s3transfer<0.3.0,>=0.2.0 (from awscli)
    Downloading https://files.pythonhosted.org/packages/d7/de/ 5737f602e22073ecbded7a0c590707085e154e32b68d86545dcc31004c02/ s3transfer-0.2.0-py2.py3-none-any.whl (69kB)
    100% |████████████████████████████████| 71kB 2.5MB/s
    Collecting docutils>=0.10 (from awscli) ...

    이렇게 해서 설치가 완료 됐으면 설치가 잘 되었는지 확인 해 보자.

    ➜ aws --version
    aws-cli/1.16.122 Python/2.7.10 Darwin/18.2.0 botocore/1.12.112

    비슷하게 나오면 잘 설치 된 것이다. 여기서 다가 아니다. 우리는 아까 만든 유저를 이 awscli에 연결 해 줘야 한다. 지역은 나처럼 오하이오를 선택했으면 us-east-2, 서울을 선택했으면 ap-northeast-2일 것이다. 리젼에 해당되는 값은 공식 문서에서 찾을 수 있다.

    ➜ aws configure
    AWS Access Key ID [****************VM2Q]: <아까 저장한 ACCESS KEY 복사 붙여넣기 후 엔터>
    AWS Secret Access Key [****************DVSn]: <아까 저장한 SECRET KEY 복사 붙여넣기 후 엔터>
    Default region name [us-east-2]: <지역(Region) 입력 후 엔터>
    Default output format [json]: json

    여기까지 했다면 다음과 같은 명령어를 쳐 보자.

    ➜ aws ec2 describe-vpcs

    { "Vpcs": [ { "VpcId": "vpc-f0ecfb98", "InstanceTenancy": "default", ... }

    위로 시작하는 긴 json이 뜨면 성공 한 것이다. 아무것도 안만들었는데 왜 이런게 나오는지, 과금되는건 아닌지 걱정하지 말라. 아마존 웹서비스에 가입하면 자동으로 default vpc(virtual private cloud)라는걸 만들어 준다. 공짜다.

    다음 포스트에서는 EC2인스턴스를 만들어 보도록 하겠다.

    댓글

f.software engineer @ All Right Reserved