정리

6-TIL 정리 (간단한 AWS-S3,IAM,CloudFront)

모_아이 2022. 4. 25. 23:42

클라우드 서비스

예전 클라우드 서비스라는 것에 대해 찾아 본 적이 있었는데 Cloud 즉 구름이란 뜻으로 언제 어디서든 하늘을 보면 구름을 볼 수 있 듯 내가 원하는 곳에서 네트워크 상 저장된 데이터를 꺼내 쓸 수 있다는 뜻이었다.

그렇기에 웹사이트를 돌리기 위한 도메인, 서버, 데이터 베이스 등을 AWS등을 제공해 우리가 만든 서비스를 실현 가능하게 만들어준다.

개발자들 사이에선 인프라라고 얘기한다.

 

-AWS의 기능들은 100여가지가 넘기에 기본 적인 것들만 이해하고 내가 필요한 기능들을 그때 그때 찾아서 사용해보자.

찾는 방법 중 하나는 공식 문서도 있겠지만 AWS를 잘 사용하고 있는 현 대형 회사들이 어떻게 사용하는지를 검색해보자

ex) 넷플릭스

넷플릭스는 AWS로 이사를 가는데만 7년이 걸릴 정도였는데 이 시간동안 쌓인 방대한 데이터는 무시할 수 없다고 본다.

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

 

 AWS는 여러 나라에 데이터 센터를 갖고 있는데 데이터 센터가 있는 나라를 리전이라고 하고, 리전 내의 데이터 센터 위치를 존(AZ)이라고 한다.

만약에 서울에 데이터 센터가 영등포, 강남, 도봉에 위치하고 있으면 서울리전에 영등포 존, 강남 존, 도봉 존 이라고 불리어지는 것입니다. ( 하나의 리전만 되어 있으면 어떤 일이 발생 했을 때 대처하기 힘드니 존을 만들어 따로따로 두는 것이 존과 리전이 나누어진 이유 중 하나라 볼 수 있다.)

 

AWS 의 모든 제품들은 기본적으로 어떤 리전과 존에 배치할지를 먼저 결정해야 한다.

리전 과 존 이 중요한 이유는 AWS 사용하여 인프라를 구성할때 서비스 하려는 지역의 리전과 존을 사용해야 한다는 것! 한국에서 서비스 하려면 ap-northeast-2 리전을 사용합니다.

 

S3 파일 저장소

-참고문서

https://docs.aws.amazon.com/s3/?id=docs_gateway 

 

https://docs.aws.amazon.com/s3/?id=docs_gateway

 

docs.aws.amazon.com

-버킷 만들기

버킷은 S3에서 파일을 저장하는 폴더로 우리가 컴퓨터를 사용할 때 폴더 안에 파일을 저장하는 것과 비슷하다.

아까와 마찬가지로 단순히 폴더를 만드는데도 많은 옵션들이 붙어있는데 모든 것을 당장 알아보려는 것보다 필요할 때 하나하나 찾아보며 지식을 쌓아나가자.

  • 버킷 만들기 : 이름은 무수히 많은 버킷중 고유한 이름이여야 한다(중복안됨)
  • AWS리전 :  위에 있는 한국 서비스 리전을 선택한다 ( ap-northease-2)
  • 기존 버킷 복사 : 기존 버킷의 설정을 그대로 사용할 때 유용
  • 엑세스 차단 설정 :  액세스 차단 설정은 버킷에 저장한 파일의 권한을 설정하는 기능이다.                                 -퍼블릭 엑세스: 버킷이 생성되면 고유한 URL이 부여됩니다. URL을 통해서 저장된 파일에 접근 할수 있게 하는 기능입니다.                                                                                                                                       -ACL: 액세스 제어 목록으로 버킷과 객체에 대한 액세스를 관리합니다.
  • 버킷 버전관리 : 버전관리는 개발할 때 git, svn처럼 관리하는 기능
  • 태그 : 해당 버킷을 태깅해놓고 이후 비용 측정이나 많은 버팃중 태그로 검색을 한다 할 때 쓰는 기능
  • 기본 암호화 : 말 그대로 암호화 해서 보안을 더 강화
  • 고급설정 : 객체잠금이라고 있는데 중요한 파일이 버킷에 저장되면 보안에 좀 더 신경써야 하기에 이런 경우 사용하는 기능이다.

-파일 업로드 후 확인해보기

S3에 업로드 되는 모든 파일에는 객체 URL이 부여되는데 해당 URL을 브라우저 주소창에서 호출 하면 업로드 된 파일이 보인다.

이 때 엑세스 차단 설정을 해 놓았다면 AccessDenied라는 에러가 나온다

권한 탭에서 변경을 시도 하면 해결 된다.

버킷에서 변경한 후 파일을 변경 해주자.

 

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

-참고문서

https://docs.aws.amazon.com/iam/?id=docs_gateway

 

https://docs.aws.amazon.com/iam/?id=docs_gateway

 

docs.aws.amazon.com

IAM은 Identity and Access Management의 양자로 간단히 말하자면 사용자, 역할을 관리하는 서비스라고 보면 된다.

 

-사용자추가

프로그램 연동을 위해 사용자를 먼저 추가해보자.

여러가지 옵션이 있겠지만 아직 기초이기 때문에 사용자 이름, 엑세스 유형 중 프로그래핑 방식 엑세스를 체크하고 넘어가자.

프로그래밍 방식 엑세스는 개발 언어와 연계해서 사용하는 방식이고,

AWS Management Console 엑세스는 해당계정을 AWS 콘솔에서 로그인 해 사용하는 방식이다.

 

권한 부여는 기존 그룹에 추가하는 방법, 기존 사용자 권한 복사, 기존 정책 직접 연결 방법이 있는데 처음이기에 저의되어 있는 정책에 직접 연결하는 방법을 사용 해보자.

S3를 위한 사용자이기 때문에 AmazonS3FullAccess권한을 부여한다.

이후 사용자 추가 전 검토를 마치고 만들기!

 

사용자가 성공적으로 추가되게 되면 화면에 엑세스 키ID비밀 엑세스 키를 주는데 복사 해놓고 절대 외부에 노출되게 하지 말자.

 

-이후 컴퓨터와의 연동을 위해 AWS SDK를 설치하자

SDK는 Software Development Kit의 약자로 프로그래밍을 돕는 라이브러리!

AWS SDK를 이용하시면 개발과 연동해서 AWS를 사용할 수 있다.

 

설치후 CIL을 이용해 확인이 가능하다.

aws --version 를 입력해보자.

aws configure를 입력해 설정하자.

 

설정이 완료 되었으니 SDK를 이용해 파일을 S3에 업로드 해보자.

똑같이 CIL을 이용해 보자.

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

 

※AWS 서비서의 모든 제품들은 SDK 라이브러리를 거의 모든 언어데 제공하기 때문에 개발언어와 연동해서 사용한다.

파이썬을 이용하자면

boto3 라이브러리를 활용하자!

 

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

버킷 속성 탭에 들어가 정적 웹 사이트 호스팅 부분을 편집!

  • 호스팅 유형
    • 정적 웹 사이트 호스팅 - 저장된 파일을 웹사이트 처럼 만들어줍니다.
  • 인덱스 문서 - 기본 페이지를 설정합니다. 대부분 index.html 입니다.
  • 오류 문서 - 에러가 발생했을 때 해당 문서로 이동합니다.
    • 단순 HTML 구성일 때는 개발 환경에 맞게 구성합니다.
    • React, Vuejs 구성일 때는 index.html을 입력합니다.

-웹 사이트 호스팅을 확인하기

 기능이 활성화가 되었고, 버킷 웹 사이트 엔드 포인트가 생기는데 엔드 포인트 URL을 이용하면 브라우저에서 사이트를 볼 수 있다. 현재 index.html 파일을 업로드하지 않았기 때문에 403에러 페이지를 볼 수 있어요.

index.html 파일을 S3 업로드 하고 파일 권한이 퍼블릭하게 되어있는지 확인하면 작동을 확인 할 수 있다.

 

 

비용계산

 AWS 의 모든 서비스는 비용 계산이 복잡하다. S3는 저장된 파일의 용량과 파일을 호출하는 트래픽에 따라 비용이 부과

비용계산을 대략적으로 해놓지 않으면, 생각보다 많이 부과 될 수 있다.

-참고문서

https://calculator.aws/#/createCalculator/S3

 

반응형