๐ ์ ์ ์น ์ฌ์ดํธ ๋ฐฐํฌ
AWS ์ฝ์์์ S3 ์๋น์ค ์ฌ์ฉ
AWS ์ฝ์๋ก ์ด๋ํ๋ค.
https://us-east-1.console.aws.amazon.com/console/home
๊ฒ์์ ํตํด S3 ์๋น์ค๋ก ์ด๋ํ๋ค.
๋ฒํท ๋ง๋ค๊ธฐ
์ข์ธก ๋ฉ๋ด์์ ๋ฒํท ํญ์ผ๋ก ์ด๋ํ๋ค.
์ฌ๊ธฐ์ ๋ฒํท์ ํ๋์ ์ ์ฅ์ ๊ตฌํ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
๋ฒํท ๋ง๋ค๊ธฐ๋ฅผ ํตํด ๋ฒํท์ ์์ฑํ๋ค.
๋ฒํท ์ด๋ฆ์ AWS ๋ฆฌ์ ์ธํ ํ๋ค.
๊ฐ์ฒด ์์ ๊ถ์ ๊ถ์ฅํ๋ ์ธํ ์ธ ACL ๋นํ์ฑ์ผ๋ก ๋๋ค.
๋ฒํท์ ํผ๋ธ๋ฆญ ์ก์ธ์ค ์ฐจ๋จ ์ค์ ์ผ๋ก ์ด๋ํ๋ค.
ํ๋ก์ ํธ ๋ฐฐํฌ๋ฅผ ์ํด ์ฐจ๋จ์ ํด์ ํ๋ค.
๋ฒํท ๋ง๋ค๊ธฐ๋ฅผ ํตํด ๋ฒํท์ ์์ฑํ๋ค.
์์ฑ๋ ๋ฒํท ํ์ธํ ์ ์๋ค.
์ฌ๊ธฐ์ ๋ฒํท ์์ ์ ์ฅํด๋ ํ์ผ์ ๊ฐ์ฒด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์น ์ฌ์ดํธ๋ก ๋ฐฐํฌํ๊ธฐ
CRA์์ npm run build ๋ฅผ ํตํด ๋น๋ํ ํ์ผ์ ๋ฒํท์ ์ ๋ก๋ํ๋ค.
์์ฑ ํญ์ผ๋ก ์ด๋ํ๋ค
์ ์ ์น ์ฌ์ดํธ ํธ์คํ ํธ์ง์ ํ์ฑํํ๋ค.
์ธ๋ฑ์ค ๋ฌธ์๋์ index.html์ ๊ธฐ์ ํ๋ค.
์ ์ฅ ์ ๋ฐฐํฌ url์ด ์์ฑ๋ ๊ฒ์ ํ์ธ ๊ฐ๋ฅํ๋ค.
ํ์ง๋ง url์ ์ ์ ์ 403 ์ค๋ฅ๋ก ์ ๊ทผ์ด ์ ๋๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
๊ถํ ํญ์ผ๋ก ์ด๋ํ๋ค.
๋ฒํท ์ ์ฑ ํธ์ง์ผ๋ก ์ด๋ํ๋ค.
ํ์ฌ ๋ฒํท์ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ์ ์ฑ ์ ์ค์ ํ๋ค.
์๋๋ ์์ json ์ฝ๋์ด๋ค
Statement์ Resource์๋ ์์ ์ ๋ฒํท ARN์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<bucket-name>/*"
}
]
}
๊ถํ ์ค์ ํ ๋ฐฐํฌ ๋งํฌ๋ฅผ ์๋ก๊ณ ์นจํด๋ณด๋ฉด ์ ๊ทผ ๊ฐ๋ฅํ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๐ AWS CLI์ ํ์ฉํด์ ๋ฐฐํฌํ๊ธฐ
AWS CLI ๋ฅผ ์ด์ฉํ๋ฉด ๋งค ๋ฒ ๋น๋ ํ์ผ์ ๋ฒํท์ ์ ๋ก๋ํ์ง ์๊ณ ๋ ๋ช ๋ น์ด๋ก ๊ฐ๋จํ๊ฒ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๋ค.
AWS CLI ์ค์น
์๋ ๋ช ๋ น์ด๋ก AWS CLI๋ฅผ ์ค์นํ๋ค.
Window
msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi
aws --version
Mac
$ brew install awscli
$ aws --version
ํ๋กํ ์ธ์ฆ ์ค์
์ค์น ํ ์ธ์ฆ ์ค์ ์ด ํ์ํ๋ค.
Access Key ๋ฐ๊ธ์ ์ํด AWS ์ฐ์ธก ์๋จ์ ๊ณ์ ์ ํด๋ฆญํด์ ๋ณด์ ์๊ฒฉ ์ฆ๋ช ์ผ๋ก ์ด๋ํ๋ค.
์ก์ธ์ค ํค ๋ง๋ค๊ธฐ๋ฅผ ํตํด ํค๋ฅผ ์์ฑํ๋ค.
ํค ์ ๋ณด๋ ์์ฑ๋ ์์ ์ ๋ฑ ํ ๋ฒ๋ง ํ์ธํ ์ ์์ผ๋ฏ๋ก ๋ฏธ๋ฆฌ ๊ธฐ๋กํด ๋๊ฑฐ๋ ํค ํ์ผ ๋ค์ด๋ก๋ ๋ฒํผ์ ๋๋ฌ ๋ก์ปฌ์ ๋ฐ์ ๋๋ค.
์๋ ๋ช ๋ น์ด๋ก ํ๋กํ ์ธ์ฆ์ ์งํํ๋ค. (default ํ๋กํ)
aws configure
์๋ ๋ช ๋ น์ด๋ก ์ ๋๋ก ์ธ์ฆ๋์๋์ง ํ์ธ์ด ๊ฐ๋ฅํ๋ค.
aws s3 ls s3://<bucket-name> --profile default
๋ช ๋ น์ด๋ก ๋ฐฐํฌ
์๋ ๋ช ๋ น์ด๋ก ๋ฐฐํฌํ๋ค.
npm run build
aws s3 sync build/ s3://<bucket-name> --delete
์ด์ package.json์ scripts๋ก ์ถ๊ฐํ์ฌ ๊ฐํธํ๊ฒ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
// package.json
"scripts": {
...
"deploy": "npm run build && aws s3 sync build/ s3://<bucket-name> --delete"
},