✅ S3
이미지파일을 EC2
내부에 저장할 수 있는데 왜 S3
를 사용할까?
-> 서비스를 운영하다보면 EC2
에 쌓이는 파일들이 많아지고 지저분해지기 때문에
EX) 휴대폰에 저장공간이 있는데도 찍은 사진을 구글 드라이브나, NBOX에 넣는 이유
✅ S3 버킷
생성하기
💡 버킷
이란? : 깃허브에서 여러개의 Repository를 만들 수 있는 것처럼, S3
에서도 여러 개의 저장소를 만들 수 있는데, 여기서 하나의 저장소를 버킷
이라고 부른다
또한 S3 버킷
에 업로드 된 파일을 객체
라고 부른다
💡 정책
이란? : 권한을 정의하는 JSON 문서를 의미
AWS는 기본적으로 대부분의 권한이 주어져있지 않아서 AWS의 특정 소스에 접근하려면 권한을
허용해주어야 한다. 권한을 허용할 때 작성해야하는 것이 정책
이다
검색창에 S3
검색 -> 버킷 만들기 클릭 -> 버킷이름 적고 버킷의 퍼블릭 액세스 차단 설정
체크 해제해야함 : 다른 사용자들이 이미지들을 다운받고 조회하기 위해서 -> 버킷 만들기 클릭
-> 만든 버킷 상세클릭 -> 권한 속성 들어가기 -> 버킷 정책에서 편집 클릭 -> 새문 추가 클릭
-> 서비스 선택에서 S3검색 후 작업 필터링에서 GetObject (조회기능) 검색 후 체크 -> 리소스 추가 클릭
-> 서비스 : S3 , 리소스 유형 : object , 리소스 ARN : 버킷이름에 만든 버킷이름과 ObjectName에 *
넣기
ex) : arn:aws:s3:::instargram-static-files/*
-> 리소스 추가 클릭
-> 정책안의 코드에서 Principal : {} 에서 {} -> *
로 바꿔주기 -> 변경사항 저장 클릭
✅ S3
에 파일업로드 할 수 있도록 IAM
에서 액세스 키 발급
위 S3 버킷
을 생성하고 정책을 만든건 파일 다운로드만 가능하다 그래서 파일업로드 허용도 해줘야함
즉 백엔드 서버만 파일을 업로드 할 수 있도록 권한을 부여해야한다
밑에 작업은 파일업로드를 아무나 할 수 없기때문에 출입증을 만드는 과정이다
검색창에 IAM
검색 후 클릭 -> 왼쪽에 사용자 클릭 -> 사용자 생성 클릭 -> 사용자이름 입력
-> 직접 정책 연결 체크 -> 밑에 권한 정책에서 AmazonS3FullAccess
검색 후 체크 -> 다음 클릭
-> 사용자 생성 클릭 -> 만든 사용자 상세클릭 -> 밑에 보안 자격 증명 속성 클릭
-> 밑에 액세스 키에서 액세스 키 만들기 클릭 -> AWS 외부에서 실행되는 애플리케이션 체크
-> 다음 클릭 -> 액세스키 만들기 클릭 -> 만든 액세스 키를 복사해서 잘 저장해두기 -> 완료 클릭
💡 비용이 나가지 않게 하려면 만든 S3 버킷
안에 객체를 모두 삭제 후 S3 버킷
을 삭제하면 됨
✅ 웹 서비스를 배포할 때 사용하는 S3
CloudFront
S3
는 파일 저장서비스 기능도 있지만, 정적 웹 사이트 호스팅
기능으로 사용할 수 있다
즉 쉽게말해 웹서비스를 다른 사용자들도 쓸 수 있게 인터넷에 배포하는 것을 의미한다
💡 CloudFront
란? : 컨텐츠(파일, 동영상) 을 빠르게 전송하게 해주는 서비스 (임시저장소)
모든 컨텐츠는 S3
에 저장이되는데, 등록한 리전(지역)이랑 멀면 멀수록 다운 속도가 느려진다
이런 문제를 해결하기 위해서, 전세계 곳곳에 컨텐츠의 복사본을 저장해놓을 수 있는 임시 저장소를 구축해서 모든 사람들이 빠르게 다운받을 수 있게 된다
이런 형태의 서비스를 CDN
(Content Delivery Network) 라고 부르며
CloudFront
를 CDN
서비스라고 표현한다
쉽게 말해 웹 콘텐츠를 사용자와 가까운 곳에 저장하고 전송하는 네트워크라고 생각하면 된다
CloudFront
를 왜사용할까? : 웹 페이지가 뜨는 시간을 줄여주기 위해서 사용하고
S3에서 HTTPS 를 적용시키는 기능이 없어서, CloudFront
를 통해 웹사이트에 HTTPS를 적용시킬 수 있다
이러한 장점들 때문에, S3
와 CloudFront
를 같이 사용해서 웹 서비스를 배포한다
사용자들의 요청을 보내는 곳은
S3
가 아니라CloudFront
로 보낸다
✅ CloudFront
생성하기
CloudFront
검색 후 클릭 -> 배포 생성 클릭 -> 원본도메인선택 -> 기본 캐시 동작 부분의 (뷰어 프로토콜 정책) : Redirect Http to Https 체크 -> 웹 애플리케이션 방화벽 : 보안 보호 비활성화 체크
-> 설정의 가격 분류에서 (북미, 유럽, 아시아, 중동 및 아프리카에서 사용) 체크 -> 기본값 루트 객체에 index.html 입력 -> 배포 생성 클릭 -> 만든 CloutFront
상세 정보 클릭 -> 배포 도메인 이름 확인
✅ 도메인 연결하기, HTTPS 적용하기
💡 CloudFront
는 HTTPS 를 적용하려면 인증서를 미국 동부(버지니아 북부) 에서 발급 받아야함
Certificate Manager 검색 후 클릭 -> 리전을 미국 동부(버지니아 북부) 로 변경 -> 요청 클릭
-> 완전히 정규화된 도메인 이름 입력 -> 요청 클릭 -> 만든 인증서를 상세보기 클릭
-> Route 53에서 레코드 생성 클릭 -> 레코드 생성 클릭 -> 다시 CloudFront
검색 후 클릭