[AWS] CDK (with Python)
CDK๋ Cloud Development Kit์ ์ถ์ฝ์ผ๋ก, AWS์์ ์ง์ ์ ๊ณตํ๋ IaC ๋๊ตฌ๋ค.
์ฝ๋๋ก ์ธํ๋ผ๋ฅผ ๊ด๋ฆฌํ๋ค๋ ๊ฒ์ด๋ค. ํ
๋ผํผ ๊ฐ์ ๋๊ตฌ๋ค๊ณผ ๋น๊ตํ ์ ์๊ฒ ๋ค. ๋ด๋ถ์ ์ผ๋ก๋ AWS Cloudformation์ ์ฌ์ฉํด์ ์ํ ๊ด๋ฆฌ๋ฅผ ํ๋ค.
https://blog.naver.com/sssang97/222801645516
์ธ์ด๋ Node.js, Python, C#, Go, Java ์ ๋๊ฐ ์ ๊ณต๋๋, ํ์ด์ฌ์ ๊ฐ์ฅ ๋ง์ด ์ฐ๊ณ ๊ณต์ ๋ ํฌ์ ์์ ๊ฐ ๋ง์ ๊ฒ๋ ํ์ด์ฌ์ธ ๊ฒ ๊ฐ๋ค. ๊ทธ๋์ ๋๋ ํ์ด์ฌ์ผ๋ก ํ๊ฒ ๋ค.
cdk ๊ธฐ๋ณธ๊ตฌ์ฑ
์ฌ์ ์ aws-cli ์ค์น์ aws configure๊ฐ ์ ๋ถ ๋์ด์์ด์ผ ํ๋ค.
CLI๋ npm์ผ๋ก ์ค์นํ๋ค.
npm install -g aws-cdk

์ด๋ ๊ฒ ๊น๊ณ
๋ถํธ์คํธ๋ฉ ๋ช ๋ น์ ๋ ๋ ค์ ๊ธฐ๋ณธ cloudformation ์ธํ ์ ํด์ค๋ค.

๊ทธ๋ผ ์ด๋ฐ์์ผ๋ก ์ค์ ๊ตฌ์ฑ์ด ์์ฑ๋๋ค.
์ด๊ฑด ์ผ์ข
์ ์ปจํธ๋กค ํ๋ ์ธ์ด๋ค. ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ค.
CDK ์ฝ๋ ๊ตฌ์ฑ
๋จผ์ aws cdk ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ๋์ ์ค์นํ๋ค.
python3 -m pip install aws-cdk-lib

๊ทธ๋ฆฌ๊ณ ๋์ ํ๋ก์ ํธ๋ฅผ ์ ์ ํ ๊ตฌ์ฑํ๋ค.
cdk.json์๋ ์คํ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ด๋๊ณ
์์ค์ฝ๋์๋ ์ด๋ฐ ๊ตฌ์ฑ์ ๊ฐ์ถฐ์ค๋ค.
env์ account number์ ๋ฆฌ์ ์ ํ ๋นํด์ฃผ๊ณ
์ด๋ฐ์์ผ๋ก ํด๋์ค๋ฅผ ์ ์ํด์ ์คํ์ ๋ค์ด๊ฐ ๋ฆฌ์์ค๋ค์ ์ด๊ธฐํํ๋ค. ์ฌ๊ธฐ์๋ EC2 ์ธ์คํด์ค๋ฅผ ํ๋ ์์ฑํ๋ ๊ฒ ์ ๋๋ง ๋ค์ด์๋ค.
์ด๊ฒ ์์ฒด๋ก๋ ๊ทธ์ ํ
ํ๋ฆฟ์ผ ๋ฟ์ด๋ค. ์ด ์คํ์ ์์ฑํ ๋ ์ฌ๊ธฐ์ ์ ์ํ ๋ฆฌ์์ค๋ค์ด ๋ค ์๋์ผ๋ก ์์ฑ์ด ๋๋ค.
์ด๋ ๊ฒ.
๋ง์ง๋ง์ cdk ์ฑ์ ์์ฑํ๊ณ , ์ฐจ๋ก๋๋ก ์คํ์ ์์ฑํ๊ณ , synth๋ก ๋ง๋ฌด๋ฆฌ๋ฅผ ํ๋ค. ๋์ฒด๋ก ์ด๋ฐ ๋๋์ผ๋ก ๊ฐ๋ฉด ๋๋ค.
์ฌ๊ธฐ์ ๋๋ฒ์งธ ํ๋ผ๋ฏธํฐ์ ๋ฃ์ id๊ฐ ์คํ์ ๊ณ ์ ์๋ณ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก ์์ฑ๋๋ ์ธ์คํด์ค ์ด๋ฆ์๋ ์ ๊ฒ ๋ค ์ ๋์ฌ๋ก ๋ถ๋๋ค.
๊ทธ๋ฌ๊ณ ๋์ cdk deploy ๋ช
๋ น์ ์ฌ์ฉํ๋ฉด ๋ฐ๋ก ๋ฆฌ์์ค ๋ฐฐํฌ๊ฐ ์์๋๋ค.
์ฝ๋์ ์คํ์ด ์ฌ๋ฌ๊ฐ์ผ๋๋ --all ์ต์
์ ์ค์ ๋ค ์คํ์ํค๊ฑฐ๋ ์๋ณ์๋ฅผ ์ง์ ์ง์ ํด์ผ ํ์ง๋ง, ๋จ์ผ ์คํ์ผ๋๋ ์๋ฌด ํ๋ผ๋ฏธํฐ๋ ์ฃผ์ง ์์๋ ๋๋ค.
์ฒ์ ์์ฑํ ๋๋ ๋ญ๊ฐ ์๊ธฐ๋์ง ๋ณด์ฌ์ฃผ๊ณ ๊ณ์ํ ๊ฒ์ธ์ง๋ฅผ ๋ฌผ์ด๋ณธ๋ค.
๊ฐ ์คํ์ ๋ํ cloudformation ์คํ์ด ์์ฑ๋๊ณ
์ธ์คํด์ค๋ ์๊ธด๋ค.
๋ฉํฐ์คํ
ํ๋์ cdk ์ฝ๋์๋ ์ฌ๋ฌ๊ฐ์ ์คํ์ด ๋ค์ด๊ฐ ์ ์๋ค.
๋ณ๋ค๋ฅธ ์ ์ฝ์ ์๋ค.
์ด๋ฐ๋๋์ผ๋ก ์คํ ํ
ํ๋ฆฟ์ผ๋ก ์คํ์ ์ฐ์ด๋ผ ์๋ ์๋ค.
๊ทธ๋ฌ๋ฉด
์คํ๋ ๋ณ๋๋ก ์์ฑ๋๊ณ
์ด๋ฐ ๋๋์ผ๋ก ๋ ์ ๋ฝํ๋ค.
์์
๋ง์ฝ ๋ณ๊ฒฝ์ฌํญ์ด ์๋ค๋ฉด ์ฝ๋๋ฅผ ์์ ํ๊ณ

๋ฐฐํฌ๋ง ๋๋ฅด๋ฉด ๋๋ค.
์ด๋๋ถํฐ๋ y/n์ ๋ฌผ์ด๋ณด์ง ์์์ ์ ์คํ๊ฒ ํด์ผํ๋ค.
๋ณ๊ฒฝ์ฌํญ์ diff ๋ช
๋ น์ผ๋ก ํ์ธํ๋ค.
์๋ฌดํผ ๊ทธ๋์ ์ ์ฉ์ ํ๋ฉด

์์์ ์ ๋ง์ถฐ ๋์์ค ๊ฒ์ด๋ค.
์ญ์
์ญ์ ํ ๋๋ deploy ๋์ destroy ๋ช ๋ น์ ์ฌ์ฉํ๋ฉด ๋๋ค. ๋ช ๋ น ๊ท์น์ deploy์ ๋์ผํ๋ค.
ํ๋ฒ ๋ฌผ์ด๋ณด๊ณ
์ง์ด๋ค.
๊ทธ๋ผ ์คํ๋ ์ง์ฐ๊ณ
๋ฆฌ์์ค๋ ์ง์์ง ๊ฒ์ด๋ค.
์ฐธ์กฐ
https://aws.amazon.com/ko/cdk/
https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html
https://docs.aws.amazon.com/ko_kr/cdk/v2/guide/cli.html
https://docs.aws.amazon.com/cdk/v2/guide/environments.html