ํผ๋๋ก ๋์๊ฐ๊ธฐ
Dev.toDevOps
์๋ฌธ ์ฝ๊ธฐ
Access Key ์๋ ์์ ํ React ๋ฐฐํฌ, OIDC ๊ธฐ๋ฐ CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถ
Day 53: CI/CD for React on AWS S3 & CloudFront (No Access Keys!) ๐
AI ์์ฝ
Context
AWS Console์ ํตํ ์๋ ํ์ผ ์ ๋ก๋ ๋ฐฉ์์ ์ด์ ํจ์จ ์ ํ. GitHub Secrets์ ๊ณ ์ ๋ Access Key๋ฅผ ์ ์ฅํ๋ ๋ณด์ ์ทจ์ฝ์ ์กด์ฌ.
Technical Solution
- OIDC Identity Provider ์ค์ ์ ํตํ AWS IAM ์ญํ ๊ธฐ๋ฐ์ ์ผ์์ ์๊ฒฉ ์ฆ๋ช ํ๋ ๋ฐฉ์
- GitHub Actions ์ํฌํ๋ก์ฐ ๋ด id-token ๊ถํ ๋ถ์ฌ๋ฅผ ํตํ ๋ณด์ ๊ฐํ ์ค๊ณ
- aws s3 sync ๋ช ๋ น์ด์ --delete ํ๋๊ทธ ํ์ฉ์ผ๋ก ์ด์ ๋น๋์ ์์ ํ์ผ ์ ๊ฑฐ ๋ฐ ์คํ ๋ฆฌ์ง ์ต์ ํ
- CloudFront Invalidation API ํธ์ถ์ ํตํ ์ ์ธ๊ณ ์ฃ์ง ๋ก์ผ์ด์ ์ ์ต์ ์ฝํ ์ธ ์ฆ์ ๋ฐ์ ๊ตฌ์กฐ
- React ๋น๋๋ถํฐ S3 ๋๊ธฐํ ๋ฐ ์บ์ ๋ฌดํจํ๊น์ง ์ด์ด์ง๋ ์์ ์๋ํ ํ์ดํ๋ผ์ธ ๊ตฌํ
Impact
- ๋ฐฐํฌ ์์ ์๊ฐ 45์ด ๋ฌ์ฑ
- AWS Console ์กฐ์ ํ์ 0ํ ๊ตฌํ
Key Takeaway
์ ์ ์๊ฒฉ ์ฆ๋ช ์ ๋ฐฐ์ ํ OIDC ๊ธฐ๋ฐ ์ธ์ฆ ์ฒด๊ณ ๋์ ์ผ๋ก CI/CD ํ์ดํ๋ผ์ธ์ ๋ณด์์ฑ๊ณผ ์ด์ ํจ์จ์ ๋์์ ํ๋ณดํ๋ ์ค๊ณ ์์น.
์ค์ฒ ํฌ์ธํธ
AWS ๋ฐฐํฌ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ ์ Access Key ๋์ OIDC๋ฅผ ์ฌ์ฉํ์ฌ ๋ณด์ ๋ฆฌ์คํฌ๋ฅผ ์ ๊ฑฐํ๊ณ , S3 ๋๊ธฐํ ์ --delete ์ต์ ์ ์ ์ฉํด ๋ถํ์ํ ์คํ ๋ฆฌ์ง ๋น์ฉ ์ฆ๊ฐ๋ฅผ ๋ฐฉ์งํ ๊ฒ