[AWS] 정적페이지 배포

Logun·2023년 8월 5일

Aws

목록 보기
2/5
post-thumbnail

✅ 서버와 클라우드 컴퓨팅


❓ 서버

웹사이트와 리소스를 응답해주는 컴퓨터에 접속하는 것이다. 서비스를 운영하기 위해서는 특정한 컴퓨터를 가동 시켜야 하는데, 가동한 컴퓨터에 해당 프로그램을 실행시켜서 네트워크를 통해 접근하면 특정한 리소스를 응답해주도록 만든다. 무언가를 제공해주는 컴퓨터를 서버라고 부른다.

🤔 서버를 운영하는 두가지 방법

  • 온프레미스

    • 서버에 필요한 물리적인공간, 컴퓨터, 제반 시설 등을 직접 구축해서 활용하는 방식을 의미하며, 가장 기본적인 방식이다.
    • 온도와 습도 물리적인 공간이 필요하고, 그것을 관리하는 인력도 필요하여 처음부터 도입하기에는 부담이 크다.
    • 서버를 물리적인 부분까지 온전히 통제할 수 있다는 장점으로 인해서 보안이 중요한 환경에서는 온 프레미스 방식을 활용할 수 있다.
  • 클라우드컴퓨팅

    • 클라우드 서비스 프로바이더(AWS)를 원하는 사양으로 원하는 시간만큼 대여할 수 있다.
    • 전 세계에 걸쳐 서버를 운영할 수 있는 인프라를 구축해두고 여기서 물리적인 컴퓨터를 관리하고 있다.
    • 가상화 기술을 이용하여 원하는 사양으로 분리해서 서비스를 제공할 수 있다.
    • 내가 필요한 사양을 필요한 시간 만큼만 대여해서 사용할 수 있기에 비용측면에서 효율적이다.
    • 시간 별로 필요한 시간에 컴퓨터 성능을 정할 수 있어서, 서비스 확장 측면에서도 이점을 가지고 있다.
  • 🤔 클라우드 컴퓨팅의 종류

    • IaaS
      운영체제가 깔려있는 컴퓨터를 제공해 주는 것이다. AWS EC2 => 엘라스틱컴퓨팅클라우딩 원하는 시간에 원하는 사양을 고를 수 있는 탄력성을 강조한 컴퓨터이다.
    • PaaS
      구성요소들을 플럇폼화해서 서비스를 제공해준다. 코드올리고 몇가지 추가 작업만하면 된다.
      => AWS Elastic BeanStalk, github pages, heroku
    • SaaS
      일반 유저가 사용하는 서비스로, 내가 사용하는 소프트웨어가 서버에 연결되어있는 경우는 Saas이다.
      => Netflix, iCloud, Slack, DropBox
      => SaaS가 아닌 것 파워포인트

🤔 "서버가 터졌다."

  • 사용가능한 사양을 넘어서는 계산이 필요해진 경우 컴퓨터가 제대로 모든 계산들을 처리해내지 못하는 상황
  • 인터넷이 끊긴 상황.
  • 프로그램이 의도치 않게 종료된 상황.

🤔 서버에서의 확인

npx serve -s build
서버에서 확인 가능하게 해주는데, 내 컴퓨터를 항상 켜놓을 수 없어 아래와 같은 서비스를 이용한다.

✅ AWS 정적페이지 배포


  • AWS S3 (Simple Storage Service)

    파일을 저장하고 인터넷상으로 접근할 수 있게 해주는 서비스이다.
    정적인 파일들을 제공해주는 Storage.
    UI가 변하는 것이 동적인것이 아니라, 파일의 내용이 안변하는 것이 정적인 내용이다.

  • AWS S3에서 버킷을 생성

  • 버킷 이름은 도메인과 연결하기 용이하게 같게 지어준다.
    해외 서비스를 하지 않고 국내 서비스를 한다면 서울리전으로 선택.

  • 객체 소유권 선택
    객체 소유권의 선택란에서 해당 사항을 체크해 준다.
    (테스트만 할 예정이면, ACL 활성화됨으로 체크)

  • 퍼블릭 엑세스 차단 설정
    디폴트로 퍼블릭 엑세스 차단 설정을 체크가 되어있을텐데, 테스트 용이라면 해제하여 접근이 가능하도록 한다. 추후 설정을 위한다면 차단 후 이용.

  • 버킷 버전 관리
    디폴트로 버킷 버전 관리인 비활성화로 둔다. 설명에 잘 나와있듯이 버전 관리는 객체의 여러 버전을 동일한 버킷에서 관리하기 위한 수단이다. 테스트용이라면 여러 버전으로 관리할 필요가 없지만, 버전 관리가 필요하면 체크.

  • 기본 암호화
    암호화를 활성화하면 파일들을 버킷에 업로드할 때 암호화하여 저장할 수 있다.

고급 설정은 따로 건들필요 없이, 버킷을 생성해준다.

✅ 정적 웹사이트 호스팅


버킷의 정적 웹 호스팅 설정은 다음과 같이 속성 탭에서 확인할 수 있다. 다른 곳을 통하여 호스팅할 예정이면, 비활성화 그것이 아닌 s3로 호스팅을 하겠다면 활성화한다.
버킷 이름을 클릭하여, 안으로 들어가면 속성탭 맨 마지막에 자리하고 있다.

  • 정적 웹사이트 호스팅 편집
    정적 웹 사이트 호스팅을 활성화해주고, 인덱스 문서와 오류문서를 등록해준다. 오류 문서를 등록하지 않으면 새로고침시 문제가 발생할 수 있다. 편집으 완료하면 버킷 웹 사이트 엔드포인트가 생성되어 나타난다.

✅ Build한 정적 파일을 S3버킷에 업로드


빌드된 파일들을 드래그해서 화면에 직접 넣어도 되고, 업로드를 눌러서 파일을 올려도 된다.

  • 파일의 ACL 퍼블릭 설정
    ACL 설정을 퍼블릭으로 했다고 해서 모든 권한이 퍼블릭이 된 것은 아니다. 올린 파일들의 대한 권한을 퍼블릭으로 설정해주자.


이제 엔드포인트로 접속하면, 웹사이트가 보일 것이다.

✅ 정책 설정


  • Least Privilege Principle

    사용자나 프로세스에게 필요한 최소한의 권한만 부여하여 시스템의 보안을 강화하는 것을 의미한다. 즉 보안은 다 막고 필요한 부분을 열어주는 것이다.

  • 기본적인 status 코드

    • 200번대는 성공
    • 300번대는 리다이렉트
    • 400 클라이언트
      => 서버가 생각한 잘못은 400번대로 전달된다.
    • 500 서버
      => 서버에서 핸들링하지 못한 에러일때도 500번이 전달된다.

🤔 버킷 정책

  • 기본적으로 공개 액세스 차단을 풀어줘야 설정을 진행할 수 있다. 1차적으로 여기서 걸러주기 때문이다.
  • 정책 설정
    • 기본적으로 json 형식을 작성한다.
    • Statement 안에 권한에 대한 내용을 넣어준다.
    • Sid => Statement id
    • Effect => 허용 / 불허의 내용을 넣어준다.
    • Principal => 어느 대상에게 이 내용을 설정 할 것인지 명시한다.
    • version 언제 문법을 사용할 것인지 명시해 준다.
    • object => 객체 => 파일
    • Action => s3:GetObject
      이 버킷에 대해서 허용할거야 버킷 ARN 넣어준다.
      Resource => 어떤 파일을 열어 줄 것인지. arn/* 하면 이 버킷의 모든 파일 접근이 가능해진다.

👍 모든 설정을 문서를 보고 적용하기는 힘들다. 문서 편집에서 친절히 설명을 해주기 때문에 거기서 필요한 설정들을 선택해서 넣어준다. 다시 업로드 할때에는 기존의 객체들을 한 번 삭제해주고 올려주는 것이 안전하다.

profile
로건의 개발이야기

0개의 댓글