ํผ๋๋ก ๋์๊ฐ๊ธฐ
Dev.toInfrastructure
์๋ฌธ ์ฝ๊ธฐ
Terraform๊ณผ AWS Secrets Manager๋ก ๊ตฌํํ ๋ณด์ ์ธํ๋ผ ์๋ํ
โจ IaC: Deploying a Node Secrets Viewer with Terraform โจ๐ฉ๐ฝโ๐ป
AI ์์ฝ
Context
EC2 ์ธ์คํด์ค ๋ฐฐํฌ ์ .env ํ์ผ ๊ธฐ๋ฐ์ ํ๊ฒฝ ๋ณ์ ๊ด๋ฆฌ ๋ฐฉ์ ์ฌ์ฉ. ๋ฏผ๊ฐ ์ ๋ณด ๋ ธ์ถ ์ํ๊ณผ ์๋ ์ค์ ์ผ๋ก ์ธํ ๊ด๋ฆฌ ํจ์จ์ฑ ์ ํ ๋ฌธ์ ๋ฐ์.
Technical Solution
- AWS Secrets Manager๋ฅผ ๋์ ํ์ฌ API ํค์ DB ์๊ฒฉ ์ฆ๋ช ๋ฑ ๋ฏผ๊ฐ ์ ๋ณด๋ฅผ ์ค์ ์ง์ค์์ผ๋ก ๊ด๋ฆฌํ๋ ๊ตฌ์กฐ
- Terraform์ ์ด์ฉํด EC2, IAM Role, Security Group์ ์ฝ๋๋ก ์ ์ํ๊ณ ๋ฐฐํฌํ๋ IaC ํ์ดํ๋ผ์ธ ๊ตฌ์ถ
- AWS SDK๋ฅผ Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ ํตํฉํ์ฌ ๋ฐํ์์ ํ์ํ ์ํฌ๋ฆฟ ์ ๋ณด๋ฅผ ๋์ ์ผ๋ก ํธ์ถํ๋ ๋ก์ง ๊ตฌํ
- IAM Instance Profile์ ํตํด EC2 ์ธ์คํด์ค์ Secrets Manager ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ๋ ์ต์ ๊ถํ ์์น ์ ์ฉ
- Terraform ์ค์ ํ์ผ์ data, output, provider, resource ๋ฑ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ๋ชจ๋ํ์ ์ ์ง๋ณด์์ฑ์ ๋์ธ ํ์ผ ๊ตฌ์กฐ ์ค๊ณ
- userdata.sh ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฉํด ์ธ์คํด์ค ์์ฑ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ค์น ๋ฐ ์คํ ๊ณผ์ ์ ์๋ํํ ํ๋ก๋น์ ๋ ๋ฐฉ์
Key Takeaway
์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ ์ธํ๋ผ ์ค์ ์ ์์ ํ ๋ถ๋ฆฌํ๊ณ ์ธ๋ถ ์ํฌ๋ฆฟ ๊ด๋ฆฌ ์๋น์ค๋ฅผ ๊ฒฐํฉํ์ฌ ๋ณด์์ฑ๊ณผ ๋ฐฐํฌ ์ฌํ์ฑ์ ๋์์ ํ๋ณดํ๋ ์ค๊ณ ์ ๋ต.
์ค์ฒ ํฌ์ธํธ
๋ฏผ๊ฐ ์ ๋ณด ๊ด๋ฆฌ ์ .env ํ์ผ์ ๋ฐฐ์ ํ๊ณ AWS Secrets Manager์ IAM Role์ ์กฐํฉํ ๋์ ์ฐธ์กฐ ๊ตฌ์กฐ๋ฅผ ์ ์ฉํ ๊ฒ