12B. S3์ CloudFront ์ฐ๋ํ๊ธฐ
12B. S3์ CloudFront ์ฐ๋ํ๊ธฐ ๊ด๋ จ
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํํ์ธ S3 ์ค๋ฆฌ์ง์์ CloudFront ๋ฐฐํฌDistribution๋ฅผ ์์ฑํด๋ณด๊ฒ ์ต๋๋ค.
- Bucket Name: ๋ฒํท์ ์ด๋ฆ์ ๋๋ค. ์ด ์ด๋ฆ์ ๋ชจ๋ S3 ๋ฆฌ์ ์ค์์ ์ ์ผํด์ผ ํฉ๋๋ค(examples3origin์ ์ด ์ฑ ์ ์ฐ๋ ์์ ์ ์ ๊ฐ ์ด๋ฏธ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ๊ฐ์ ์ด๋ฆ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฆผ 12-6๊ณผ๋ ๋ค๋ฅธ ์ด๋ฆ์ ์ค์ ํฉ๋๋ค).
- Region: Tokyo๋ฅผ ์ ํํฉ๋๋ค. CloudFront๋ก ๋ฐฐํฌ๋ฅผ ์์ฑํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ฆฌ์ ์ ์์น๋ ํฌ๊ฒ ์๊ด์ด ์์ต๋๋ค. ํ์ง๋ง S3์๋ ํ์ผ์ ๋งค๋ฒ ์ฌ๋ ค์ผ ํ๋ฏ๋ก ๊ฐ์ฅ ๊ฐ๊น์ด ๊ณณ์ ์ ํํฉ๋๋ค.
๋์ฟ ๋ฆฌ์ ๊ณผ ์ฑ๊ฐํฌ๋ฅด ๋ฆฌ์
์ฐ๋ฆฌ๋๋ผ์์ ๊ฐ๊น์ด ๋ฆฌ์ ์ ๋์ฟ(Tokyo)์ ์ฑ๊ฐํฌ๋ฅด(Singapore) ๋ฆฌ์ ์ ๋๋ค. ์๊ธ์ ๋์ฟ ๋ฆฌ์ ์ด ์ฑ๊ฐํฌ๋ฅด ๋ฆฌ์ ๋ณด๋ค ์ข๋ ๋น์๋๋ค. ๋ฐ๋ผ์ S3์ ์ ๋ก๋/๋ค์ด๋ก๋ ์๋๊ฐ ํฌ๊ฒ ์๊ด์ด ์๋ ์ํฉ์ด๋ผ๋ฉด ์ฑ๊ฐํฌ๋ฅด ๋ฆฌ์ ์ ์ฌ์ฉํ์ฌ ๋น์ฉ์ ์ข ๋ ์ค์ผ ์ ์์ต๋๋ค.
๊ฐ๋จํ ์น ํ์ด์ง๋ฅผ ์์ฑํฉ๋๋ค. ๋ฉ๋ชจ์ฅ์ด๋ ๊ธฐํ ํ
์คํธ ํธ์ง๊ธฐ๋ฅผ ์ด๊ณ ์๋์ ๊ฐ์ด ์์ฑํ ๋ค index.html
๋ก ์ ์ฅํฉ๋๋ค.
.
index.html
<html>
<head>
<title>Example CloudFront Distribution</title>
</head>
<body>
<p>Hello CloudFront - S3</p>
</body>
</html>
์ ์ก ๋ฐฉ์์ ์ ํํฉ๋๋ค
- Web: ์ผ๋ฐ์ ์ธ ์น ์๋ฒ ๋ฐฉ์์ ๋๋ค.
- RTMP: ๋์์ ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ํ๋กํ ์ฝ ์ ๋๋ค.
S3์ ์ค๋ฆฌ์ง์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฐํฌ๋ฅผ ์์ฑํฉ๋๋ค(๊ทธ๋ฆผ 12-12).
- Origin Domain Name: ์ค๋ฆฌ์ง์ ๋๋ฉ์ธ ์ด๋ฆ์ ์ค์ ํฉ๋๋ค. Origin Domain Name ๋ถ๋ถ์ ํด๋ฆญํ๋ฉด ํ์ฌ ์ฌ์ฉํ ์ ์๋ S3 ๋ฒํท๊ณผ ELB์ ๋ชฉ๋ก์ด ํ์๋ฉ๋๋ค. ๋ฐฉ๊ธ ์์ฑํ S3 ๋ฒํท(๊ทธ๋ฆผ 12-12์์๋ examples3origin.s3.amazonaws.com)์ ์ ํํฉ๋๋ค.
- Origin ID: ์ค๋ฆฌ์ง์ ๊ตฌ๋ถํ๋ ID์ ๋๋ค. ํฌ๊ฒ ์ค์ํ ๊ฒ์ ์๋๋ฉฐ Origin Domain Name์์ S3 ๋ฒํท์ ์ ํํ๋ฉด ์๋์ผ๋ก ์ค์ ๋ฉ๋๋ค.
- Restrict Bucket Access: S3 ๋ฒํท์ CloudFront ๋ง ์ ๊ทผํ ์ ์๋๋ก ์ค์ ํ๋ ์ต์ ์ ๋๋ค. Yes๋ฅผ ์ ํํฉ๋๋ค.
- Origin Access Identity: ์ค๋ฆฌ์ง์ ์ ๊ทผํ ์๋ณ์ ์ ๋๋ค. ์๋ก ์์ฑํ ์๋ ์๊ณ ์ด๋ฏธ ์๋ ๊ฒ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. Create a New Identity๋ฅผ ์ ํํฉ๋๋ค.
- Comment: ์๋ก ์์ฑํ ์๋ณ์ ์ด๋ฆ์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
- Grant Read Permissions on Bucket: CloudFront๊ฐ S3์์ ํ์ผ์ ์ฝ์ ์ ์๋ ๊ถํ์ ๋ฒํท์ Bucket Policy์ ์ค์ ํฉ๋๋ค. Yes๋ก ์ค์ ํ๋ฉด ๋ค๋ฅธ ๋ชจ๋ ์ ์์ ์ ํ๋๊ณ CloudFront๋ง ์ ๊ทผํ ์ ์๋๋ก ๋ฒํท์ Bucket Policy๊ฐ ์ค์ ๋ฉ๋๋ค. Yes, Update Bucket Policy๋ฅผ ์ ํํฉ๋๋ค.
- Path Pattern: CloudFront๋ก ํ์ผ์ ๊ฐ์ ธ์ฌ ๊ท์น์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ *๋ก ์ค์ ๋์ด ์์ด์ ๋ชจ๋ ํ์ผ์ ๊ฐ์ ธ์ค๊ฒ ๋ฉ๋๋ค. ์ด ๋ถ๋ถ์ ์ฌ๊ธฐ์๋ ์์ ํ ์ ์๊ณ ๋ฐฐํฌ๋ฅผ ์์ฑํ ๋ค ๋ฐ๋ก ์ถ๊ฐํ ์ ์์ต๋๋ค.
- Viewer Protocol Policy: CloudFront๋ก ๋ณด์ฌ์ง ํ๋กํ ์ฝ ์ ์ฑ
์
๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ
- HTTP and HTTPS: HTTP์ HTTPS๋ฅผ ๋ ๋ค ์ฌ์ฉํฉ๋๋ค.
- Redirect HTTP to HTTPS: ๋ชจ๋ HTTP ์ ์์ HTTPS๋ก ๋ฆฌ๋ค์ด๋ ํธ ํฉ๋๋ค.
- HTTPS Only: HTTPS๋ง ์ฌ์ฉํฉ๋๋ค.
- Allowed HTTP Methods: ํ์ฉํ๋ HTTP ๋ฉ์๋ ์ข
๋ฅ์
๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ
- GET, HEAD: ํ์ผ์ ์ฝ๊ธฐ๋ง ํ ๋ ์ ํํฉ๋๋ค.
- GET, HEAD, PUT, POST, PATCH, DELETE, OPTIONS: ๋์ ์ฝํ ์ธ ์ ์ก์ ์ฌ์ฉํ ๋ ์ ํํฉ๋๋ค.
์ด์ด์ง๋ ์ธ๋ถ ์ค์ ์ ๋๋ค
- Object Caching: ํ์ผ์ ์บ์ ์ ์ง ์๊ฐ์ ์ค์ ํฉ๋๋ค. ์ ์ง ์๊ฐ์ด ์ง๋๋ฉด CloudFront์์ ํ์ผ์ด ์ญ์ ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ
- Use Origin Cache Headers: ์ค๋ฆฌ์ง HTTP ํค๋์ ์บ์ ์ค์ (Cache-Control)์ ๋ฐ๋ฆ ๋๋ค. ๊ฐ ํ์ผ๋ง๋ค ์บ์ ์ค์ ์ ๋ค๋ฅด๊ฒ ํ ์ ์๋ ์ฅ์ ์ด ์์ต๋๋ค. ์บ์ ์ค์ ์ด ์์ผ๋ฉด ๊ธฐ๋ณธ ์บ์ ์ ์ง ์๊ฐ์ 24์๊ฐ ์ ๋๋ค.
- Customize: ๊ธฐ๋ณธ ์บ์ ์ ์ง ์๊ฐ์ ๋ฐ๋ก ์ค
- Minimum TTL: ์ต์ ์บ์ ์ ์ง์๊ฐ ์ ๋๋ค. ์ด ๋จ์๋ก ์ค์ ํด์ผ ํฉ๋๋ค. ์ด Minimum TTL ์ค์ ์๊ฐ๊ณผ ์ค๋ฆฌ์ง HTTP ํค๋์ ์บ์ ์ค์ (Cache-Control) ์๊ฐ ์ค ๊ธด ์๊ฐ์ด ์ ์ฉ๋ฉ๋๋ค.
- Forward Cookies: ์ค๋ฆฌ์ง์ ์ฟ ํค๋ฅผ CloudFront๋ฅผ ๊ฑฐ์ณ ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ ์ง ์ค์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ
- None: ์ฟ ํค๋ฅผ ์ ๋ฌํ์ง ์์ต๋๋ค. ์บ์ ์ฑ๋ฅ์ด ์ข๋ ํฅ์๋ฉ๋๋ค.
- Whitelist: ์ฟ ํค๋ฅผ ์ ๋ณํ์ฌ ์
- Whitelist Cookies: ์ ๋ฌํ ์ฟ ํค ์ด๋ฆ์ ์ค์ ํฉ๋๋ค. ๊ฐ ์ฟ ํค๋ ์ ์ค๋ก ๊ตฌ๋ถํฉ๋๋ค.
- Forward Query Strings: CloudFront์์ ์ค๋ฆฌ์ง์ผ๋ก ์ฟผ๋ฆฌ ๋ฌธ์์ด์ ์ ๋ฌํฉ๋๋ค. ์ค๋ฆฌ์ง์์ ์ฟผ๋ฆฌ ๋ฌธ์์ด์ ๋ฐ๋ผ ํ์ผ์ ๊ตฌ๋ถํ์ฌ ๋ณด์ฌ์ฃผ๊ณ ์ถ์ ๋ ์ค์ ํฉ๋๋ค. ์ค์ ํ์ง ์์ผ๋ฉด ์บ์ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
- Smooth Streaming: ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ํ๋กํ ์ฝ์ธ Microsoft Smooth Streaming์ ์ฌ์ฉํ๊ณ ์ถ์ ๋ ์ค์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
- Restrict Viewer Access: Signed URL๋ก CloudFront ์ฌ์ฉ์ ์ ํํ๊ณ ์ถ์ ๋ ์ค์ ํฉ๋๋ค. Signed URL์ ๋ํด์๋ ๋ค์์ ์์ธํ ์ค๋ช ํ๊ฒ ์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
- Price Class: ์๊ธ ์์ค์
๋๋ค. ์์ง ๋ก์ผ์ด์
์ฌ์ฉ ๋ฒ์๋ฅผ ์ค์ ํ๋๋ฐ ์ค์ ์๋น์ค์์ ๊ทธ๋ค์ง ํ์๊ฐ ์๋ ์ง์ญ์ ์ ์ธํ ๋ ์ค์ ํฉ๋๋ค. ์ธ๋ถ์ ์ผ๋ก ์ค์ ํ ์๋ ์์ผ๋ฉฐ 3๊ฐ์ง ์ต์
์ด ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ
- Use Only US and Europe: ๋ฏธ๊ตญ๊ณผ ์ ๋ฝ์ ์์ง ๋ก์ผ์ด์ ๋ง ์ฌ์ฉํฉ๋๋ค.
- Use Only US, Europe and Asia: ๋ฏธ๊ตญ๊ณผ ์ ๋ฝ, ์์์์ ์์ง ๋ก์ผ์ด์ ๋ง ์ฌ์ฉํฉ๋๋ค.
- Use All Edge Locations: ๋ชจ๋ ์์ง ๋ก์ผ์ด์ ์ ์ฌ์ฉํฉ๋๋ค. ์์ ๋ ์ต์ ๋ณด๋ค๋ ์๊ธ์ด ๋ง์ด ๋์ต๋๋ค.
- Alternate Domain Names: Route 53์์ ๋๋ฉ์ธ์ ์ฐ๊ฒฐํ๋ ค๋ฉด ์ด ๋ถ๋ถ์ ์ค์ ํด์ผ ํฉ๋๋ค. ์ฌ๋ฌ ๋๋ฉ์ธ์ด๋ผ๋ฉด ์ ์ค๋ก ๊ตฌ๋ถํ๊ณ ์ต๋ 10๊ฐ๊น์ง ์ค์ ํ ์ ์์ต๋๋ค. ๊ฐ์ ๊ตฌ์ ํ ๋๋ฉ์ธ ์ด๋ฆ์ ์ค์ ํ๋ฉด ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ๋น์๋ก๋๋ค.
์ด์ด์ง๋ ์ธ๋ถ ์ค์ ์ ๋๋ค
- SSL Certificate: HTTPS ํ๋กํ ์ฝ์ ์ฌ์ฉํ๊ธฐ ์ํ ์ธ์ฆ์ ์ค์ ์
๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ
- Default CloudFront Certificate: CloudFront์ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- Custom SSL Certificate: ์ฌ์ฉ์๊ฐ ๊ตฌ์ ํ ๋๋ฉ์ธ๊ณผ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ ๋ ์ค์ ํฉ๋๋ค. ์ธ์ฆ์ ์ ์ฅ์ IAM์์ ํ ์ ์์ต๋๋ค.
- Custom SSL Client Support: ์ปค์คํ
SSL ํด๋ผ์ด์ธํธ ์ค์ ์
๋๋ค. ์์์ Custom SSL Certificate๋ฅผ ์ค์ ํด์ผ
- All Clients: ์ ์ฉ IP ์ฌ์ฉ์ ์ง์ SSL ์ค์ ์ ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋งํฌ๋ฅผ ์ฐธ์กฐํ๊ธฐ ๋ฐ๋๋๋ค
- Only Clients that Support Server Name Indication: ์๋ฒ ์ด๋ฆ ํ์(SNI)๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋งํฌ๋ฅผ ์ฐธ์กฐํ๊ธฐ ๋ฐ๋๋๋ค
- Default Root Object: CloudFront ๋ฐฐํฌ ๋๋ฉ์ธ์ ์ต์์(Root)๋ก ์ ์ํ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณด์ฌ์ค ํ์ผ ์ด๋ฆ์
๋๋ค.
index.html
๋ก ์ค์ ํฉ๋๋ค. - Logging: CloudFront ์ ์ ๋ก๊ทธ ์ค์ ์
๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ
- Bucket for Logs: CloudFront ๋ก๊ทธ๋ฅผ ์ ์ฅํ S3 ๋ฒํท์ ์ ํํฉ๋๋ค.
- Log Prefix: S3 ๋ฒํท์ ๋ก๊ทธ๋ฅผ ์ ์ฅํ ๋, ๋๋ ํฐ๋ฆฌ ๋ช ์ ์ค์ ํฉ๋๋ค.
- Comment: ๋ฉ๋ชจ์ ๋๋ค. ์ถ๊ฐ์ ์ธ ์ค๋ช ์ ๊ธฐ๋กํ๊ณ ์ถ์ ๋ ์ฌ์ฉํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ๋น์๋ก๋๋ค.
- Distribution State: ๋ฐฐํฌ๋ฅผ ์์ฑํ ๋ค ๋ฐฐํฌ ์ํ ์ค์ ์ ๋๋ค. Enabled๋ก ์ค์ ํ๋ฉด ๊ณง๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ ์ํ๊ฐ ๋๋ฉฐ Disabled๋ก ์ค์ ํ๋ฉด ๊ทธ๋ฅ ๋ฐฐํฌ๋ง ์์ฑํ๊ณ ๋นํ์ฑํ ์ํ๋ก ๋ก๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
CloudFront ๋ฐฐํฌ๊ฐ ์์ฑ๋์์ต๋๋ค.
๋ชจ๋ ์์ง ๋ก์ผ์ด์
์ ์ ํ๊ฐ ์๋ฃ๋๋ฉด Status
๊ฐ Deployed
๋ก ๋ฐ๋๋๋ค.
์น ๋ธ๋ผ์ฐ์ ์์ CloudFront์ ์ ์ํฉ๋๋ค.
์ด์ ์ ์ธ๊ณ ์ด๋์์๋ ๋น ๋ฅธ ์๋๋ก ํ์ผ์ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
ํฌ๋กฌ์์ HTTP ํค๋ ํ์ธํ๊ธฐ
์น ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ์์๋ HTTP ํค๋๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ํฌ๋กฌ์์ F12 ํค๋ฅผ ์
๋ ฅํ๊ฑฐ๋, [๋ฉ๋ด]
โ [๋๊ตฌ(L)]
โ [๊ฐ๋ฐ์ ๋๊ตฌ(D)]
๋ฅผ ํด๋ฆญํ๋ฉด ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์คํํ ์ ์์ต๋๋ค.
๊ฐ๋ฐ์ ๋๊ตฌ์์ [Network]
๋ถ๋ถ์ ๋ณด๋ฉด ํ์ฌ ์น์ฌ์ดํธ์์ ์ด๋ฆฐ ํ์ผ๋ค์ ๋ชฉ๋ก์ด ํ์๋๊ณ , ํ์ผ์ ํด๋ฆญํ๋ฉด HTTP ํค๋๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์บ์ ์ ์ง ์๊ฐ์ด ์ง๋์ CloudFront๊ฐ ์ค๋ฆฌ์ง์ ์ ์ํ์ฌ ํ์ผ์ ๊ฐ์ ธ์์ ๋์๋ Miss from cloudfront๋ผ๊ณ ํ์๋ฉ๋๋ค.
CloudFront ๋ฐฐํฌ ์ญ์ ํ๊ธฐ
CloudFront ๋ฐฐํฌ๋ฅผ ์ญ์ ํ๋ ค๋ฉด ๋ฐฐํฌ ๋ชฉ๋ก์์ ๋ฐฐํฌ๋ฅผ ์ ํํ ๋ค [Disable]
๋ฒํผ์ ํด๋ฆญํ์ฌ ๋์์ ์ ์ง์ํต๋๋ค. ๋ชจ๋ ์์ง ๋ก์ผ์ด์
์ ์ ํ๋๊ธฐ๊น์ง 15~20๋ถ ์ ๋ ๊ฑธ๋ฆฝ๋๋ค. Status๊ฐ Deployed๋ก ๋ฐ๋์๋ค๋ฉด [Delete]
๋ฒํผ์ ํด๋ฆญํ์ฌ ๋ฐฐํฌ๋ฅผ ์ญ์ ํฉ๋๋ค.