๋ฐ์ํ
IaC๋?
- Infrastructure as code (IaC)๋ ์๋ ํ๋ก์ธ์ค ๋ฐ ์ค์ ๋์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ธํ๋ผ๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ ๋๋ค.
- ์ฝ๋์ VCS๋ฅผ ํ์ฉํด ์ธํ๋ผ์ ๋ฒ์ ์ ๊ด๋ฆฌํ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ๋ณ๊ฒฝ ์ฌํญ์ ์ฝ๊ฒ ์ถ์ ํ๊ณ ์ด์ ์ํ๋ก ์ ์ํ๊ฒ ๋กค๋ฐฑํ ์ ์์ต๋๋ค.
- ์๋ ์ธํ๋ผ ๊ด๋ฆฌ๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ณ ํด๋จผ ์๋ฌ๊ฐ ๋ฐ์ํ์ฌ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ด๋ ค์ฐ๋, ์ฝ๋๋ก ์ธํ๋ผ๋ฅผ ๊ด๋ฆฌํ๋ฉด ๋ฐฐํฌ๋ฅผ ์๋ํํ๊ณ ๋์ผํ ํ๊ฒฝ์ ๋ฐ๋ณต์ ์ผ๋ก ์ฌํํ ์ ์๊ธฐ ๋๋ฌธ์ ์ผ๊ด์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
- AWS๋ IaC ์๋น์ค๋ก CloudFormation์ ์ ๊ณตํฉ๋๋ค.
CloudFormation
- CloudFormation์ ์ธํ๋ผ๋ฅผ ์ฝ๋๋ก ์ ์ํ์ฌ AWS ๋ฆฌ์์ค๋ฅผ ์๋์ผ๋ก ์์ฑ, ๊ด๋ฆฌ, ์ ๋ฐ์ดํธํ๋ ์๋น์ค์ ๋๋ค.
- Template์ AWS ๋ฆฌ์์ค์ ์์ฑ์ ์ ์ํ๋ YAML ๋๋ JSON ํ์์ ํ์ผ์ผ๋ก CloudFormation์ผ๋ก ๊ตฌ์ถํ๋ ค๋ ์ธํ๋ผ์ ์ค๊ณ๋ ์ญํ ์ ํฉ๋๋ค.
- CloudFormation์ Stack์ ์์ฑํ ๋๋ง๋ค Template์ ์ ํ ๋ฆฌ์์ค๋ฅผ ํ๋ก๋น์ ๋ํฉ๋๋ค.
- Stack์ CloudFormation์ผ๋ก ๋ฐฐํฌํ๋ ค๋ AWS ๋ฆฌ์์ค ๊ทธ๋ฃน์ด๋ฉฐ Stack์ ๋ชจ๋ ๋ฆฌ์์ค๋ Template์ ์ํด ์ ์๋ฉ๋๋ค.
- Stack์ ์ญ์ ํ๋ฉด CloudFormation์ Stack๊ณผ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํฉ๋๋ค. Stack์ ์ญ์ ํ๋ฉด์๋ ์ผ๋ถ ๋ฆฌ์์ค๋ฅผ ์ ์งํ๋ ค๋ ๊ฒฝ์ฐ ์ญ์ ์ ์ฑ (Deletion Policy)๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
- Template์ ์์ฑํ์ฌ CloudFormation์ ์ ๋ก๋ํ๋ฉด, CloudFormation์ Template์ S3์ ์ ์ฅํ๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก AWS API๋ฅผ ํธ์ถํ์ฌ ๋ฆฌ์์ค๋ฅผ ํ๋ก๋น์ ๋ํฉ๋๋ค. ์ด๋ ๊ฒ ์์ฑ๋ ๋ฆฌ์์ค๋ Stack์ผ๋ก ๊ด๋ฆฌ๋ฉ๋๋ค.
- Stack์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฆฌ์์ค๋ฅผ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด์๋ ์๋ก์ด ํ ํ๋ฆฟ์ผ๋ก ๊ต์ฒดํ๊ฑฐ๋ ๊ธฐ์กด ํ ํ๋ฆฟ์ ์์ ํด์ผ ํฉ๋๋ค.
- Stack์ ์
๋ฐ์ดํธํ๋ ๊ณผ์ ์์ ๋ฆฌ์์ค์ ์์ฑ์ ๋ฐ๋ผ ๊ธฐ์กด ๋ฆฌ์์ค๊ฐ ์ค๋จ๋๊ฑฐ๋ ์ ์ฒด ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ๊ณ ์๋ก ์์ฑํ ์ ์์ต๋๋ค.
์ด ๊ณผ์ ์์ ๊ฐ์ฉ์ฑ์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๊ธฐ ๋๋ฌธ์ ์ ๋ฐ์ดํธ ์ํฅ๋๋ฅผ ํ์ ํ๊ธฐ ์ํด Change Set์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Change Set์ ๋ฆฌ์์ค ๋ณ๊ฒฝ์ ๋ํด ์์ฝ์ ํ๋ ๊ธฐ๋ฅ์ผ๋ก ์ค์ ๋ก Stack์ ์ ๋ฐ์ดํธํ์ง ์๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ ์ ์์ต๋๋ค. - CloudFormation์ ๊ถํ์ด ์๋ ์์ ๋ง ์ํํ ์ ์์ต๋๋ค.
CloudFormation - AWSTemplateFormatVersion๊ณผ Description
- AWSTemplateFormatVersion์ ํ ํ๋ฆฟ์ด ์ด๋ค ๊ท์น์ ๋ฐ๋ฅด๊ณ ์๋์ง ์ง์ ํ๋ ์น์ ์ ๋๋ค.
- Description์ ํ ํ๋ฆฟ์ ์ค๋ช ํ๋ ์น์ ์ผ๋ก ๋จ์ํ Description์ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋ฆฌ์์ค์ ์ํฅ์ ๋ฏธ์น์ง ์๊ธฐ ๋๋ฌธ์ ์คํ ์ ๋ฐ์ดํธ๋ก ์ด์ด์ง์ง ์์ต๋๋ค. ์คํ ์ ๋ฐ์ดํธ๊ฐ ๋ฐ์ํ๋ ค๋ฉด ๋ฆฌ์์ค์ ๊ด๋ จ๋ ๋ณ๊ฒฝ์ฌํญ์ด ์์ด์ผํฉ๋๋ค.
CloudFormation - Resources
- Resources๋ ํ ํ๋ฆฟ์์ ์ ์ผํ ํ์ ์น์ ์ผ๋ก CloudFormation์์ ํ๋ก๋น์ ๋ํ๊ณ ๊ตฌ์ฑํ๋ ค๋ AWS ๋ฆฌ์์ค๋ฅผ ์ ์ธํฉ๋๋ค.
- Resource type์ AWS ๋ฆฌ์์ค์ ์ข ๋ฅ๋ฅผ ์ ์ํ๋ ๋ถ๋ถ์ผ๋ก AWS::ServiceName::ResourceType ํ์์ ๋๋ค.
- Resource properties๋ ๋ฆฌ์์ค์ ๋ํ ์ธ๋ถ์ ์ธ ์ ๋ณด๋ฅผ ์ ์ํ๋ ๋ถ๋ถ์ผ๋ก ๋ฆฌ์์ค ํ์ ์ ๋ฐ๋ผ ํ์ ์์ฑ๊ณผ ์ต์ ์์ฑ์ด ์์ต๋๋ค.
- ๋ฆฌ์์ค๋ Logical ID(ํ ํ๋ฆฟ ๋ด์์ ์ฌ์ฉํ๋ ๊ณ ์ ์๋ณ์)์ Physical ID(์ค์ ๋ฆฌ์์ค์ ํ ๋น๋ ๊ณ ์ ์๋ณ์)๋ก ๋ฆฌ์์ค๋ฅผ ์๋ณํ๊ณ ๊ด๋ฆฌ๋ฉ๋๋ค.
CloudFormation - Parameters
- Parameters์ ์ฌ์ฉ์ ์ ์ ๊ฐ์ ์ ๋ ฅํ์ฌ ํ ํ๋ฆฟ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๊ณ ์ ์ฐํ๊ฒ ๋ง๋ค์ ์์ต๋๋ค.
- ์ฌ์ฉ์์ ์ ๋ ฅ์ด ๋ถ์ ํํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ฝ ์กฐ๊ฑด์ ์ค์ ํ์ฌ Parameters์ ๊ฐ์ ๊ฒ์ฆํ ์ ์์ต๋๋ค.
CloudFormation - Outputs
- Outputs์ ์คํ ์์ฑ ํ์ ์ฐธ์กฐํ๊ณ ์ถ์ ๊ฐ์ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- Outputs์ CI/CD ํ์ดํ๋ผ์ธ, ์๋ํ ์คํฌ๋ฆฝํธ์์ ํ์ฉํ๊ฑฐ๋, ๋ค๋ฅธ ์คํ์์ ์ฐธ์กฐ ๋ฐ ๋๋ฒ๊น ์ฉ๋๋ก ํ์ฉํ ์ ์์ต๋๋ค.
- ๋น๋ฐ๋ฒํธ๋ ๋ฏผ๊ฐํ ์ ๋ณด๋ Output์ผ๋ก ์ถ๋ ฅํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
CloudFormation - Mappings
- Mappings์ ํน์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๊ฐ์ ์ง์ ํ๋๋ฐ ์ฌ์ฉํ ์ ์๋ key-value ์์ ๋ง๋๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- Mappings๋ Template ๋ด์ ํ๋์ฝ๋ฉ ๋ ๊ณ ์ ๋ณ์๋ก Region, AZ, AWS ๊ณ์ ๋ฑ๊ณผ ๊ฐ์ ๋ณ์๊ฐ ๊ฐ์ง ์ ์๋ ๋ชจ๋ ๊ฐ์ ์๊ณ ์์ ๋ ์ ํฉํฉ๋๋ค.
CloudFormation - Conditions
- Conditions๋ ํน์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ฑฐ๋ ์์ฑ์ ์ค์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
- ์๋ฅผ ๋ค์ด ํ ์คํธ ํ๊ฒฝ๊ณผ ํ๋ก๋์ ํ๊ฒฝ์์ ๋ฆฌ์์ค ํฌ๊ธฐ๋ ์ค์ ์ ๋ค๋ฅด๊ฒ ์์ฑํ ์ ์์ต๋๋ค.
CloudFormation - Intrinsic Functions
- CloudFormation์ ๋ด์ฅ ํจ์(Intrinsic Functions)๋ ์คํ์ ๊ด๋ฆฌํ๋๋ฐ ๋์์ด ๋๋ ๊ธฐ๋ฅ์ผ๋ก ๋ฆฌ์์ค์ ์์ฑ์ ์ ์ฐํ๊ฒ ์ ์ํ๋๋ฐ ์ ์ฉํฉ๋๋ค.
- Ref๋ ํน์ ๋ฆฌ์์ค๋ ํ๋ผ๋ฏธํฐ์ ๊ฐ์ ์ฐธ์กฐํ๊ธฐ์ํด ์ฌ์ฉํ๋ ํจ์์ ๋๋ค. Ref๋ ๋ฆฌ์์ค๋ง๋ค ๋ฐํํ๋ ๊ฐ์ด ์ ํด์ ธ์๊ณ EC2์ ๊ฒฝ์ฐ ์ธ์คํด์ค์ ๋ฌผ๋ฆฌ์ ID๋ฅผ ๋ฐํํฉ๋๋ค.
- Fn::GetAtt๋ ํ ํ๋ฆฟ ๋ด ๋ฆฌ์์ค์ ์์ฑ ๊ฐ์ ๋ฐํํ๋ ํจ์์ ๋๋ค. Fn::GetAtt์ ํ ํ๋ฆฟ ์ธ๋ถ ๋ฆฌ์์ค์ ์์ฑ์๋ ์ ๊ทผํ ์ ์์ต๋๋ค.
- Fn::ImportValue๋ ๋ค๋ฅธ ์คํ์ OutPuts ์น์ ์์ Export๋ก ๋ด๋ณด๋ธ ๊ฐ์ ํ์ฌ ์คํ์ผ๋ก ๊ฐ์ ธ์ค๋๋ฐ ์ฌ์ฉํ๋ ํจ์์ ๋๋ค.
- Fn::FindInMap์ Mappings ์น์ ์์ ํค๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ๊ฐ์ ์ฐพ๋๊ฒฝ์ฐ ์ฌ์ฉํ๋ ํจ์์ ๋๋ค.
CloudFormation - Rollback
- CloudFormation Rollback์ ์คํ์ ์์ฑํ๋ ์์ ์ด๋ ์ ๋ฐ์ดํธํ๋ ์์ ์ด ์คํจ ํ์๋ ์คํ์ ์ด์ ์ํ๋ก ๋๋ฆฌ๋ ํ๋ก์ธ์ค์ ๋๋ค.
- ์คํ ์์ฑ ์ค ์คํจํ๋ค๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ๋ฆฌ์์ค๊ฐ ์ญ์ ๋๊ณ ์ ๋ฐ์ดํธ ์ค ์คํจํ๋ค๋ฉด ๊ธฐ์กด์ ์ํ๋ก ๋กค๋ฐฑํ์ฌ ์ ๋ฐ์ดํธ ์ด์ ์ ์์ ํ ์ํ๋ก ์๋ณตํฉ๋๋ค.
- ๋กค๋ฐฑ์ ์คํจํ๋ ๊ฒฝ์ฐ ์คํ์ UPDATE_ROLLBACK_FAILED ์ํ๋ก ๋จ๊ฒ๋๋๋ฐ ๋กค๋ฐฑ ์คํจ ์์ธ์ ํด๊ฒฐํ ๋ค ContinueUpdateRollback๋ก ๋กค๋ฐฑ์ ์ฌ์๋ํ ์ ์์ต๋๋ค.
CloudFormation - Drift
- CloudFormation์ ํตํด ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ์๊ฐ ๋ฆฌ์์ค๋ฅผ ์์๋ก ์์ ํ๋ ๊ฒฝ์ฐ Drift๊ฐ ๋ฐ์ํ๋ค๊ณ ํฉ๋๋ค.
- Drift Detection์ ์ฌ์ฉํ๋ฉด CloudFormation ๊ด๋ฆฌ ์ธ๋ถ์์ ๋ณ๊ฒฝ๋ ์คํ ๋ฆฌ์์ค๋ฅผ ์๋ณํ ์ ์์ต๋๋ค.
CloudFormation - Custom resources
- Custom resource๋ CloudFormation์ด ์ง์ํ์ง ์๋ AWS ์๋น์ค๋ ์ธ๋ถ ๋ฆฌ์์ค๋ฅผ ํ๋ก๋น์ ๋ํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก ํ๋ ๊ธฐ๋ฅ์
๋๋ค.
์ด๋ฅผ ํตํด CloudFormation์ ๊ธฐ๋ณธ ์ ๊ณต ๋ฆฌ์์ค๋ก ํํํ ์ ์๋ ๋ณต์กํ ๋ก์ง์ด๋ ์ํฌํ๋ก์ฐ๋ฅผ ๊ตฌํํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํฉ๋๋ค. - Custom resource์ AWS::CloudFormation::CustomResource ๋๋ Custom::MyCustomResourceTypeName(๊ถ์ฅ ์ฌํญ)์ผ๋ก ์ ์ํฉ๋๋ค.
CloudFormation - Security
- DeletionPolicy์ ์คํ์ด ์ญ์ ๋ ๋ ๋ฆฌ์์ค์ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ง์ ํ๋ ์์ฑ์ ๋๋ค.
- DeletionPolicy์ Delete(๊ธฐ๋ณธ๊ฐ, ๋ฆฌ์์ค ์ญ์ ), Retain(๋ฆฌ์์ค ์ ์ง), Snapshot(์ค๋ ์ท ์์ฑ ํ ์ญ์ , ๋ฆฌ์์ค๊ฐ ์ค๋ ์ท์ ์ง์ํ๋ ๊ฒฝ์ฐ)๋ฅผ ์ง์ํฉ๋๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ ์
๋ฐ์ดํธ ๊ถํ์ด ์๋ ์ฌ์ฉ์๋ ์คํ์ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ์
๋ฐ์ดํธํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ ์๋ํ์ง ์์ ๋ฆฌ์์ค ๋ณ๊ฒฝ์ด๋ ์ฌ์์ฑ์ ์ ๋ฐํ ์ ์์ต๋๋ค.
Stack Policy๋ ์คํ ์ ๋ฐ์ดํธ ์ค์ ๋ณดํธํ๊ณ ์ ํ๋ ๋ฆฌ์์ค์ ํ์ฉ๋ ์์ ์ ์ ์ํ๋ JSON ๋ฌธ์๋ก ์๋ํ์ง ์์ ๋ฆฌ์์ค ๋ณ๊ฒฝ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. - Service role์ CloudFormation์ด ์คํ ์์ (์์ฑ ๋ฐ ์ ๋ฐ์ดํธ)์ ์ํํ ๋ ์ฌ์ฉํ๋ IAM Role๋ก CloudFormation์ด ์ํํ ์ ์๋ ์์ ์ ๋ช ์์ ์ผ๋ก ์ง์ ํฉ๋๋ค.
- Service role์ ์ง์ ํ์ง ์์ผ๋ฉด ์คํ ์์ ์ ์์ํ ์ฌ์ฉ์์ IAM ์๊ฒฉ ์ฆ๋ช ์ ๊ธฐ๋ฐ์ผ๋ก CloudFormation ์คํ ์์ ์ด ์ํ๋ฉ๋๋ค.
- Service role์ ์ง์ ํ๋ฉด ํด๋น ์คํ์ ๋ชจ๋ ์์ ์ ํด๋น ๋กค์ ์ฌ์ฉํ๊ณ ์คํ์ด ์์ฑ๋ ํ์๋ ์คํ์ ์ฐ๊ฒฐ๋ ์๋น์ค ์ญํ ์ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
- ์คํ์์ Termination protection์ ํ์ฑํํ๋ฉด ์ฐ๋ฐ์ ์ธ ์ญ์ ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Termination protection์ ๋นํ์ฑํ๋์ด ์์ต๋๋ค.
- Capabilities๋ CloudFormation CreateStack์ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ก ํ
ํ๋ฆฟ์ IAM ๋ฆฌ์์ค๋ฅผ ์์ฑํ๋ ๋ด์ฉ์ด ํฌํจ๋์ด ์๊ฑฐ๋ ๋งคํฌ๋ก๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ ๋ช
์์ ์ผ๋ก ์น์ธํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
Capabilities๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด InsufficientCapabilities ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
CloudFormation - Stack Sets
- Stack Set์ ์ฌ์ฉํ๋ฉด ํ ๋ฒ์ ์์ ์ผ๋ก ํ๋์ CloudFormation ํ ํ๋ฆฟ์ ์ฌ๋ฌ AWS ๊ณ์ ๊ณผ ๋ฆฌ์ ์ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
- StackSets๋ Organization ์ ์ฒด์ ๋ณด์ ์ ์ฑ ์ ์ ์ฉํ๋ ๋ฑ ๋ฉํฐ ๊ณ์ ๋ฐ ๋ฉํฐ ๋ฆฌ์ ํ๊ฒฝ์์ ์ธํ๋ผ๋ฅผ ์ผ๊ด๋๊ฒ ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค.
๋ฐ์ํ
'๐ AWS > AWS Developer - Associate' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[AWS] Developer Associate #12 Lambda (1) | 2024.12.30 |
---|---|
[AWS] Developer Associate #11 DNS(Route53) (2) | 2024.11.15 |
[AWS] Developer Associate #9 ๋ชจ๋ํฐ๋ง(CloudWatch, X-Ray) (2) | 2024.11.11 |
[AWS] Developer Associate #8 ๋ฉ์ธ์ง(SQS, SNS) (0) | 2024.09.22 |
[AWS] Developer Associate #7 CloudFront (0) | 2024.08.03 |