[Cloud] S3์ ์ดํด
๐ ๋ค์ด๊ฐ๋ฉฐ
์ด๋ฒ ๊ธ์์๋ AWS์ S3(Simple Storage Service)๋ฅผ ์ ๋ฆฌํ๋ค. EC2์ ๋๋ถ์ด ๊ฐ์ฅ ์ค๋๋๊ณ ๊ธฐ๋ณธ์ด ๋๋ ๊ฐ์ฒด ์คํ ๋ฆฌ์ง๋ก, ๊ฐ๋ ยท์คํ ๋ฆฌ์ง ํด๋์คยทํน์ง์ ์ดํด๋ณธ ๋ค ๋ฒํท ์ด๋ฏธ์ง๋ฅผ ์น ์๋ฒ์์ ์๋น์คํ๋ Lab์ ์งํํ๋ค.
S3๋? ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด(Object) ๋จ์๋ก, ๋ฒํท(Bucket)์ด๋ผ๋ ์ ์ฅ์์ ๋ด๋ ๊ฐ์ฒด ์คํ ๋ฆฌ์ง ์๋น์ค. ์ ์ถ๋ ฅ์ HTTP/REST API๋ก ์ด๋ฃจ์ด์ง๋ฉฐ, 99.999999999%(11 9s)์ ๋ด๊ตฌ์ฑ์ผ๋ก ์ค๊ณ๋์ด ๋ฐ์ดํฐ ์์ค์ ์ต์ํํ๋ค.
1. S3 ํต์ฌ ํน์ง
| ํน์ง | ์ค๋ช |
|---|---|
| ๋์ ๋ด๊ตฌ์ฑ | 11 9s ์ค๊ณ. ํ ๋ฆฌ์ ๋ด 3๊ฐ ์ด์ AZ์ ๋ณต์ ์ ์ฅ |
| ์ฌ์ค์ ๋ฌด์ ํ | ์ฉ๋ ์ ํ ์์(๋จ์ผ ๊ฐ์ฒด ์ต๋ 5TB) |
| ๋น์ฉ ์ต์ ํ | ์คํ ๋ฆฌ์ง ํด๋์ค๋ก ์ ๊ทผ ๋น๋์ ๋ง์ถฐ ๋น์ฉ ์ ๊ฐ |
| ์ธ๋ฐํ ์ ๊ทผ ์ ์ด | ์ ์ฑ ยทACL๋ก ๊ฐ์ฒด๋ณ ์ ๊ทผ ์ ์ด |
| OS ๋ถํ์ | ๊ฐ์ฒด๋ณ ์ ๊ทผ์ด๋ผ ์๋ฒ OS ์์ด ์ ์ฅยท๊ฒ์ |
๐ก ๋ฉํฐํํธ ์ ๋ก๋ โ ํฐ ํ์ผ์ ์ฌ๋ฌ ์กฐ๊ฐ์ผ๋ก ๋๋ ๋ณ๋ ฌ ์ ๋ก๋ํ๊ณ ์๋ฃ ํ ๋ณํฉํ๋ค. ๋์ฉ๋ ํ์ผ(๋น๋์คยท๋ฐฑ์ )์ ์์ ์ ์ด๊ณ ๋น ๋ฅด๊ฒ ์ฌ๋ฆด ๋ ์ ์ฉํ๋ค.
2. S3 ์คํ ๋ฆฌ์ง ํด๋์ค
์ ๊ทผ ๋น๋์ ๋น์ฉ์ ๋ฐ๋ผ ํด๋์ค๋ฅผ ์ ํํ๋ค. ์์ฃผ ์ฐ๋ฉด Standard, ๊ฑฐ์ ์ ์ฐ๋ฉด Glacier ๊ณ์ด์ด๋ค.
| ํด๋์ค | ์ฉ๋ | ํน์ง |
|---|---|---|
| Standard | ์์ฃผ ์ ๊ทผํ๋ ๋ฐ์ดํฐ | ๋์ ๋ด๊ตฌ์ฑยท๊ฐ์ฉ์ฑ |
| Intelligent-Tiering | ์ ๊ทผ ํจํด ๋ถํ์ค | ์๋์ผ๋ก ๊ณ์ธต ์ด๋ํด ๋น์ฉ ์ต์ ํ |
| Standard-IA | ๋๋ฌผ๊ฒ ์ ๊ทผ(๋น ๋ฅธ ์กฐํ ํ์) | ๋ฎ์ ๋น์ฉ |
| One Zone-IA | ๋จ์ผ AZ ์ ์ฅ | ๋ ์ ๋ ด, ๊ฐ์ฉ์ฑ ๋ฎ์ |
| Glacier | ์ฅ๊ธฐ ์์นด์ด๋น | ์กฐํ์ ์ ๋ถ~์ ์๊ฐ |
| Glacier Deep Archive | ์ด์ฅ๊ธฐ ๋ณด๊ด | ๊ฐ์ฅ ์ ๋ ด, ๋ณต๊ตฌ ์ ์๊ฐ |
3. Lab โ ๋ฒํท ์ด๋ฏธ์ง๋ฅผ ์น ์๋ฒ๋ก ์๋น์ค
๋ฒํท์ ์ ์ฅํ ์ด๋ฏธ์ง๋ฅผ EC2 ์น ์๋ฒ๊ฐ ๋ถ๋ฌ์ ๋ณด์ฌ์ฃผ๋ ๊ตฌ์ฑ์ ๋ง๋ ๋ค.
flowchart LR
User(("๐ ์ฌ์ฉ์"))
EC2["๐ป EC2 (Apache)"]
S3[("๐๏ธ S3 ๋ฒํท<br/>(ํผ๋ธ๋ฆญ ์ด๋ฏธ์ง)")]
User -- HTTP --> EC2
EC2 -- "img src=S3 URL" --> S3
Task 1 โ ๋ฒํท ์์ฑ & ์ด๋ฏธ์ง ์ ๋ก๋
- ๋ฒํท ์ด๋ฆ:
web-sample-images-seongmi - ๊ฐ์ฒด ์์ ๊ถ: ACL ๋นํ์ฑํ, ๋ชจ๋ ํผ๋ธ๋ฆญ ์ก์ธ์ค ์ฐจ๋จ(์ผ๋จ)
image.png์ ๋ก๋ ํ URL ๋ณต์ฌ
Task 2 โ ์น ์๋ฒ(EC2) ๊ตฌ์ฑ
๋ณด์ ๊ทธ๋ฃน WEB-SG(์ธ๋ฐ์ด๋ 80ยท22)๋ก EC2๋ฅผ ๋ง๋ค๊ณ , ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ก Apache๋ฅผ ์ค์นํ๋ฉฐ S3 ์ด๋ฏธ์ง๋ฅผ ์ฐธ์กฐํ๋ ํ์ด์ง๋ฅผ ์์ฑํ๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash
dnf update -y
dnf install httpd -y
systemctl enable --now httpd
cat <<EOL > /var/www/html/index.html
<!DOCTYPE html>
<html lang="ko">
<head><meta charset="UTF-8"><title>์ฑ๋ฏธ์ ์นํ์ด์ง</title></head>
<body>
<h1>์ฑ๋ฏธ์ ์นํ์ด์ง</h1>
<p>์ฑ๋ฏธ์ ์นํ์ด์ง์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค.</p>
<hr>
<img src="https://web-sample-images-lee.s3.ap-northeast-2.amazonaws.com/pet.jpg"
style="max-width: 100%; height: auto;">
</body>
</html>
EOL
systemctl restart httpd
Task 3 โ ๋ฒํท์ ํผ๋ธ๋ฆญ์ผ๋ก ๊ณต๊ฐ
๊ธฐ๋ณธ์ ์ผ๋ก S3๋ ํผ๋ธ๋ฆญ ์ก์ธ์ค๋ฅผ ์ฐจ๋จํ๋ค. ์น ํธ์คํ ์ ์ํด ํผ๋ธ๋ฆญ ์ก์ธ์ค ์ฐจ๋จ์ ํด์ ํ๊ณ ๋ฒํท ์ ์ฑ ์ผ๋ก ์ฝ๊ธฐ๋ฅผ ํ์ฉํ๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "<๋ฒํทARN>/*"
}
]
}
โ ๏ธ ๋ฒํท ์ ์ฑ vs ACL โ ์ฌ๊ธฐ์๋ ACL์ ๋๊ณ ๋ฒํท ์ ์ฑ (JSON)์ผ๋ก ๊ณต๊ฐ๋ฅผ ์ ์ดํ๋ค.
Principal: "*"+s3:GetObject๋ โ๋๊ตฌ๋ ๊ฐ์ฒด๋ฅผ ์ฝ์ ์ ์์โ์ ์๋ฏธํ๋ค. ๊ณต๊ฐ๊ฐ ๋ชฉ์ ์ผ ๋๋ง ์ฐ๊ณ , ๋ฏผ๊ฐ ๋ฐ์ดํฐ์ ์ ๋ ์ ์ฉํ์ง ๋ง์.
Task 4 โ ์นํ์ด์ง ํ์ธ
EC2 ํผ๋ธ๋ฆญ IP๋ก ์ ์ํ๋ฉด, S3์ ์ ์ฅ๋ ์ด๋ฏธ์ง๊ฐ ํฌํจ๋ ํ์ด์ง๊ฐ ์ ์ ํ์๋๋ค.
4. S3 ์ฌ์ฉ ์ฌ๋ก
| ์ฌ๋ก | ์ค๋ช |
|---|---|
| ๋ฐฑ์ /๋ณต๊ตฌ | ๋์ ๋ด๊ตฌ์ฑ์ผ๋ก ๋ฐฑ์ ๋ฐ์ดํฐ ๋ณด๊ด |
| ๋ฐ์ดํฐ ๋ถ์ | Athena ์ฐ๊ณ๋ก S3์ ์ง์ ์ฟผ๋ฆฌ |
| ์ ์ ์น ํธ์คํ | HTMLยท์ด๋ฏธ์งยท๋น๋์ค ํธ์คํ |
| ๋ก๊ทธ ์ ์ฅ/๋ถ์ | AWS ์๋น์คยท์ฑ ๋ก๊ทธ ์์ง |
๐ ์ ๋ฆฌ
1
2
3
4
5
S3
โโ ๊ฐ๋
๊ฐ์ฒด ์คํ ๋ฆฌ์ง(๋ฒํท/๊ฐ์ฒด, HTTPยทREST)
โโ ๋ด๊ตฌ์ฑ 11 9s, ๋ฆฌ์ ๋ด 3+ AZ ๋ณต์
โโ ํด๋์ค Standard ~ Glacier(๋น๋ยท๋น์ฉ๋ณ)
โโ ๊ณต๊ฐ ํผ๋ธ๋ฆญ ์ฐจ๋จ ํด์ + ๋ฒํท ์ ์ฑ
(JSON)
| ๊ฐ๋ | ํ ์ค ์ ์ |
|---|---|
| S3 | ๊ฐ์ฒด ์คํ ๋ฆฌ์ง |
| ์คํ ๋ฆฌ์ง ํด๋์ค | ์ ๊ทผ ๋น๋๋ณ ๋น์ฉ ๊ณ์ธต |
| ๋ฒํท ์ ์ฑ | JSON์ผ๋ก ์ ๊ทผ ์ ์ด |
S3์ ํต์ฌ์ ๋ฌด์ ํ์ ๊ฐ๊น์ด ๊ฐ์ฒด ์ ์ฅ + 11 9s ๋ด๊ตฌ์ฑ์ด๋ฉฐ, ๊ณต๊ฐ ์ฌ๋ถ๋ ๋ฒํท ์ ์ฑ ์ผ๋ก ์ ๋ฐํ๊ฒ ์ ์ดํ๋ค. Lab์ฒ๋ผ ์ด๋ฏธ์งยท์ ์ ํ์ผ ์ ์ฅ์๋ก ๋๊ณ ์น ์๋ฒ๊ฐ ์ฐธ์กฐํ๋ ํจํด์ด ๋ํ์ ์ด๋ค.





Comments powered by Disqus.