๐Ÿ“‚ AWS/AWS Developer - Associate

[AWS] Developer Associate #10 IaC(CloudFormation)

dhyuck 2024. 11. 11. 22:03
๋ฐ˜์‘ํ˜•

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 ์ „์ฒด์— ๋ณด์•ˆ ์ •์ฑ…์„ ์ ์šฉํ•˜๋Š” ๋“ฑ ๋ฉ€ํ‹ฐ ๊ณ„์ • ๋ฐ ๋ฉ€ํ‹ฐ ๋ฆฌ์ „ ํ™˜๊ฒฝ์—์„œ ์ธํ”„๋ผ๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ๋ฐฐํฌํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
๋ฐ˜์‘ํ˜•