핵심쏙쏙 AWS_1주차

차드마·2021년 6월 28일
0

1. 알아보자 AWS

  • 클라우드 : 기존의 서버 컴퓨팅 시장을 빠르게 대체중인 산업
  • AWS : Amazon web service의 약자로, 클라우드 서비스 중 가장 높은 점유율을 확보

2. AWS를 잘 활용하려면

넷플릭스 등 세계에서 AWS를 잘 활용하는 회사들이 공개하는 AWS의 제품 사용 경험을 참조하기

넷플릭스의 AWS 활용
https://aws.amazon.com/ko/solutions/case-studies/netflix/

* AWS를 이용한 글로벌 서비스가 가능한 이유

  • AWS는 여러 나라에 데이터 센터을 보유
  • 이때 데이터 센터가 있는 나라를 리전(region), 리전 내의 데이터 센터 위치를 존(zone)이라고 함
  • AWS의 모든 제품들은 기본적으로 어떤 리전과 존에 배치할지를 먼저 결정해야 하고, 이때 리전과 존은 서비스 하려는 지역의 것을 사용해야 한다.

3. S3 파일 저장소 사용해보기

S3는 클라우드의 확장 가능한 스토리지로, 버킷으로 구성된다.

버킷

S3에서 파일을 저장하는 폴더의 역할을 수행하는 것으로, 이때 각 버킷은 고유한 이름을 가지도록 설정해야 한다.

버킷만들기

  • 기존 버킷 복사 : 기존 버킷의 설정을 그대로 사용할때 유용
  • 엑세스 차단 설정 : 버킷에 저장한 파일의 권한을 설정하는 기능
  • 퍼블릭 엑세스 : 버킷이 생성될때 부여되는 고유한 URL을 통해 버킷에 저장된 파일을 접근 할 수 있게 하는 기능
  • ACL : 액세스 제어 목록으로 버킷과 객체에 대한 액세스를 관리
  • 버킷 버전 관리 : 버킷내의 파일들의 버전을 관리할 수 있는 기능
  • 태그 : 많은 버킷중에 원하는 버킷을 찾을때 이용하는 태깅 기능
  • 기본 암호화 : 파일들을 암호화하여 좀더 보안적으로 안전하게 관리하는 기능
  • 객체 잠금 : 중요한 파일이 버킷에 저장될때 그 보안을 위해 필요한 기능

파일 업로드 하기

버킷 선택 -> 업로드 화면 이동 -> 파일 추가 -> 업로드 완료

파일 확인 하기

파일 리스트 확인 -> 파일 정보 확인 -> 객체 URL 확인

해당 URL을 브라우저 주소창에서 호출하면 업로드한 파일이 보인다.
하지만 파일에 권한을 퍼블릭하게 주지 않았기 때문에 AccessDenied라는 에러가 발생하게 된다.

권한 변경하기

파일의 권한을 퍼블릭하게 하기 위해서는 버킷의 권한을 퍼블릭하게 수정해야 한다.

버킷의 권한 탭 -> 편집 -> 모든 퍼블릭 엑세스 차단 체크박스의 체크를 해제 -> 파일의 권한 탭 -> 파일 퍼블릭 권한 부여 -> 브라우저에서 파일 확인

4. IAM 이용하여 AWS SDK를 이용한 S3 파일 업로드

IAM은 Identity and Access Management의 약자로
사용자, 역할을 관리하는 서비스이다.

사용자 추가하기

왼쪽 메뉴 중 사용자 메뉴를 클릭 -> 사용자 추가

엑세스 유형 선택하기

  • 프로그래밍 방식 엑세스 : 개발 언어와 연계하여 사용하는 방식
  • AWS Management Console 엑세스 : 해당계정을 AWS 콘솔에서 로그인하여 사용하는 방식

-> 개발 언어와 연계하여 사용하는 것이 목적이므로 프로그래밍 방식 엑세스 선택

권한 설정하기

생성하는 사용자에게 권한을 부여하는 페이지

  • 기존 그룹에 사용자 추가
  • 기존 사용자에서 권한 복사
  • 기존 정책 직접 연결

-> 위 세가지 방식 중 처음에는 기존 그룹이나 사용자가 없기에 기존 정책 직접 연결을 선택
-> S3를 사용할 것이므로 AmazonS3FullAccess 권한을 부여

검토하기

설정한 부분들이 제대로 입력되었는지 검토하고,
사용자 만들기 버튼을 클릭

생성 완료

사용자가 생성되면 해당 사용자의 엑세스 키 ID와 비밀 엑세스 키가 생성되는데, 이를 잘 보관해야 하고 외부에 노출되지 않도록 해야한다.

AWS SDK 설치 및 설정

SDK는 Software Development Kit의 약자로, 프로그래밍을 돕는 라이브러리이다.
AWS SDK를 이용하면 개발과 연동해 AWS를 사용할 수 있다.

설치
https://awscli.amazonaws.com/AWSCLIV2.msi

SDK 설정하기

cmd or terminal에 아래 코드를 입력해 SDK 설치 확인

aws --version

이어서 아래 코드를 입력해 기본정보 (사용자 엑세스 키 등)을 입력

aws configure

SDK를 이용해 S3 파일 업로드하기

SDK 명령어 설명
https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html

업로드 명령어

aws s3 cp 파일명 s3:// 버킷이름 --acl public-read

[파일명]의 이름을 가진 파일을 [버킷이름]의 이름을 가진 버킷에 public-read 권한을 부여한 상태로 업로드

5. 프로그램 언어와 연동

Flask를 이용하여 S3 업로드 웹페이즈 구현하기

AWS의 모든 제품들은 SDK 라이브러리를 거의 모든 언어에 제공
예시는 파이썬이지만 사용하는 모든 언어에 비슷하게 사용 가능

index.html 코드는 생략

app.py 코드

import boto3 # AWS와 연동을 가능하게 하는 라이브러리
from flask import Flask, render_template, request, jsonify

app = Flask(__name__)

@app.route('/')
def main():
    return render_template('index.html')

@app.route('/fileupload', methods=['POST'])
def file_upload():
    file = request.files['file']
    s3 = boto3.client('s3')
    s3.put_object(
        ACL="public-read",
        Bucket="{버킷이름}",
        Body=file,
        Key=file.filename,
        ContentType=file.content_type)
    return jsonify({'result': 'success'})

if __name__ == '__main__':
    app.run()

프로그램은 파이참을 이용하였다.

6. S3 정적호스팅 기능을 이용하여 외부에 공개하기

정적 호스팅기능

S3의 버킷에 index.html 등 웹사이트에 필요한 리소스들을 저장하면 S3가 해당 웹사이트를 호스팅 해주는 기능

정적 웹 호스팅 설정하기

속성 -> 정적 웹 호스팅 -> 편집 -> 활성화 시키기

*기타 설정

  • 인덱스 문서 : 기본 페이지, 대부분 index.html
  • 오류 문서 : 에러가 발생했을 때 이동할 페이지
    단순 html 구성일 경우 개발 환경에 맞게 구성
    React, Vuejs 구성일 때는 index.html을 입력

마지막으로 index.html 파일을 업로드하고 버킷의 속성에 들어가 정적 웹 호스팅 메뉴에 있는 링크로 이동하면 웹페이지가 생성된 것을 확인할 수 있다.

7. S3 비용 계산

  • AWS의 모든 서비스는 비용 계산이 복잡
  • S3의 경우 저장된 파일의 용량과 파일을 호출하는 트래픽에 따라 요금 부과
  • 비용계산을 대략적으로 해놓는 것이 필요

참고문서
https://calculator.aws/#/createCalculator/S3

profile
초보 개발자

0개의 댓글