서버, 데이터베이스, 스토리지, AI, 네트워킹 등의 다양한 클라우드 서비스를 제공하는 플랫폼
클라우드 스토리지 서비스 로, 객체(Object) 단위로 데이터를 저장하고 관리할 수 있는 저장소입니다.
정적 웹사이트 호스팅(=배포), 백업 및 복구, 로그 저장, 데이터 아카이빙 등에 사용객체(파일) 을 업로드하거나 접근 권한을 설정 [배포]
개발한 소프트웨어를 실제 사용자에게 제공할 수 있도록 운영 환경에 올리는 과정 (다른 사용자들이 인터넷을 통해서 사용할 수 있게 만드는 걸 의미)
* EX 1) 개인적으로 개발할 때는 localhost 라는 주소로 테스트 및 개발을 진행하지만 이는 본인 외의 다른 컴퓨터에서는 접근이 불가능한 주소이다.
이를 배포하게 되면 IP 주소나 도메인과 같이 고유의 주소를 부여받게 되며 다른 컴퓨터에서도 해당 주소로 접속할 수 있도록 하는 것이 배포이다.
* EX 2) 웹 브라우저 주소창에 naver.com으로 접속하면 그 웹 페이지를 운영하고 있는 컴퓨터로 접속하는 것처럼 보이지만,
웹페이지를 운영하고 있는 서버로 부터 HTML, CSS, JS 등을 다운 받아와서 브라우저에 끼워 넣어 실행시키는 방식이다.
이처럼 파일을 다운 받아와서 사용해야 하기 때문에 S3을 활용
" Create Bucket "
버킷 생성 ( Create a bucket )
S3의 모든 객체는 버킷에 저장됩니다.
S3에 파일과 폴더를 업로드하려면 객체가 저장될 버킷을 생성해야 합니다.
버킷
깃허브에서 만드는 레포지토리처럼 S3 에서도 여러개의 저장소를 만들 수 있음
객체
S3 버킷에 업로드된 파일
Bucket name : 원하는 이름 설정 및 추후 변경 가능
S3 해당 버킷에 익명의 사용자 접근 여부 설정 - 파일 조회 가능 여부 및 다운 가능 여부에 대한 접근을 열어줄 것이냐.
제일 하단에 Create bucket 클릭
Permissions 탭 들어가기
Bucket policy : 정책 작성 (Edit)
정책 : 권한을 정의하는 JSON 문서 , 어떤 권한을 부여할 지에 대한 코드
AWS 는 기본적으로 권한이 주어져있지 않아서 특정 소스에 접근을 하려면 권한을 허용 해주어야 함
ex) ~~ 이런 기능만 ~~ 사용자가 사용하였으면 좋겠어요 !
Add new statement (새 정책문 추가)
옆에 작은 검색창에 S3 -> GetObject 검색 및 클릭하면 코드 자동 생성
Add resource
Resource type : object
Resource ARN : arn:aws:s3:::{BucketName}/{ObjectName}
{BucketName} - 해당 버킷 이름 (insta-web-neul) / {ObjectName} - 버킷 에서 허용할 객체 (파일) * 은 모든 파일을 의미
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Principal": "*",
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::insta-web-neul/*"
]
}
]
}
Principal : 허용할 주체 → "*" : 전체를 의미
Effect : Allow → 허용하겠다
Action : 허용할 Action → 파일을 다운받는 기능을 허용하겠다 . 모든 사용자에게 .
Resource : S3 중에서 insta-web-neul 이라는 버킷 안에 있는 모든 객체에 대해서만 파일을 다운받겠다.
index.html 으로 지정하는 것을 추천
Propertie 탭으로 이동

▫️ 프로젝트 생성 및 파일 번들링
1. [프로젝트 생성]
npx create-react-app insta-web-cra
2. [번들링 작업]
npm run build
[번들링 작업]
이미 React에 맞춰진 src 파일들이 존재하지만, 비효율적인 구성으로 되어있음
build 라는 과정을 거쳐서 배포하기 좋은 형태로 패키징 및 가공을 하여 가공된 파일을 S3 에 업로드
여러 개의 모듈을 하나의 파일(또는 여러 개의 최적화된 파일)로 묶음
이렇게 build 폴더 안에 번들링 된 파일이 생성됨 (정적파일)
▫️ 객체 (파일) 업로드
build 라는 폴더 자체를 업로드하면 안 됨 !! 해당 폴더 안의 파일들을 업로드 !
▫️ 프로젝트 생성 및 파일 번들링
1. [프로젝트 생성]
npm create vite@latest
2. [프로젝트에 필요한 패키지를 설치] 무조건 설치 후 npm i 먼저 !!
npm i
3. [번들링 작업]
npm run build
[번들링 작업] 후 Vite 는 dist 폴더 생성
▫️ 객체 (파일) 업로드
1. [프로젝트 생성]
npx create-next-app@latest
2. [next.config.mjs 에 아래 내용 추가]
const nextConfig = {
output: 'export'
};
3. [번들링 작업]
npm run build
Next.js 는 정적/동적 배포 방법이 모두 존재하지만 동적 배포는 S3를 통해 불가하다 ( CRA , Vite 는 정적 웹페이지 )
next.config.mjs 파일에 아래 내용 추가 하여 옵션 설정 후 build
[번들링 작업] 후 Next.js 는 out 폴더 생성
▫️ 객체 (파일) 업로드
out 폴더 안의 파일 (객체) 업로드 하면 됨