๐ข Amazon S3 ๋ฐ Cloudflare ๊ด๋ฆฌ ์ ์ ์น ์ฌ์ดํธ ์ฌ์ฉ ๋ฐฉ๋ฒโ
๋จผ์ AWS ์ฝ์์ ๊ด๋ฆฌ์๋ก ๋ก๊ทธ์ธํ ์ ์คํ ๋ฆฌ์ง๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
Bucket ์์ฑ
์๋น์ค ๋ฅผ ํด๋ฆญํ๊ณ ์คํ ๋ฆฌ์ง ์น์ ์์ S3 ์ ์ ํํฉ๋๋ค.
ํ์ด์ง์์ ์ค๋ฅธ์ชฝ ๊ตฌ์์ ์๋ Create Bucket ์ ํด๋ฆญํ ๋ค์:
www.themaymeow.com
์คํ ๋ฆฌ์ง ํต ์์ฑ ์ ๋ฐ์ดํธ
๋ฒํท ๋ชฉ๋ก์ ๋ณผ ์ ์์ผ๋ฏ๋ก ๋ฒํท์ ์ ํํ๊ณ ๋ฒํท ํ์ด์ง์์Properties ์ต์ ์ ์ ํํ์ญ์์ค
index.html
๊ถํ ์ ๋ฐ์ดํธ
๋ ๋ฒ์งธ ํญ ์ฌ์ฉ ๊ถํ์ ์ ํํ์ฌ Bucket ์ ์ฑ ์ผ๋ก ์คํฌ๋กคํฉ๋๋ค. ํธ์ง์ ํด๋ฆญํ๊ณ ๋ค์ ์ ์ฑ ์ ๋ถ์ฌ ๋ฃ์ต๋๋ค.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Public",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "<change-me-to-youw-ARN>/*"
}
]
}
์ด๊ฒ์ด ๋ฒํท ์ค์ ์ ์ ๋ถ์ ๋๋ค.๋ฒํท์ ๋ด์ฉ์ ์ธ ์ ์๋ ์ฌ์ฉ์๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
๋ฐฐํฌ ์ฌ์ฉ์
๋ฐ๋ผ์ ID ๋ฐ ์ก์ธ์ค ๊ด๋ฆฌ IAM์ ๊ฒ์ํ๊ณ ์ฝ๋๋ค.
์ ์ฑ ์์ฑ
์ฐ์ , ์ ์ฑ ์ ๋ง๋ค์ด์ผ ํฉ๋๋ค.์ผ์ชฝ ๋ฉ๋ด์์ ์ ์ฑ ์ ์ฐพ์ ์ฝ๋๋ค.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "<change-me-to-youw-ARN>"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:DeleteObject"
],
"Resource": "<change-me-to-youw-ARN>/*"
}
]
}
์ค์ํ ๊ฒ์ "Resource": "<change-me-to-youw-ARN>"
๊ณผ"Resource": "<change-me-to-youw-ARN>/*"
๊ฐ ์ณ๋ค๋ ๊ฒ์ ๋ณด๊ฒ ๋ ๊ฒ์ด๋ค. ๋ ๋ฒ์งธ/*
๋ฅผ ์ ๊ฑฐํ์ง ๋ง๋ผ.์ฌ์ฉ์ ์์ฑ
์ผ์ชฝ ๋ฉ๋ด์์ ์ฌ์ฉ์๋ฅผ ์ ํํ ๋ค์ ์ฌ์ฉ์ ์ถ๊ฐ ๋ฅผ ํด๋ฆญํฉ๋๋ค.
cloudflare์ ๋๋ฉ์ธ ์ถ๊ฐ
cloudflare์ ๋ก๊ทธ์ธํ๊ณ ํด๋ฆญํ์ฌ + ์ฌ์ดํธ ์ถ๊ฐ
DNS ๊ท์น ๊ตฌ์ฑ
๋ค, ๋์์ค์๋ฉด ๋๋ฉ์ธ ์ด๋ฆ์ ์ค์ ํ์ จ์ต๋๋ค.๊ทธ๋์ ๋๋ฌ์ ์ธ ๋ฒ์งธ ํญ DNS๋ฅผ ์ ํํ์ธ์.
www
https://
@
www.yourdomain.tld
SSL/tls ๊ตฌ์ฑ
๋ค ๋ฒ์งธ ํญ SSL/TLS ์ ํ
ํญ์์ ๊ฐ์ฅ์๋ฆฌ ์ธ์ฆ์ ์ ํ
ํ์ด์ง ๊ท์น ์ค์
๋ค์๋ ๋ง์ง๋ง ์ผ์ ์ฐ๋ฆฌ์ ๋๋
domain.tld
๋ฅผ www.domain.tld
๋ก ๋ฐ๊พธ๋ ๊ฒ์ด๋ค.๊ทธ๋์ 10ํ์ด์ง ํ๊ทธ ๊ท์น์ ์ ํํ์ต๋๋ค.
yourdomain.tld/*
https://www.yourdomain.tld/$1
๋ค์
์ด ๋ชจ๋ ๊ฒ์ AWS+Cloudflare๋ฅผ ๋น์ ์ ์ ์ ์ฌ์ดํธ์ ๋ค์ด๊ฐ๊ฒ ํ๊ธฐ ์ํด์์
๋๋ค.
๋ณด๋์ค
์น ์ฌ์ดํธ๋ฅผ AWS์ ๋ฐฐํฌํ๋ ค๋ฉด Minio cliMinio ๋ฐ ๋ค์ ์คํฌ๋ฆฝํธ๋ฅผ ์๋์ผ๋ก ์ฌ์ฉํ๊ฑฐ๋ CI/CD๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
mc config host add cdn https://s3.amazonaws.com <access-id> <secret-access-key> --api s3v4
mc cp -r paath/to/website/files cdn/bucket-name
์ด์ ์ ์น ์ฌ์ดํธ๋ฅผ ํ์ํ์ฌ ์ฆ๊ธฐ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.:)
์ต์ด ์ถ์ ์์ themaymeow.com
์ฌ์ง ์์ฑ์Billy Huynh๊ฐ Unsplash
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ข Amazon S3 ๋ฐ Cloudflare ๊ด๋ฆฌ ์ ์ ์น ์ฌ์ดํธ ์ฌ์ฉ ๋ฐฉ๋ฒโ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค
https://dev.to/maymeow/how-to-host-static-websites-with-amazon-s3-and-cloudflare-2g87
ํ
์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
mc config host add cdn https://s3.amazonaws.com <access-id> <secret-access-key> --api s3v4
mc cp -r paath/to/website/files cdn/bucket-name
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ข Amazon S3 ๋ฐ Cloudflare ๊ด๋ฆฌ ์ ์ ์น ์ฌ์ดํธ ์ฌ์ฉ ๋ฐฉ๋ฒโ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/maymeow/how-to-host-static-websites-with-amazon-s3-and-cloudflare-2g87ํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค