AWS S3 실전 활용법 – 정적 웹사이트부터 백업까지(Amazon Web Service)
정적 웹사이트 호스팅? 로그 백업? 파일 공유? AWS S3 하나로 다 됩니다. 실무자 관점에서 진짜로 유용한 기능만 콕 집어 알려드릴게요.
안녕하세요, 클라우드 기반 실무를 소개하는 CT리더 리치입니다.
AWS를 도입했지만 S3를 어떻게 활용할지 막막하셨던 분 계신가요?
이번 포스팅에서는 S3의 기본 개념은 물론, 실제 프로젝트에서 바로 쓸 수 있는 정적 웹사이트 호스팅, 자동 백업, 이미지 공유 등의 활용법을 정리된 예시와 함께 소개드릴게요.
특히 공공기관이나 보안 민감 서비스에서도 실현 가능한 S3 사용 방식도 함께 다룹니다.
S3에 익숙하지 않은 개발자, 운영자, 기획자 모두가 이해할 수 있도록 구성했으니 끝까지 함께 보시죠!
📌 바로가기 목차
| AWS S3 백업 설정 장면 – 남성 고퀄리티 썸네일 |
1. AWS S3란? 기본 개념 정리
Amazon S3(Simple Storage Service)는 AWS에서 제공하는 객체 기반 스토리지 서비스입니다. 대용량 파일 저장, 백업, 정적 웹 호스팅, 로그 수집 등 다양한 용도로 활용되며, 무한에 가까운 확장성, 99.999999999 내구성, 강력한 보안 기능을 자랑합니다.
S3에서는 데이터를 버킷(Bucket) 단위로 관리하며, 각각의 객체는 고유 URL로 접근이 가능합니다. 웹 개발자부터 백엔드, 데이터 엔지니어까지 모두가 유용하게 활용할 수 있는 클라우드 스토리지입니다.
AWS S3(Simple Storage Service)는 AWS에서 제공하는 객체 스토리지 서비스입니다. S3는 파일을 버킷이라는 단위로 저장하며, 고가용성과 무제한 저장 용량을 제공합니다. 주로 이미지, 문서, 로그 파일, 백업 데이터, 정적 웹사이트 콘텐츠 저장 등에 사용됩니다.
S3는 버킷 생성 → 객체 업로드 → 권한 설정의 단순한 흐름으로 동작하며, 웹 콘솔 또는 AWS CLI를 통해 쉽게 다룰 수 있습니다.
# AWS CLI로 S3 버킷 생성
aws s3 mb s3://my-first-s3-bucket --region ap-northeast-2
# 파일 업로드
aws s3 cp ./index.html s3://my-first-s3-bucket/
# 버킷 내 파일 리스트 확인
aws s3 ls s3://my-first-s3-bucket/
# 퍼블릭 접근 권한 설정 (주의 필요)
aws s3api put-bucket-acl \
--bucket my-first-s3-bucket \
--acl public-read
# 버킷 정책 예시 (읽기 전용 설정)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-first-s3-bucket/*"
}
]
}
# S3에 호스팅용 정적 웹사이트 설정
aws s3 website s3://my-first-s3-bucket/ \
--index-document index.html \
--error-document error.html
2. 정적 웹사이트 호스팅 실습
AWS S3는 HTML, CSS, JS로 구성된 정적 웹사이트를 간편하게 호스팅할 수 있습니다. 서버리스 환경에서 빠르게 개인 포트폴리오, 랜딩페이지, 문서 사이트 등을 구축할 수 있어, 특히 개발 초기 단계에서 매우 유용합니다.
| 단계 | 내용 |
|---|---|
| 1 | S3 버킷 생성 (버킷 이름은 도메인과 동일하게) |
| 2 | 정적 웹 호스팅 옵션 활성화 및 index.html 지정 |
| 3 | HTML, CSS, JS 파일 업로드 |
| 4 | 퍼블릭 액세스 허용 및 권한 정책 설정 |
S3는 HTML, CSS, JS 등으로 구성된 정적 웹사이트를 호스팅할 수 있습니다. S3 버킷을 생성하고 정적 호스팅을 활성화하면 별도의 웹서버 없이도 사이트를 배포할 수 있습니다. CloudFront를 연동하면 HTTPS도 지원됩니다.
아래는 S3로 정적 웹사이트를 배포하는 전체 과정입니다.
# S3 버킷 생성 (도메인명과 일치시 권장)
aws s3 mb s3://mywebsite.example.com --region ap-northeast-2
# 정적 웹 호스팅 설정
aws s3 website s3://mywebsite.example.com/ \
--index-document index.html \
--error-document error.html
# 파일 업로드
aws s3 cp ./site/ s3://mywebsite.example.com/ --recursive
# 버킷 정책 설정 (퍼블릭 읽기 권한 부여)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mywebsite.example.com/*"
}
]
}
# 웹사이트 주소 확인
http://mywebsite.example.com.s3-website-ap-northeast-2.amazonaws.com
# 추가: CloudFront로 연결하여 HTTPS 적용 가능
3. 자동 백업 시스템 구성
업무 데이터, 서버 로그, 소스코드 등을 주기적으로 백업하고 싶다면 S3를 백업 스토리지로 활용할 수 있습니다. 특히 Lambda와 CloudWatch Events를 활용하면 일정 간격으로 자동 백업이 가능합니다.
- EC2 → S3 주기적 스냅샷 저장 자동화
- RDS 로그 또는 정기 백업 전송
- GitHub Actions를 활용한 소스코드 S3 아카이브
S3는 로컬 파일이나 DB 덤프를 주기적으로 자동 업로드하여 백업 용도로 활용할 수 있습니다. 예를 들어 Linux 시스템에서 Cron + Shell Script 조합으로 매일 백업하는 자동화 구성이 가능합니다.
#!/bin/bash
# backup-to-s3.sh
# 백업 대상 폴더
SOURCE_DIR="/home/user/data"
BACKUP_DIR="/home/user/backup"
S3_BUCKET="s3://my-backup-bucket"
DATE=$(date +"%Y-%m-%d")
# 백업 파일명
BACKUP_FILE="backup-$DATE.tar.gz"
# 디렉토리 생성 및 압축
mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/$BACKUP_FILE $SOURCE_DIR
# S3로 업로드
aws s3 cp $BACKUP_DIR/$BACKUP_FILE $S3_BUCKET/
# 로그 출력
echo "[$DATE] 백업 완료: $BACKUP_FILE 업로드됨"
# crontab 설정 예시 (매일 새벽 3시)
# 0 3 * * * /home/user/scripts/backup-to-s3.sh >> /var/log/s3_backup.log 2>&1
![]() |
| AWS S3 정적 웹사이트 및 백업 실전 가이드 – 여성 인포그래픽 |
4. 이미지 및 문서 공유하기
AWS S3는 특정 파일만 공개하거나 기간 한정으로 공유할 수 있는 기능을 제공합니다. 이를 통해 회사 자료, 마케팅 리소스, 클라이언트용 문서 등을 손쉽게 배포할 수 있습니다.
- 파일 업로드 후 해당 객체의 "퍼블릭 액세스 허용" 설정
- 정책 또는 ACL 설정으로 공개 URL 발급
- CloudFront를 연동하면 속도 향상 + 도메인 커스터마이징 가능
S3는 파일을 특정 사용자와 공유하거나, 전체 공개(퍼블릭) 형태로 문서나 이미지를 배포할 수 있습니다. 특히 마케팅 자료, 리포트, 썸네일 등을 쉽게 배포하는 데 유용합니다.
# 파일 업로드 후 퍼블릭 설정
aws s3 cp report.pdf s3://my-bucket/public/ --acl public-read
# 공유 가능한 URL
https://my-bucket.s3.ap-northeast-2.amazonaws.com/public/report.pdf
# Presigned URL로 시간 제한 링크 발급 (1시간 유효)
aws s3 presign s3://my-bucket/private/secret.png \
--expires-in 3600
# 결과 예시
https://my-bucket.s3.ap-northeast-2.amazonaws.com/private/secret.png?X-Amz-Algorithm=...
5. 스토리지 비용 절감 팁: 수명 주기 정책
장기 보관 데이터, 백업 파일 등은 고비용 S3 Standard에 계속 두기보다, 자동으로 낮은 비용의 스토리지로 이동시켜야 효율적입니다. 이럴 때 사용하는 것이 Lifecycle Policy(수명주기 정책)입니다.
| 조건 | 이동 대상 스토리지 |
|---|---|
| 30일 이후 | S3 Standard-IA (Infrequent Access) |
| 90일 이후 | S3 Glacier |
| 180일 이후 | S3 Glacier Deep Archive |
자주 접근하지 않는 데이터는 S3 Standard 대신, 비용이 낮은 IA(Infrequent Access)나 Glacier로 이동시키는 것이 좋습니다. Lifecycle Policy를 통해 자동으로 스토리지를 전환할 수 있습니다.
{
"Rules": [
{
"ID": "MoveToIA",
"Filter": {
"Prefix": "backup/"
},
"Status": "Enabled",
"Transitions": [
{
"Days": 30,
"StorageClass": "STANDARD_IA"
},
{
"Days": 90,
"StorageClass": "GLACIER"
}
],
"Expiration": {
"Days": 365
}
}
]
}
6. S3 보안 설정 실전 가이드
S3는 퍼블릭 공개 설정이 매우 간편한 만큼, 보안 설정을 반드시 사전에 구성해야 합니다. 민감 데이터를 저장하는 경우, 다음의 실전 가이드를 체크하세요.
- 퍼블릭 액세스 차단 기본 설정 유지 (Block all public access)
- 객체 수준 암호화(SSE-S3 또는 KMS) 활성화
- IAM 정책 및 버킷 정책으로 접근자 제한 설정
S3는 퍼블릭 설정이 쉬운 만큼, 보안 실수가 자주 발생합니다. 기본 설정을 통해 민감 데이터가 외부에 노출되지 않도록 해야 하며, IAM 권한, 버킷 정책, 암호화 기능을 종합적으로 사용해야 합니다.
# 모든 퍼블릭 접근 차단
aws s3api put-bucket-policy --bucket my-bucket --policy '{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BlockPublicAccess",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
],
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
}
}
]
}'
# 서버 측 암호화(SSE-S3) 활성화
aws s3api put-bucket-encryption --bucket my-bucket \
--server-side-encryption-configuration '{
"Rules": [
{
"ApplyServerSideEncryptionByDefault": {
"SSEAlgorithm": "AES256"
}
}
]
}'
![]() |
| AWS S3 실전 백업 및 보안 설정 – 남성 중심 고화질 인포그래픽 |
7. 자주 묻는 질문 (FAQ)
정적 콘텐츠만 포함된 소규모 사이트라면 월 1~2달러 미만으로도 충분히 운영이 가능합니다. 트래픽과 저장 용량에 따라 달라집니다.
네, Route 53 또는 외부 DNS 서비스와 연동하면 커스텀 도메인 연결이 가능합니다.
S3 자체는 CSA STAR 인증 등 다양한 글로벌 인증을 보유하고 있으며, 암호화 및 접근제어 정책을 통해 공공기관 수준의 보안 설정도 가능합니다.
기본적으로는 가능합니다. 다만 글로벌 속도 최적화, HTTPS 적용 등의 이유로 CloudFront 연동이 권장됩니다.
모든 객체는 기본적으로 암호화되지 않기 때문에, 보안 민감 정보가 포함된 경우 반드시 서버 측 암호화(SSE)를 설정하는 것이 좋습니다.
| AWS S3로 웹사이트 배포하는 여성 실사 썸네일 |
8. 마무리 요약
✅ AWS S3는 단순한 스토리지를 넘어선 클라우드 활용의 핵심입니다
AWS S3는 파일 저장소를 넘어 정적 웹사이트, 자동 백업, 공유 기능, 비용 절감 정책까지 폭넓게 활용할 수 있는 만능 도구입니다.
특히 오늘 소개한 활용법들은 별도 서버 없이도 강력한 서비스를 구현할 수 있는 실무형 노하우들로,
개발자뿐 아니라 기획자, 운영자까지도 S3의 잠재력을 실감할 수 있는 방법입니다.
실무에 바로 적용할 수 있는 내용이니, 지금 바로 AWS 콘솔에서 실습해보세요!
또 다른 클라우드 활용법이 궁금하시다면, ICT리더 블로그를 구독해 주세요


댓글
댓글 쓰기