TL;DR
- CloudFront๋ AWS์ ๊ธ๋ก๋ฒ CDN ์๋น์ค
- S3์ ์ฌ๋ฆฐ ์ ์ ํ์ผ(JS, CSS, HTML, ์ด๋ฏธ์ง ๋ฑ)์ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๋น ๋ฅด๊ฒ ์ ๊ณต
- OAC(Origin Access Control) ๋ฅผ ์ฌ์ฉํด ๋ณด์ ๊ฐํ (S3๋ฅผ ํผ๋ธ๋ฆญ์ผ๋ก ์ด์ง ์์)
- Route 53์ ํตํด ๋๋ฉ์ธ๊ณผ ์ฐ๊ฒฐ ๊ฐ๋ฅ
- ์ต์ ๋ฐฉ์์ S3 + CloudFront + Route 53 ์กฐํฉ์ด ์ ์
1. CloudFront๋?
- CloudFront๋ AWS์์ ์ ๊ณตํ๋ CDN(Content Delivery Network) ์๋น์ค์
๋๋ค.
- ์ฌ์ฉ์๊ฐ ์ด๋์ ์ ์ํ๋ , ๊ฐ์ฅ ๊ฐ๊น์ด ์ฃ์ง ๋ก์ผ์ด์
(์๋ฒ)์์ ์ ์ ํ์ผ์ ์ ๊ณตํด ์ฑ๋ฅ์ ๋์ฌ์ค๋๋ค.
- ๋จ์ ์บ์ฑ๋ฟ ์๋๋ผ HTTPS(๋ณด์), WAF(๋ณด์ ๋ฐฉํ๋ฒฝ), ๊ฒฝ๋ก ๊ธฐ๋ฐ ๋ผ์ฐํ
๊ธฐ๋ฅ๋ ํจ๊ป ์ ๊ณต.
2. S3 ๋ฒํท ์ค๋น
- AWS ์ฝ์ โ S3 > ๋ฒํท ์์ฑ
- ๋ฒํท ์ด๋ฆ์ ์ ๋ํฌํ๊ฒ ์ค์ (์:
myapp-bucket)
- ํผ๋ธ๋ฆญ ์ก์ธ์ค ์ฐจ๋จ์ ์ผ๋ (์ง์ ํผ๋ธ๋ฆญ ๊ณต๊ฐ X)
- ๋น๋๋ ์ ์ ํ์ผ(
index.html, JS, CSS ๋ฑ)์ ์
๋ก๋
3. CloudFront ๋ฐฐํฌ ์์ฑ
-
CloudFront > ๋ฐฐํฌ ์์ฑ
-
์๋ณธ(Origin) ์ค์
- Origin Type: S3
- Origin Access: OAC(Origin Access Control) โ CloudFront๋ง S3์ ์ ๊ทผ ๊ฐ๋ฅ
-
์บ์ ๋์(Behavior) ์ค์
- Viewer Protocol Policy: HTTP โ HTTPS ๋ฆฌ๋ค์ด๋ ํธ
- Allowed Methods: GET, HEAD (ํ์ํ๋ฉด POST ๋ฑ ์ถ๊ฐ)
- Cache Policy: ๊ธฐ๋ณธ(CachingOptimized) ์ฌ์ฉ ๊ฐ๋ฅ
-
๋ฐฐํฌ ์์ฑ(Create distribution) ํด๋ฆญ
4. Route 53์ผ๋ก ๋๋ฉ์ธ ์ฐ๊ฒฐ
-
Route 53 > ํธ์คํ
์์ญ(Hosted Zone) ์์ฑ (์ด๋ฏธ ๋๋ฉ์ธ์ด ์๋ค๋ฉด ํด๋น ๋๋ฉ์ธ ์ ํ)
-
๋ ์ฝ๋ ์์ฑ
- ๋ ์ฝ๋ ์ด๋ฆ:
www.myapp.com
- ์ ํ: A (Alias)
- Alias ๋์: CloudFront ๋ฐฐํฌ ๋๋ฉ์ธ ์ ํ
-
์์ฑ ์๋ฃ ํ, www.myapp.com ์ผ๋ก ์ ์ํ๋ฉด CloudFront ๋ฐฐํฌ์ ์ฐ๊ฒฐ๋จ
5. S3 ๋ฒํท ์ ์ฑ
์ค์
CloudFront๊ฐ S3 ํ์ผ์ ์ฝ์ ์ ์๋๋ก ๊ถํ ๋ถ์ฌ๊ฐ ํ์ํฉ๋๋ค.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowCloudFrontAccess",
"Effect": "Allow",
"Principal": {
"Service": "cloudfront.amazonaws.com"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::myapp-bucket/*",
"Condition": {
"StringEquals": {
"AWS:SourceArn": "arn:aws:cloudfront::<account-id>:distribution/<distribution-id>"
}
}
}
]
}
6. ์ ์ ์น์ฌ์ดํธ ํธ์คํ
์ต์
(์ฃผ์)
- ๊ณผ๊ฑฐ์๋ S3 ์ ์ ์น์ฌ์ดํธ ํธ์คํ
๊ธฐ๋ฅ์ ์ง์ ์ผ์
index.html์ ๋
ธ์ถํ์
- ํ์ง๋ง ํ์ฌ๋ CloudFront + OAC ์กฐํฉ์ด ๋ณด์๊ณผ ํ์ฅ์ฑ ์ธก๋ฉด์์ ๊ถ์ฅ๋จ
- ์ฆ, S3๋ ๋จ์ ํ์ผ ์ ์ฅ์ ์ญํ ๋ง ํ๊ณ , ์ฌ์ฉ์ ์ ๊ทผ์ CloudFront๋ฅผ ํตํด์๋ง ์ฒ๋ฆฌ
7. ์ ์ฒด ํ๋ฆ
- ์ฌ์ฉ์๊ฐ
https://www.myapp.com ์ ์
- Route 53 โ CloudFront ๋ฐฐํฌ ์ฐ๊ฒฐ
- CloudFront๊ฐ ๊ฐ์ฅ ๊ฐ๊น์ด ์ฃ์ง ์๋ฒ์์ ์บ์๋ ์ ์ ํ์ผ ์ ๊ณต
- ์บ์๊ฐ ์์ผ๋ฉด ์๋ณธ(S3)์์ ๊ฐ์ ธ์ ์ฌ์ฉ์์๊ฒ ์ ๋ฌ
User โ Route 53 โ CloudFront (CDN) โ S3 (์ ์ ํ์ผ)
๋ง๋ฌด๋ฆฌ
- CloudFront๋ ๋จ์ CDN์ ๋์ด, ๋ณด์ + ์ฑ๋ฅ + ํ์ฅ์ฑ์ ๋์์ ์ ๊ณตํ๋ AWS์ ํต์ฌ ์๋น์ค์
๋๋ค.
- ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ ๋ฐฐํฌ๋ ๋น๋ ๊ฒฐ๊ณผ๋ฌผ์ S3์ ์
๋ก๋ํ๊ณ ,
CloudFront์ ์ฐ๊ฒฐ๋ง ํด์ฃผ๋ฉด ์ ์ธ๊ณ ์ด๋์๋ ๋น ๋ฅธ ์๋๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ์ ๊ณตํ ์ ์์ต๋๋ค.