[S3] 05. S3 구축 및 정적 데이터 연결
2024-07-11 오전 12시 16분
2024-07-11 오전 12시 16분
S3
이제 S3
버킷에 이미지 파일을 업로드하고
실제로 html
에서 호출하는 작업을 익혀보겠습니다.
그전에 S3
가 뭔지부터 가볍게 이야기 해볼까요
✅ S3 란?
저희는 사진이나 동영상 등의 파일을 구글드라이브등에 저장합니다.
S3
는 이런종류의 서비스입니다.
S3
에서 자주나오게 되는 단어는 버킷과 객체 입니다.
버킷
: 생성한 S3
자체, 저장소를 의미합니다.
객체
: S3
내에서 폴더, 파일등의 파일을 의미합니다.
✅ 왜 S3를 사용할까?
S3는 저장에 특화된 서비스입니다. 부가적인 기능도 제공하는데요.
대표적으로 정적 웹 페이지 호스팅이 존재합니다.
또한, 백엔드에서 이미지 업로드 기능을 구현하는 경우,
이 이미지 파일을 저장할 수단으로 EC2
를 활용할 수도 있지만,
S3
에 저장하면 되는 것입니다.
✅ 이미지 업로드 아키텍처 구조

IMAGE path
- RDS
IMAGE file
- S3
IMAGE logic
- EC2
위와 같은 방식으로 처리하게 됩니다.
✅ S3 구축하기
이제 실제로 S3
를 구축해봅시다.
AWS
에서 S3
에 접속하여 버킷을 생성합니다.

모든 퍼블릭 억세스를 허용
합니다. 이는 S3에서 이미지를 요청할 유저는 불특정 다수이기때문에,
모두가 접근할 수 있도록 허용해야 합니다.
cloudfront
를 활용해서 s3
를 안전하게 사용할 수 있지만, 지금은 일단 s3
자체의 사용법만 다루겠습니다.
✅ S3 정책 설정
모두가 접근할 수 있도록 하더라도, aws
에서는
접근자에게 추가적인 엑서스 권한을 설정해야만 다른 사용자가 사용할 수 있습니다.
이러한 보안설정을 하기위해 버킷을 선택하고, 권한 탭으로 이동합니다.

버킷 정책 편집으로 접속합니다.

S3 - GetObject를 검색하여 객체를 가져올 수 있는 GET
권한을 제공합니다.

리로스 추가 탭에서 리소스 ARN
을 작성합니다.
ARN은 AWS에 존재하는 리소스를 표현한다고 생각하시면 되는데요.
만드신 버킷의 이름과, /*
를 작성하시면 됩니다. *
는 모든경로를 의미합니다.
만약 특정 경로만 접속시키고 싶으시다면 원하는 path
를 작성하면 됩니다.

Principal
을 편집하여 *
를 넣습니다.
principal
은 보안 주체로서, 버킷에 대한 억세스 권한을 의미합니다. 모두가 사용해야하므로 *
를 넣었습니다.
이제 버킷에 아무 이미지를 업로드해봅니다.

객체 URL
을 확인할 수 있습니다. 이제 저 URL
로 접근하면 실제로 이미지를 확인해 볼 수 있습니다.
실제 웹에서 파일 불러오기
위에 말씀드렸듯 실제로 s3
에서는 정적 웹호스팅이 가능합니다. 직접 한번 시도해보겠습니다.
이전에 만들어둔 s3
로 들어갑니다.
속성 탭 최하단을 보시면 정적 웹 사이트 호스팅이 보일겁니다.
해당 페이지로 편집창을 들어갑니다.

정적 웹사이트 호스팅을 활성화 하고 index.html
를 활성화 합니다.
인덱스 문서에 어떤문서를 지정할지 잘 골라주셔야 합니다.
이제, index.html
을 원하는대로 제작해서 업로드 해서 접속해봅니다.

경로는 정적 웹사이트 호스팅에 엔드포인트로 제공해줍니다.
접속해보시면 배포하신 사이트가 나오는걸 확인하실 수 있습니다.
하지만 http
로 나오면서, 인증된 페이지가 아닌 점도 확인할 수 있습니다.
다음 포스트에서는 react
페이지를 배포해보고
route53
을 연동하여 도메인을 할당하고
cloudfront
를 연동하여 https
를 처리해보겠습니다.
댓글은 포스팅에 도움이됩니다. 적극적인 의견 감사드립니다.