AWS S3를 처음 사용하는 사용자가 실제로 활용해볼 수 있도록, 사용 흐름에 따라 필요한 내용을 정리했습니다. 복잡한 설명보다는 직접 따라 하며 익힐 수 있도록 구성했습니다.
이 글에서는 다음과 같은 흐름으로 AWS S3를 실습해봅니다:
- AWS S3가 무엇인지 간단히 개념 정리
- S3 버킷 생성 및 퍼블릭 정책 설정
- 정적 웹사이트 호스팅 예제
- CLI를 이용한 S3 조작
- 자주 겪는 실수와 해결 방법
1. AWS S3란?
S3(Simple Storage Service)는 AWS에서 제공하는 객체 스토리지 서비스입니다. 사용자는 데이터를 버킷(bucket)이라는 컨테이너 단위로 저장하고, 웹이나 애플리케이션에서 이를 쉽게 가져다 쓸 수 있습니다.
주요 특징:
- 객체 기반 저장소 (파일 단위로 저장)
- 무제한 저장 가능
- 정적 웹사이트 호스팅 기능 제공
- 퍼블릭/프라이빗 권한 제어 가능
2. S3 버킷 생성 및 퍼블릭 설정
AWS 콘솔에서 버킷 생성하기
- AWS 콘솔에 로그인합니다.
- 상단의 "버킷 만들기" 버튼 클릭
- 다음과 같이 입력합니다:
- 버킷 이름: 고유한 이름 (예: my-first-s3-bucket-demo)
- 리전: 가까운 리전 선택 (예: Asia Pacific (Seoul))
- 퍼블릭 액세스 차단 설정에서 모두 해제 (정적 웹사이트를 퍼블릭하게 열람 가능하게 하기 위해)
- 나머지 기본 설정 그대로 두고 "버킷 만들기" 클릭
버킷 정책 설정 (퍼블릭 읽기 권한 부여)
버킷 > 권한 > 버킷 정책에서 다음 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. 정적 웹사이트 호스팅 설정
- 버킷 > 속성 > 정적 웹사이트 호스팅으로 이동
- "정적 웹사이트 호스팅 사용" 선택
- 인덱스 문서 이름 입력 (예: index.html)
- 저장
이제 이 버킷에 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 설정, 수명주기 정책 등 고급 기능도 자연스럽게 익혀볼 수 있습니다.
참고 링크:
'개발 > 기타' 카테고리의 다른 글
코딩을 처음 시작하는 사람들을 위한 언어 추천 (Python, JavaScript 등) (3) | 2025.04.28 |
---|---|
초보자를 위한 쿠버네티스 입문 가이드 (0) | 2025.04.27 |
[JAVASCRIPT] 문자열을 배열로, 배열을 문자열로 바꿔주는 split() 함수와 join()함수 (0) | 2022.12.17 |
[JAVASCRIPT] 자바스크립트 배열 특정 요소 검색 includes() (0) | 2022.12.03 |
가민 (Garmin) 기술조사 와 api 사용 (0) | 2022.11.20 |