AWS S3 입문자를 위한 실전 가이드: S3개념, 버킷 생성, 정적 웹호스팅, CLI 조작까지

AWS S3를 처음 사용하는 사용자가 실제로 활용해볼 수 있도록, 사용 흐름에 따라 필요한 내용을 정리했습니다. 복잡한 설명보다는 직접 따라 하며 익힐 수 있도록 구성했습니다.

이 글에서는 다음과 같은 흐름으로 AWS S3를 실습해봅니다:

  • AWS S3가 무엇인지 간단히 개념 정리
  • S3 버킷 생성 및 퍼블릭 정책 설정
  • 정적 웹사이트 호스팅 예제
  • CLI를 이용한 S3 조작
  • 자주 겪는 실수와 해결 방법

1. AWS S3란?

S3(Simple Storage Service)는 AWS에서 제공하는 객체 스토리지 서비스입니다. 사용자는 데이터를 버킷(bucket)이라는 컨테이너 단위로 저장하고, 웹이나 애플리케이션에서 이를 쉽게 가져다 쓸 수 있습니다.

주요 특징:

  • 객체 기반 저장소 (파일 단위로 저장)
  • 무제한 저장 가능
  • 정적 웹사이트 호스팅 기능 제공
  • 퍼블릭/프라이빗 권한 제어 가능


2. S3 버킷 생성 및 퍼블릭 설정

AWS 콘솔에서 버킷 생성하기

  1. AWS 콘솔에 로그인합니다.
  2. 상단의 "버킷 만들기" 버튼 클릭
  3. 다음과 같이 입력합니다:
    • 버킷 이름: 고유한 이름 (예: my-first-s3-bucket-demo)
    • 리전: 가까운 리전 선택 (예: Asia Pacific (Seoul))
  4. 퍼블릭 액세스 차단 설정에서 모두 해제 (정적 웹사이트를 퍼블릭하게 열람 가능하게 하기 위해)
  5. 나머지 기본 설정 그대로 두고 "버킷 만들기" 클릭

버킷 정책 설정 (퍼블릭 읽기 권한 부여)

버킷 > 권한 > 버킷 정책에서 다음 JSON을 입력합니다:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadGetObject",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::my-first-s3-bucket-demo/*"
    }
  ]
}

버킷 이름이 다르다면 Resource 값을 해당 이름에 맞게 수정해야 합니다.

 

 


3. 정적 웹사이트 호스팅 설정

  1. 버킷 > 속성 > 정적 웹사이트 호스팅으로 이동
  2. "정적 웹사이트 호스팅 사용" 선택
  3. 인덱스 문서 이름 입력 (예: index.html)
  4. 저장

이제 이 버킷에 index.html 파일을 업로드하면 누구나 해당 파일을 웹에서 볼 수 있습니다.


4. AWS CLI를 통한 파일 업로드

AWS CLI 설치

$ brew install awscli  # macOS
$ sudo apt install awscli  # Ubuntu

설치 후, 다음 명령으로 인증 정보를 설정합니다:

$ aws configure
AWS Access Key ID [None]: YOUR_ACCESS_KEY
AWS Secret Access Key [None]: YOUR_SECRET_KEY
Default region name [None]: ap-northeast-2
Default output format [None]: json

파일 업로드

$ aws s3 cp index.html s3://my-first-s3-bucket-demo/

업로드된 파일 확인

정적 웹사이트 호스팅 URL로 접속하여 정상적으로 업로드되었는지 확인합니다.


5. 자주 겪는 실수와 해결 방법

상황해결 방법

웹사이트 접속이 안 됨 버킷 정책이 퍼블릭 읽기 권한을 포함하고 있는지 확인
403 Forbidden 오류 객체(파일)에 퍼블릭 권한이 부여되지 않았거나 정책 누락
index.html이 보이지 않음 정적 웹 호스팅 설정에서 index 문서 이름이 올바른지 확인

 


마무리

여기까지 따라오셨다면 AWS S3의 기본 개념부터 버킷 생성, 정적 웹사이트 배포, CLI 업로드까지 실습해본 셈입니다. 익숙해지면 버전 관리, CORS 설정, 수명주기 정책 등 고급 기능도 자연스럽게 익혀볼 수 있습니다.

참고 링크: