AWS에 대하여

Walter Mitty·2022년 4월 25일
1

AWS

목록 보기
2/12

AWS (잘나가는 클라우드 서비스)

예전에 홈페이지를 구축한다 하면, 외부와 통신이 되기 위해 IDC 센터에 일반 서버를 넣어야 했다.(도메인으로 연결되게)

  • 클라우드: 개발을 할 수 있게 만들어주는 베이스 인프라다.
    - 내가 웹사이트를 돌리기 위해 어떤 컴퓨터, 네트워크, IP 쓸 지 5분만에 정할 수 있다.(도메인, 서버, 데이터베이스 등)
    - 내가 더 필요하면 더 만들고, 필요 없으면 지우면 되기 때문에 매우 간편하다.
    - 우리가 만든 서비스를 돌아갈 수 있게 해준다.
    • SaaS, IaaS, PaaS 에 대해 알아보기
  • AWS:
    - Amazon Web Service 의 약자이다
    - 24시간 실시간으로 언제나 서버 리소스, 서버 컴퓨터를 늘릴 수 있다.

AWS를 잘 활용하려면?
Neflix는 개발자에게는 세계에서 AWS가장 잘 쓰는 리딩 회사로 유명하다.
https://aws.amazon.com/ko/solutions/case-studies/netflix/
위 링크를 통해 넷플릭스의 use case나 어떻게 AWS를 구축하고 이사했는지 알아보자.

  • 이사가는 데만 7년이 걸렸다. 그 시간동안 AWS로 이사가기 위해 엄청난 노력을 했을 거고 그 만큼 레퍼런스가 많다.
  • 한국에서는 쿠팡, 당근마켓, 배민 등이 AWS를 이용하고 있다. 이 인프라에 돈 많이 쓰고 있으니까 쿠팡 배민 당근마켓 등등의 기술 블로그에 가서 use case를 찾아보자!

AWS는 여러 나라에 데이터 센터(AWS IDC center)를 갖고 있다.
IDC(데이터 센터)가 있는 나라를 리전이라고 하고, 리전 내의 IDC 위치를 존(AZ)이라고 한다.
예)서울에 데이터 센터가 영등포, 강남, 도봉에 위치하고 있으면 서울리전에 영등포 존, 강남 존, 도봉 존.
(하나의 리전안에 두개 이상의 존을 만들어야 하는 이유는 한 존이 화재나 사고로 서버에 접속이 안되는 상황을 방지해야 하기 떄문이다!)

AWS 의 모든 제품들은 기본적으로 어떤 리전과 존에 배치할지를 먼저 결정해야합니다. 그러면 서울에 있는 사람은 서울쪽 IDC센터에 접속을 하게 하고, 미국에 있는 사람은 또 미국에 있는...-> 그래야 속도가 빨라져서 글로벌 서비스가 가능해진다.
❓그럼 우리나라에서 넷플을 이용하면 어디 IDC를 이용할까? 유튜브 라인처럼 일본거? -> 서울리전 있네!

AWS는 과금체계가 있다. 돈이 10원이라도 나가는게 싫다면 수업 들을 때만 사용하고 아니면 바로 지워주기


AWS S3 (파일 저장하는 서비스)

S3 검색 후 S3를 누르면 버킷 이 나온다

  • 버킷: 내가 파일을 저장하는 장소를 폴더링(나눠놓기)을 해놓는 것, 파일을 저장하는 저장소 단위
    -1,2,3번 버킷을 만들어 놓고 1번에는 이미지 파일, 2번에는 동영상 파일 이렇게 생각하자.

  • 버킷 만들기
    - 태그기능은 버킷이 많아지면 그룹에 따라 찾아야 할 필요가 있어지니까.

  • ACL -권한 설정 기능


AWS IAM (AWS 내 리소스에 대한 액세스 관리 즉, 계정관리 서비스(사용자 역할관리))

IAM: Identity and Access Management(IAM)
-다른회사 레퍼런스 찾아보기
-IAM 입장에선 S3도 리소스가 될 수 있다 : S3를 사용할 수 있는 권한을 조절하는 서비스다. 라고 해석
-그럼 권한을 왜 조절해야 하는걸까?
-우리가 지금 IAM의 많은 기능 중, IAM을 사용해서 S3랑 프로그램을 연결 할 예정인데 이 중에서도 파이썬이랑 S3를 연동할 예정.
-나는 커리큘럼 상 프로그래밍 방식에 액세스 할거라 액세스 키는 프로그래밍 방식 액세스로!

  • 그룹에 사용자 추가: 어떤 리소스에 내가 이 계정을 이 사용자에게 권한을 주는 것.
    어떤 이미 만들어져있는 이 그룹은 S3 혹은 EC2를 쓸 수 있는 그룹이야. 하고 그룹을 만들어서 기존에 있던 그룹에 포함시키는 방법이다.
  • 기존 사용자에게 권한 복사:
  • 기존 정책과 직접 연결: 나는 지금 처음 사용하는 것이므로 이걸 선택 -> 검색창에 S3 검색 -> AmazonS3FullAccess (S3에서 만큼은 읽기/쓰기 다 되는 것) 선택
    ...spartaiam계정은AmazonS3FullAccess권한이있다
    0000spartaiam계정은AmazonS3FullAccess권한이있다
  • 액세스 키 ID는 메모장에 복사해두면 된다.

SDK (AWS 서비스의 프로그래밍을 돕는 라이브러리)

SDK: Software Development Kit
SDK 설치 후 잘 설치되었나 확인-> 터미널에서 aws --version 엔터-> 이 SDK는 aws-cli 라는 SDK라는 걸 확인
파이썬이랑 연동하기 전에 커맨드라인을 통해 AWS SDK를 이용하여 S3를 업로드

aws configure 명령어를 통해서 액세스 키 id, 시크릿 키를 입력하고, 리전 네임:ap-northeast-2, output format: json 입력한다. 그리고 아무 반응이 없으면 잘 된거!

  • cli를 이 SDK를 이용해서 업로드 해보기
    -cp(copy): 내 컴퓨터에 들고 있는 파일을 S3로 업로드 한다. 같은 복사 기능의 명령어
    명령어 쓸 땐 처음에 먼저 aws란 부분을 꼭 붙여줘야한다. (like 내가 git 에서 하고싶음 git add, ait brach 라고 쳤던 것 처럼)
    -aws s3 cp {파일명} s3://{버킷이름} --acl public-read
    cli 명령문에 사용하려는 리소스가 s3에 업로드 하려는 거기 때문에 s3, 하려고 하는 명령이 cp 파일을 s3에 복사하려는 거기 때문에 cp.
    파일명엔 업로드 하려는 파일명
    버킷이름엔 S3uri
    --acl 은 권한을 변경하는 것. 이 옵션이 없다면 웹사이트 상에 퍼블릭한 권한이 없어서 아까처럼 안보임

CLI 환경에서 S3로 파일 업로드하기.

  1. aws configure 액세스 키 입력
  2. cd Desktop/원하는 파일 있는 폴더 로 이동
  3. ls 로 무슨 파일 있나 확인
  4. aws s3 cp {파일명} s3://{버킷이름} --acl public-read
  5. 예시) aws s3 cp brightday.png s3://0000sparta --acl public-read
  6. Completed

    upload: ./{파일명} to s3://{버킷이름}/{파일명} 이라고 뜨면 잘 업로드 된 것!

  7. 예시)upload: ./brightday.png to s3://0000sparta/brightday.png
이렇게 되고 S3 버킷에 들어가 새로고침 해보면 bright.png가 업로드 되어 있는 걸 알 수 있다. 여기서 권한에 모든 사람(퍼블릭 액세스)로 되어있는지 확인해보자.

->그리고 다시 속성으로 가서 객제 url 복사해서 새창에 붙여넣기 했을 때 이미지 잘 보이면 끝!


프로그램 언어와 연동

파이참을 켜서 New Projeck -> Flask 를 하나 만들어준다.

여기서 app.py 코드스니펫을 복사하면, boto3이라는게 나오는데 이게 뭘까?
아까 우리는 CLI로 S3 연동할 때 SDK를 다운로드 받아서 설정을 했었다. 파이썬에서 S3랑 연동하려면 필요한게 boto3라는 라이브러리이다.(AWS와 연동하게 해주는 라이브러리)
boto3은 AWS랑 연동하려면 파이썬에서는 보통 boto3을 쓴다.
pip 명령어로 boto3를 install 할 수 있다.(2,3주 차 때는 커맨드라인 리눅스에서 커맨드라인 작업도 해야한다)
파이참에서 밑에 보면, Terminal 이라는 부분이 있다.
거기에 가서 pip install boto3 엔터!
import boto3에서 빨간전구 사라지면 잘 설치 된 것.


Run 하고 밑에 주소로 들어가면, index.html이 뜬다! 그 사이트의 목적은 파일을 파이썬을 이용해 S3에 업로드 하는것.

@app.route('/fileupload', methods=['POST'])
def file_upload():
    file = request.files['file']
    # S3와 연동을 한다라는 뜻
    s3 = boto3.client('s3')
    # boto3안에있는 put_object라는 함수로, 이 api에서 파이썬과 연동되어 파이썬에서 파일들을 S3에 업로드 할 수 있다
    s3.put_object(
        # 파일을 업로드 하는 내용
        ACL="public-read",
        Bucket="0000sparta",
        Body=file,
        Key=file.filename,
        ContentType=file.content_type)
    return jsonify({'result': 'success'})

alert으로 저장완료라고 떠도 꼭 S3에 가서 확인할 것들!

  1. 파일 업로드가 잘 되었는지
  2. 권한이 내가 설정한 대로 되어있는지
  3. 객체 url에 가서 내가 올린 파일이 잘 보이는지

S3의 여러 기능들!

  • 파일 저장 기능
  • 저장된 정적 파일을 이용한 호스팅 기능
    (호스팅: 카페24, 후이즈 같은 웹호스팅 업체에 웹소스,html,css 같은 걸 줘서 도메인과 연결하여 사이트를 띄우는거 같은!)
    = 따라서 indax.html과 JS, CSS 만 잘 만들어서 업로드를 시키면 파일도 저장되고, 저장한 정적파일들을 가지고 웹사이트를 만들 수 있다!
    -과정은 1주차 7번 노션 확인
    -정적 웹 사이트 호스팅을 활성화 시켜주게 되면, 웹브라우저에서 버킷 앤드포인트 주소를 치고 엔터를 치면, 이 버킷 내에 있는 html, CSS 파일로 인해서 이 버킷이 웹사이트가 된다!
    -인덱스 문서: 보통 index.html 을 쓴다.
    -오류 문서: 웹사이트에서 오류가 발생하면 여기에 적은 곳으로 반환된다.
    예) 실무에서 리액트나 비지니스 처럼 원페이지 형태의 프로그래밍/프론트엔드 페이지를 만들 때 에러페이지도 index.html로 적어줘야 리액트나 비즈니스 라우팅 되는 쪽에서 에러를 처리할 수 있다.
    -저장 후 아래로 내려보면 버킷 웹사이트 앤드포인트가 생성되어있다.
    -index.html 파일이 없으면, 404 Forbidden이 뜬다.

S3의 정적 호스팅 기능을 이용하면 업로드만 하면 웹사이트 뚝딱뚝딱 만들 수 있다.

0개의 댓글