Amazon Simple Storage Service(Amazon S3)๋ ์ ๊ณ ์ต๊ณ ์ ํ์ฅ์ฑ, ๋ฐ์ดํฐ ๊ฐ์ฉ์ฑ, ๋ณด์ ๋ฐ ์ฑ๋ฅ์ ์ ๊ณตํ๋ ๊ฐ์ฒด ์คํ ๋ฆฌ์ง ์๋น์ค์ ๋๋ค. ๋ชจ๋ ๊ท๋ชจ์ ์ ์ข ์ ๊ณ ๊ฐ์ Amazon S3๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๋ ์ดํฌ, ์น ์ฌ์ดํธ, ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ , ๋ฐฑ์ ๋ฐ ๋ณต์, ์์นด์ด๋ธ, ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ , IoT ๋๋ฐ์ด์ค, ๋น ๋ฐ์ดํฐ ๋ถ์ ๋ฑ ๋ค์ํ ์ฌ์ฉ ์ฌ๋ก์์ ์ํ๋ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ณดํธํ ์ ์์ต๋๋ค. Amazon S3๋ ํน์ ๋น์ฆ๋์ค, ์กฐ์ง ๋ฐ ๊ท์ ์ค์ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ๋ฐ์ดํฐ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ต์ ํ, ๊ตฌ์กฐํ ๋ฐ ๊ตฌ์ฑํ ์ ์๋ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์ถ์ฒ : https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/Welcome.html
์ด๋ฏธ์ง ์ ์ฅ์ ํ๋ก์ ํธ ๋ด๋ถ์ ํ๊ธด์ ํ๋ก์ ํธ ์ฉ๋์ด ๋๋ฌด ์ปค์ง๊ณ ๋ฒ์ฉ์ฑ์ด ๋จ์ด์ง๋ ๊ฐ์์ ์ ์ฅ ๊ณต๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ๋ฃ์ด ๋๊ณ ์ก์ธ์ค๋ฅผ ํผ๋ธ๋ฆญํ๊ฒ ๋์ด์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ฒ๋ ๋ง๋ค๋ ค๊ณ ํ๋ค. ๋ฐฑ์๋์์ ์ก์ธ์คํค๋ฅผ ๊ฐ๊ณ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ๋ค๊ฐ ํ๋ก ํธ์ ์ค ์๋ ์์ง๋ง ํ๋ก ํธ์๋์์ ๋ฐ๋ก ๊บผ๋ด๋ค ์ด๋คํ์ฌ, ํ๋ฒ ํผ๋ธ๋ฆญํ๊ฒ ๋ง๋ค์ด ๋ณด๋ ค๊ณ ํ๋ค.
S3 ๋ง๋ค๊ธฐ
๋จผ์ AWS์ S3 ์๋น์ค๋ก ๋ค์ด์จ๋ค. ์ฌ๊ธฐ์ ์ฃผํฉ์ ๋ฒํท ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํ๋ค.
๋ฒํท์ ์ด๋ฆ์ ์ ํ๋ค. ๊ฐ์ฒด ์์ ๊ถ์ ๊ถ์ฅ์ผ๋ก ์ฑ์ ํ๋ค.
ํผ๋ธ๋ฆญํ S3๋ฅผ ๋ง๋ค๊ฒ์์ผ๋ก ์ก์ธ์ค ์ฐจ๋จ์ ํด์ ํ๊ณ ์ธ์งํ๊ณ ์์์ ํด๋ฆญํ๋ค.
ํผ๋ธ๋ฆญ ์ก์ธ์ค๋ฅผ ํ์ฉํ๋ฉด ๋ณด์์ ์์ข์ ์ ์์ผ๋ S3 ํค๋ฅผ ๊ฐ์ง๊ณ ํ๋ผ์ด๋นํ๊ฒ ํต์ ํ๋ ๊ฑธ ๋ ์ถ์ฒํ๋ค.
๋๋จธ์ง๋ ๊ธฐ๋ณธ์ค์ ์ผ๋ก ํ๊ณ ๋ฒํท ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง๋ค์ด์ง ๋ฒํท์ ๋๋ฌ ๋ฒํท์ ๋ค์ด์จ๋ค.
๋ฒํท ๊ถํ - ์ ์ฑ ์ค์ ํ๊ธฐ
๊ถํ ํญ์ ๋๋ฌ ์ด์ ๋ง๋ S3์ ๊ถํ์ ์์ ํด์ค๋ค.
์ด์ ๋ฒํท ์ ์ฑ ์ ์ค์ ํด์ค์ผํ๋ค.
ํธ์ง ๋ฒํผ์ ๋๋ฅธ๋ค.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::๋ฒํท๋ช
/*"
}
]
}
์ด JSON ๋ฌธ์์ด์ ํธ์ง์ ๋๋ฌ์ ์์ฑํ๋๋ก ํ๋ค. Resource ์ ์์ ARN ์ ์๋ ์์ ์ ๋ฒํท๋ช ์ ๋ฃ๊ณ ๊ทธ ๋ค์ ๋ชจ๋ ํจ์ค๊ฐ ์ฌ์ ์๋๋ก ์์ผ๋์นด๋๋ฅผ ๋ฃ์ด์ค๋ค. ๊ทธ๋ฆฌ๊ณ ๋ณ๊ฒฝ์ฌํญ ์ ์ฅ์ ๋๋ฅธ๋ค!
์ด๊ฑด JSON ํ์์ผ๋ก ์์ฑ๋ IAM ์ ์ฑ ์ด๋ค. ์ด ์ ์ฑ ์ AWS ๋ฆฌ์์ค์ ๋ํ ์ ๊ทผ์ ์ ์ดํ๋ ๊ท์น์ ์ ์ํ๋ค.
- Version: ์ด ๋ถ๋ถ์ ์ ์ฑ ์ธ์ด์ ๋ฒ์ ์ ๋ํ๋ธ๋ค. ์ฌ๊ธฐ์ ์ฌ์ฉ๋ "2012-10-17"์ ํ์ฌ ์ฌ์ฉ๋๋ ์ ์ฑ ์ธ์ด์ ๋ฒ์ ์ด๋ค.
- Statement: ์ด ๋ถ๋ถ์์๋ ์ค์ ์ ๊ทผ ๊ท์น์ ์ ์ํ๋ค. ์ด ์ ์ฑ ์๋ ํ๋์ statement (Statement1)๊ฐ ํฌํจ๋์ด ์๋ค.
- Sid (Statement ID): "Statement1"์ ์ด ๊ท์น์ ๋ํ ์๋ณ์๋ก, ์ ์ฑ ๋ด์์ ๊ฐ statement๋ฅผ ๊ตฌ๋ณํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- Effect: ์ด ๋ถ๋ถ์ ๊ท์น์ ํจ๊ณผ๋ฅผ ๋ํ๋ธ๋ค. "Allow"๋ ํน์ ์กฐ๊ฑด ํ์ ํ์ฉํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
- Principal: ์ด ๋ถ๋ถ์ ์ ์ฑ ์ด ์ ์ฉ๋๋ ๋์์ ๋ํ๋ธ๋ค. "*"๋ ๋ชจ๋ ์ฌ์ฉ์ ๋๋ ์ํฐํฐ์ ์ ์ฉ๋จ์ ์๋ฏธํ๋ค.
- Action: ์ด ๋ถ๋ถ์ ํ์ฉ๋๊ฑฐ๋ ๊ฑฐ๋ถ๋ ์ ์๋ ํน์ ์์ ์ ๋ํ๋ธ๋ค. "s3:GetObject"๋ ์ฌ์ฉ์๊ฐ S3 ๋ฒํท์์ ๊ฐ์ฒด๋ฅผ ๊ฒ์ํ ์ ์๋๋ก ํ์ฉํ๋ค.
- Resource: ์ด ๋ถ๋ถ์ ์ ์ฑ ์ด ์ ์ฉ๋๋ AWS ๋ฆฌ์์ค๋ฅผ ์ง์ ํ๋ค. "arn:aws:s3:::๋ฒํท๋ช /*"๋ ํน์ S3 ๋ฒํท(์ฌ๊ธฐ์ '๋ฒํท๋ช '์ผ๋ก ํ์๋จ) ๋ด์ ๋ชจ๋ ๊ฐ์ฒด์ ๋ํ ์ ๊ทผ์ ์ ์ดํ๋ค.
์์ฝํ์๋ฉด, ์ด ์ ์ฑ ์ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ง์ ๋ S3 ๋ฒํท ๋ด์ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ๊ฒ์ํ ์ ์๋๋ก ํ์ฉํ๋ ๊ท์น์ ์ ์ํ๋ค. ์ด๋ฌํ ์ ํ์ ์ด๋ฆฐ ์ ๊ทผ์ ๊ณต๊ฐ์ ์ผ๋ก ๊ณต์ ๋์ด์ผ ํ๋ ๋ฐ์ดํฐ์ ๋ํด ์ฌ์ฉ๋ ์ ์์ง๋ง, ๋ฏผ๊ฐํ ๋ฐ์ดํฐ์ ๋ํด์๋ ์ฃผ์๊ฐ ํ์ํ๋ค.
์๋ก๊ณ ์นจ์ ๋๋ฌ ๋ณด๋ฉด ์ก์ธ์ค๊ฐ ํผ๋ธ๋ฆญ์ผ๋ก ๋ฐ๋๊ฑธ ๋ณผ ์ ์๋ค.
๋ฒํท ๊ถํ - CORS ์ค์
์ด์ ์๋๋ก ์คํฌ๋กค์ ๋ด๋ ค CORS ์ค์ ์ ํด์ค์ผํ๋ค.
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"HEAD",
"GET",
"PUT",
"POST",
"DELETE"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": []
}
]
ํธ์ง์ ๋๋ฌ ์ JOSN ๋ฌธ์์ด์ ๊ธฐ์ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฅํ๋ค.
์ด JSON ๊ตฌ์กฐ๋ CORS(Cross-Origin Resource Sharing) ์ค์ ์ ์ ์ํ๊ณ ์๋ค. ๊ฐ ์์์ ์๋ฏธ๋ฅผ ์๋์ ๊ฐ์ด ์ค๋ช ํ ์ ์๋ค:
- AllowedHeaders: ์ด ์ค์ ์ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ๋ค๋ฅธ ๋๋ฉ์ธ์ ์๋ฒ๋ก๋ถํฐ ๋ฐ์๋ค์ผ ์ ์๋ HTTP ํค๋๋ฅผ ์ ์ํ๋ค. ์ฌ๊ธฐ์ ["*"]๋ ๋ชจ๋ ์ข ๋ฅ์ ํค๋๋ฅผ ํ์ฉํ๋ค๋ ์๋ฏธ๋ค.
- AllowedMethods: ์ด ์ค์ ์ ๋ค๋ฅธ ๋๋ฉ์ธ์ ์๋ฒ๋ก๋ถํฐ ํ์ฉ๋๋ HTTP ์์ฒญ ๋ฉ์๋๋ฅผ ์ง์ ํ๋ค. ์ฌ๊ธฐ์๋ ["HEAD", "GET", "PUT", "POST", "DELETE"]๊ฐ ํฌํจ๋์ด ์์ด, ์ด๋ค ๋ฉ์๋์ ๋ํ ์์ฒญ์ด ํ์ฉ๋จ์ ๋ํ๋ธ๋ค.
- AllowedOrigins: ์ด ์ค์ ์ ์ด๋ค ์ถ์ฒ(๋๋ฉ์ธ, ์คํค๋ง, ํฌํธ)์ ์์ฒญ์ด ์๋ฒ์ ์ํด ํ์ฉ๋ ์ง ์ ์ํ๋ค. ["*"]๋ ๋ชจ๋ ์ถ์ฒ๋ก๋ถํฐ์ ์์ฒญ์ ํ์ฉํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
- ExposeHeaders: ์ด ์ค์ ์ ๋ธ๋ผ์ฐ์ ๊ฐ ํด๋ผ์ด์ธํธ์ ๋ ธ์ถํ ์ ์๋ ํค๋๋ฅผ ์ ์ํ๋ค. ์ฌ๊ธฐ์๋ ๋น ๋ฐฐ์ด []๋ก ์ค์ ๋์ด ์์ด, ์ถ๊ฐ๋ก ๋ ธ์ถํ ํค๋๊ฐ ์์์ ๋ํ๋ธ๋ค.
์์ฝํ์๋ฉด, ์ด CORS ์ค์ ์ ๋ชจ๋ ์ถ์ฒ์์ ์ค๋ ์์ฒญ์ ํ์ฉํ๊ณ , ๋ชจ๋ ํค๋๋ฅผ ๋ฐ์๋ค์ด๋ฉฐ, HEAD, GET, PUT, POST, DELETE ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ค. ํ์ง๋ง, ์ถ๊ฐ๋ก ๋ ธ์ถํ ํน์ ํค๋๋ ์ง์ ํ์ง ์์๋ค. ์ด ์ค์ ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ค์ํ ์ถ์ฒ์ ๋ฆฌ์์ค๋ฅผ ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํด์ฃผ์ง๋ง, ๋ณด์์ ์ฃผ์๊ฐ ํ์ํ๋ค.
๋ชจ๋ ์ค์ ์ด ๋๋ฌ๋ค.
์ด๋ฏธ์ง ๋ถ๋ฌ์ค๊ธฐ ํ ์คํธ
์ด์ ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ ํ๊ณ URL์ ํตํด์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ ๋ณด๋๋กํ๊ฒ ๋ค.
์ ๋ก๋๋ฅผ ๋๋ฌ์ค๋ค.
ํ์ผ์ถ๊ฐ๋ฅผ ๋๋ฌ์ ๋ก์ปฌ์์ ์ถ๊ฐํ ์ด๋ฏธ์ง๋ฅผ ๋ฃ๊ณ ์ ๋ก๋ํ ์ด๋ฏธ์ง๋ฅผ ์ฒดํฌํ๊ณ , ์ ๋ก๋๋ฅผ ๋๋ฅธ๋ค.
๊ทธ๋ฌ๋ฉด ์ด๋ ๊ฒ ์ฌ๋ผ๊ฐ์ง ํ์ผ์ ๋ณผ ์ ์๋ค.
๊ทธ๋ผ ์ดํ์ผ์ ๋๋ฌ์ URL์ ํ์ธํ๋ค.
์ด๋ ๊ฒ ๋์จ ๊ฐ์ฒด URL ์ ์ฐ๋ฉด ์ด์ ๊ฐ์์ ๋ฒํท์ ์ฌ๋ผ์จ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค. /์ด๋ฏธ์ง๋ช .ํ์ฅ์ ๋ช ์ ์ ์ธํ ์ URL path๋ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉํ๋ ํ๊ฒฝ๋ณ์๋ก ๋๊ณ ์ด๋ฏธ์ง๋ช ๋ง ๋ถ์ด์ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ ์ฌ ์ ์๋ค.
๋๊ธ