쌩로그

AWS S3 본문

Deploy/AWS

AWS S3

.쌩수. 2023. 6. 28. 00:33
반응형

목차

  1. 포스팅 개요
  2. 본론
      2-1. S3란?
        2-1-1. Standard 클래스
        2-1-2. Glacier 클래스
      2-2. S3의 이점
        2-2-1. 정적 웹 사이트 호스팅
      2-3. 버킷
        2-3-1. 객체
      2-4. S3 구축
        2-4-1. S3 버킷 생성
        2-4-2. 정적 웹 페이지 파일 업로드
        2-4-3. 퍼블릭 액세스 설정
        2-4-4. 정책 생성
  3. 요약

1. 포스팅 개요

S3에 대해 간략히 알아보고 구축하는 방법에 대한 포스팅이다.

1-1. S3가 필요한 이유

현재 나에게 S3가 필요한 이유는 Github Actoins를 이용해서 CI/CD 자동 배포가 되도록 구축하는데,
Github Actions에서 빌드를 진행하고,
빌드된 jar파일은 S3 - CodeDeploy를 거쳐 EC2에서 실행되어 배포되기 때문에 S3가 필요하다. 그래서 S3를 구축하게 되었다.

따라서 S3가 무엇인지 간략하게 알아보고 S3 구축해보도록 하겠다.

2. 본론

2-1. S3란?

  • S3는 Simple Storage Service의 약자로 AWS에서 제공하는 클라우드 스토리지 서비스이다.
  • S3는 다양한 스토리지를 제공하는데, 어떤 목적으로 활용할 지에 따라 효율적으로 선택할 수 있는 스토리지 클래스가 다르다.
    • 대표적으로 많이 선택하는 스토리지 클래스는 두가지가 있는데, Standard 클래스Glacier 클래스이다.

2-1-1. Standard 클래스

  • 범용적이다.
  • 데이터에 빠른 속도로 접근할 수 있다.
  • 데이터 접근 요청에 대한 처리 속도도 빠르다.
  • 데이터를 오래 보관하는 경우 비용이 높게 발생한다.

2-1-2. Glacier 클래스

  • 오래 보관할 때 높은 비용이 발생하는 Standard와는 다르게 장기적인 보관 목적으로는 효율적인 선택
  • 데이터에 액세스하는 속도는 느림.
  • Standard와 달리 데이터를 보관하는 비용은 매우 저렴

2-2. S3의 이점

2-2-1. 정적 웹 사이트 호스팅

  • 정적 파일 : 서버의 개입 없이 생성된 파일을 의미
  • 웹 호스팅 : 서버의 한 공간을 임대해 주 서비스를 의미
    S3는 버킷을 통해서 정적 웹 호스팅을 지원한다..

2-3. 버킷

  • 버킷S3에 저장되는 파일들이 담기는 최상위 디렉터리이다.
  • S3에 저장되는 모든 파일은 버킷 안에 저장되어야 한다.
  • 버킷에는 무한한 양의 파일을 저장할 수 있다.
  • 버킷은 각각의 이름을 가지는데 이 이름은 버킷이 속해 있는 리전(버킷이 생성되는 지역)에서 고유해야한다.
  • 버킷 정책을 생성하여 버킷에 대한 다른 유저의 접근 권한을 수정할 수 있다.

2-3-1. 객체

  • 버킷에 담기는 파일을 의미
  • 키-값 형식으로 데이터가 저장됨.
  • S3에 저장되는 객체는 파일메타데이터로 구성됨.
  • 파일
    • 파일의 키객체를 고유하게 만들어주는 식별자 역할을 한다
    • 를 이용하여 원하는 객체를 검색할 수 있다.
  • 메타데이터
    • 객체를 설명하는 데이터

2-4. S3 구축

이제 S3를 대략적으로 구축해보자!

2-4-1. S3 버킷 생성

S3 버킷에서 버킷 만들기를 해준다.

이름을 지정해주는데,
주의 사항이 있다. 이름이 알맞지 않으면 알려주긴 하지만,

  • 대문자는 쓸 수 없고, 오직 소문자로만 구성되어야 한다.
  • 이름도 아무도 쓰지 않은 고유한 이름을 써야한다.

일단 여기까지 해주고, 화면 최하단으로 이동해서 버킷을 만들어준다.

버킷 이름을 클릭해서 들어가준다.
(화면상 가려놓은 곳이다.)

속성으로 이동한다.

페이지 최하단에 정적 웹 사이트 호스팅 탭에서 편집을 클릭한다.

비활성화 되어있는 부분을 활성화 해준다.

활성화를 하면 아래와 같은 화면이 보이는데.

아래의 인덱스 문서 쪽에 기본 페이지로 저장할 정적 파일이름을 지정한다.
일단은 인덱스문서, 그리고 오류가 발생했을 때 렌더링되는 페이지를 둘 다 index.html로 설정해주고, 경 사항을 저장한다.

변경 사항을 저장하면, 페이지가 이동하는데,
가장 아래쪽에 정적 웹 사이트 호스팅을 확인하면, 버킷 웹 사이트 엔드포인트가 있다.
해당 주소를 누르면, 정적 페이지가 나온다.

그런데 지금은 아래와 같은 페이지가 나온다.

해당 페이지가 나오는 이유는 다음과 같다.

  1. 버킷에 정적 웹 페이지 파일을 아직 업로드하지 않았음.
  2. 퍼블릭 액세스 설정이 모두 차단으로 되어있음.
  3. 정책 생성을 해주지 않았기 때문.

즉, 이 세 가지를 해결하면, 제대로 된 정적페이지가 나온다.

2-4-2. 정적 웹 페이지 파일 업로드

먼저 정적 웹 페이지 파일 업로드부터 해보자.
객체 탭으로 이동한다.

업로드를 하는데, 파란글씨는 equal이라고 쓴 건데, 이 둘은 똑같은 거다.
아무거나 클릭해서 업로드를 진행해주면된다.

파일을 업로드 할 때 드래그가 가능하다.

✅여기서 주의할 점이 있다.

  • 폴더를 넣는 것이 아니라 파일 자체를 넣어주어야 한다는 점주의하자!!

그리고 파일을 올려주면, 아래와 같이 파일이 들어가게된다.
(대상은 S3 버킷 이름이 나와서 가렸다.)
업로드를 진행해준다.

업로드가 완료되면 화면 상단에 아래와 같은 문구가 나온다.

2-4-3. 퍼블릭 액세스 설정

다음은 퍼블릭 액세스 설정을 해줘야 한다.
권한 탭으로 이동하자.

퍼블릭 액세스 차단(버킷 설정)이 기본적으로 모두 차단되도록 설정되어있다.
편집을 눌러서 차단을 해제해주자.

편집 - 모든 퍼블릭 액세스 차단 해제 - 변경 사항 저장 순으로 진행해주면된다.
(아래 그림 참고)

확인도 해준다..;;ㅋㅋ

2-4-4. 정책 생성

이제 정책 생성을 해주면 되는데,

버킷 정책편집을 눌러준다.
(참고 : 편집 버튼은 화면의 크기에 따라 위치가 달라진다.)

정책 생성기로 정책을 생성해준다.

정책 타입을 설정해준다.
S3 Bucket Policy를 선택해주면 된다.

Principal옵션은 권한을 적용할 사용자를 지정하는 것인데,
일단 모두를 허용하도록 한다.
*(Asterisk)을 입력해준다.

그리고 Actions에는 GetObject를 선택해주면된다.

  • 이 옵션은 버킷에 접근하는 모든 사용자버킷 내에 저장된 객체 데이터를 읽을 수 있게 된다.
  • 버킷을 웹 사이트 용도로 구성할 때 선택하면 좋다.
    한 가지만 선택했기 때문에 1 Action(s) Selected 로 표시된다.

그리고,
Amazon Resource Name(ARN)에는 아래와 같은 형식으로 입력해준다.
&gt &gt arn:aws:s3:::버킷이름/*

참고로 /* 전 까지는 버킷 정책 생성기를 클릭한 곳에 ARN으로 잘 표시되어있다.
(아래 사진 참고)

그리고 Add Statement로 정책 구문을 만들고, Generate Policy를 눌러 정책을 생성해준다.

그러면 이제 아래에 JSON 형태로 정책 구문이 생성된다.

이 JSON 구문을 복사해서 정책 편집 창에 붙여넣기 해준다.

그리고 아래에 변경 사항 저장을 눌러 정책을 적용해준다.
다시 속성 탭의 최하단에 있는는 엔드포인트에서 index.html이 제대로 나오는지 확인해준다.

이렇게 화면이 잘 나오는 것을 확인할 수 있다.

3. 요약

S3는 버킷을 이용해서 정적 파일을 업로드하여 정적 파일을 접근하게 해주는 AWS에서 제공하는 기능이다.
그리고 그것을 생성하는 대략적인 방법에 대해 알아보았다...

끝.

내가 성장하는 것이 다른 사람에게 좋은 영향을 줄 수 있다.

그래서 나는 잘 되야만 한다.

나는 진짜 ㄹㅇ 조만간 잘 될 사람이다.

어차피 잘 될 것이고, 지금도 잘 된 사람이다..

요즘 폭풍 성장 중이다.

어쨋든간 나는 어잘될사다.

728x90

'Deploy > AWS' 카테고리의 다른 글

AWS CodeDeploy 구축  (0) 2023.06.29
IAM 서비스 역할과 사용자 생성  (0) 2023.06.28
AWS 보안 그룹 설정  (0) 2023.06.27
AWS RDS 연결 방법  (0) 2023.06.13
AWS EC2 인스턴스 생성(with 탄력적 IP)  (0) 2023.06.13
Comments