Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS CDKにおけるL2 Constructの仕組み / aws-cdk-l2-construct

k.goto
March 13, 2025

AWS CDKにおけるL2 Constructの仕組み / aws-cdk-l2-construct

2025/03/13開催「JAWS-UG東京 IaC Night 〜入門から上級まで!AWSをコードで構築しよう〜」での登壇資料です。

k.goto

March 13, 2025
Tweet

More Decks by k.goto

Other Decks in Programming

Transcript

  1. ࣗݾ঺հ LHPUP "84)&30 "84$%,ίϯτϦϏϡʔτ 0QFO$POTUSVDUT-JCSBSZ ίϛϡχςΟۦಈ$%,$POTUSVDUϥΠϒϥϦ "84πʔϧ DMT EFMTUBDL MBNWFS

    "84%FW5PPMT)FSP .BJOUBJOFS 5PQ$POUSJCVUPS $PNNVOJUZ3FWJFXFS ࣗ࡞044 $%,$POTUSVDUϥΠϒϥϦ 9!@TUFQ@UFDI (JU)VC!HPUPL
  2. $POTUSVDU ίϯετϥΫτ ͱ͸ w $%,ͷಠࣗܕ Ϋϥε ʹΑΔ"84Ϧιʔεఆٛͷந৅Խ ‣ -$POTUSVDUෳ਺ͷϦιʔεΛؚΉҰൠతͳߏ੒ύλʔϯ ‣

    -$POTUSVDUσϑΥϧτ஋΍ศརϝιουΛ࣋ͭ୯Ұͷ"84Ϧιʔε ‣ -$POTUSVDU$MPVE'PSNBUJPOϦιʔεϓϩύςΟͱͰରԠ ˞-ͱ͍͏ಛఆͷγφϦΦʹಛԽͯ͠ந৅Խͨ͠୯ҰϦιʔε΋͋Γ ந ৅ ౓
  3. w $%,ͷಠࣗܕ Ϋϥε ʹΑΔ"84Ϧιʔεఆٛͷந৅Խ ‣ -$POTUSVDUෳ਺ͷϦιʔεΛؚΉҰൠతͳߏ੒ύλʔϯ ‣ -$POTUSVDUσϑΥϧτ஋΍ศརϝιουΛ࣋ͭ୯Ұͷ"84Ϧιʔε ‣ -$POTUSVDU$MPVE'PSNBUJPOϦιʔεϓϩύςΟͱͰରԠ

    ˞-ͱ͍͏ಛఆͷγφϦΦʹಛԽͯ͠ந৅Խͨ͠୯ҰϦιʔε΋͋Γ ந ৅ ౓ w ಛఆͷϢʔεέʔεΛݺͼग़͠Ͱ࣮ݱ FH"-# 'BSHBUF  w ൚༻ੑ͕௿͍ͷͰ࢖͏γνϡΤʔγϣϯ͸ݶΒΕΔ w $%,ຊՈ͔Β͸΄ͱΜͲެ։͞Ε͍ͯͳ͍ $POTUSVDU ίϯετϥΫτ ͱ͸
  4. w $%,ͷಠࣗܕ Ϋϥε ʹΑΔ"84Ϧιʔεఆٛͷந৅Խ ‣ -$POTUSVDUෳ਺ͷϦιʔεΛؚΉҰൠతͳߏ੒ύλʔϯ ‣ -$POTUSVDUσϑΥϧτ஋΍ศརϝιουΛ࣋ͭ୯Ұͷ"84Ϧιʔε ‣ -$POTUSVDU$MPVE'PSNBUJPOϦιʔεϓϩύςΟͱͰରԠ

    ˞-ͱ͍͏ಛఆͷγφϦΦʹಛԽͯ͠ந৅Խͨ͠୯ҰϦιʔε΋͋Γ ந ৅ ౓ w ୯ҰϦιʔε Ћ $MPVE8BUDI-PHTͱ͔*".ϩʔϧͱ͔ ͳͨΊ൚༻ੑ͕ߴ͍ w ྑ͍۩߹ʹந৅Խͯ͘͠Εͯศར ந৅౓ΛԼ͛Δ͜ͱ΋Մ  w ૊ΈࠐΈόϦσʔγϣϯͰσϓϩΠલʹΤϥʔݕ஌ $POTUSVDU ίϯετϥΫτ ͱ͸ ˠΤεέʔϓϋον
  5. w $%,ͷಠࣗܕ Ϋϥε ʹΑΔ"84Ϧιʔεఆٛͷந৅Խ ‣ -$POTUSVDUෳ਺ͷϦιʔεΛؚΉҰൠతͳߏ੒ύλʔϯ ‣ -$POTUSVDUσϑΥϧτ஋΍ศརϝιουΛ࣋ͭ୯Ұͷ"84Ϧιʔε ‣ -$POTUSVDU$MPVE'PSNBUJPOϦιʔεϓϩύςΟͱͰରԠ

    ˞-ͱ͍͏ಛఆͷγφϦΦʹಛԽͯ͠ந৅Խͨ͠୯ҰϦιʔε΋͋Γ ந ৅ ౓ w શͯͷϓϩύςΟΛ໌ࣔతʹࢦఆ͢Δඞཁ͕͋Δ w ϓϩύςΟʹ࢖༻Ͱ͖Δܕͷछྨ͕গͳ͍ -Ͱ͸๛෋ $POTUSVDU ίϯετϥΫτ ͱ͸
  6. w -$POTUSVDU͸ʁ ‣ ൚༻ੑ͕௿ͯ͘࢖͑Δέʔε͕͋·Γͳ͘ɺͦ΋ͦ΋ຊՈ͔Β͋·Γग़͍ͯͳ͍ ‣ ϢʔβଆͰಠࣗͷΧελϜ - $POTUSVDUΛ࡞Δͷ͕ओྲྀ  --$POTUSVDUΛࣗϓϩμΫτͷϢʔεέʔεʹ߹Θͤͯࣗ༝ʹ૊Έ߹ΘͤΔ

     ͦͷͨΊ༷ࣜ͸༷ʑ w -$POTUSVDU͸ʁ ‣ ந৅Խ͕ͳ͍ศརػೳ͕ͳ͍ܕͷදݱ͕ऑ͍ ‣ -$POTUSVDU͕ରԠ͍ͯ͠ͳ͍෦෼ΛΧόʔ͢Δ࢖͍ํ͕ଟ͍ ͳΜͰ-$POTUSVDU ͷ࿩Λ͢Δͷ ʁ $%,ͱ͍ͬͨΒ-$POTUSVDUʂʂ
  7. -$POTUSVDUͷ࢓૊Έ ֓ཁ -$POTUSVDU $POTUSVDU*%3FTPVSDF *".3PMF1PMJDZ -PH(SPVQ FUD ϓϥΠϚϦϦιʔε ηΧϯμϦϦιʔε -$POTUSVDU

    1SPQT QSPQFSUZ" QSPQFSUZ#  QSPQFSUZ$  QSPQFSUZ%  SPMF  MPH(SPVQ  ʜ ʜ ͳ͚Ε͹ࣗಈੜ੒ ͳ͚Ε͹σϑΥϧτ஋ ϝιου ϝιου ϝιου
  8. w 6OPXOFE3FTPVSDFTͷͨΊͷ#FIBWJPSBM*OUFSGBDF *9YYܕ  ‣ ελοΫ֎ͷϦιʔεΛٖࣅతʹελοΫ؅ཧԼʹऔΓࠐΉͨΊͷಡΈࠐΈ༻ܕ  FH *#VDLFUɺ*5PQJDɺ*2VFVF 

    㱠DELJNQPSU ˡ࣮ࡍʹελοΫͷ؅ཧϦιʔεʹҠ͢ *&YBNQMF $%,ελοΫ Ϛωίϯ -BNCEB 4 #VDLFU ελοΫॴ༗ 
 ࣮$POTUSVDU HSBOU1VU ελοΫඇॴ༗ 
 *#VDLFU JOUFSGBDF ٖࣅऔΓࠐΈ GSPN#VDLFU"UUSJCVUFT
  9. w ී௨ͷ$POTUSVDUͱ ΄΅ ಉ͡Α͏ʹϓϩύςΟ͕औΕΔ࢓૊Έ ‣ ౉ͨ͠஋Λ΋ͱʹ$POTUSVDUΛٖࣅߏ੒ͯ͠6OPXOFE3FTPVSDFTܕͱͯ͠ฦ͢ *&YBNQMF  GSPN#VDLFU"SO Ͱόέοτͷ"SOΛ౉͢

    ͦΕ͕CVDLFU"SOʹηοτ   "SOͷ໋໊نଇʹԊͬͯ/BNFΛநग़ɺCVDLFU/BNFϓϩύςΟʹηοτ 㾎ଞʹ΋͜ͷ஋΍4UBDL3FHJPO৘ใ͔Βಋ͖ग़ͤΔϓϩύςΟ͸ηοτ͞ΕΔ  "SO͔Βಋ͚ͳ͍஋͸VOEF fi OFEʹͳΔ͕ɺGSPN"UUSJCVUFT ͩͱશͯ౉ͤΔ  GSPN-PPLVQ ͱ͍͏4%,Ͱ࣮ࡍʹ஋Λऔಘ͢Δಛघͳϝιου΋͋Δ
  10. w ී௨ͷ$POTUSVDUͱ ΄΅ ಉ͡Α͏ʹϝιου͕ݺ΂Δ࢓૊Έ ‣ -$POTUSVDU࣮ମ ΋͘͠͸#BTFΫϥε ͸͜ͷJOUFSGBDFΛJNQMFNFOUT͢Δ *&YBNQMF 

    $POTUSVDU࣮ମ͸6OPXOFE3FTPVSDFTͷ࣋ͭఆٛΛશͯ࣋ͭ ޓ׵ੑ  㾎&YBNQMFJNQMFNFOUT*&YBNQMF 㾎&YBNQMF#BTFJNQMFNFOUT*&YBNQMF  ਖ਼͘͠͸ʮ࣮$POTUSVDU͕6OPXOFE3FTPVSDFTܕͱಉ͜͡ͱ͕Ͱ͖Δʯ
  11. w 6OPXOFE3FTPVSDFTܕͷϝιουఆٛʹ͍ͭͯ ‣ JOUFSGBDFʹ͸࣮૷Λॻ͚ͳ͍ͷͰ࣮ࡍͷॲཧ͸࣮૷ઌͰఆٛ  ಡΈࠐΈ༻ͷΫϥεΛผͰఆٛ͢Δ ʮ&YBNQMF -$POTUSVDU ʯʹͯޙड़ 

    ‣ ͜ͷϦιʔεࣗମʹมߋΛՃ͑ͳ͍ྨͷϝιουͷΈఆٛ  ͦͷ$POTUSVDU͕ॴ༗͢ΔผϦιʔε΁ͷߋ৽ܥ͸Մೳͳέʔε΋  ߋ৽ϝιουΛఆٛ͠ɺ࣮ମͰ͸࣮ࡍͷॲཧɺಡΈࠐΈ༻Ͱ͸μϛʔ࣮૷Λ͢Δ͜ͱ΋ ‣ HSBOUϝιου͸ಡΈࠐΈ༻ϦιʔεͰ΋࢖͑ΔͷͰجຊతʹఆٛ͢Δ͜ͱ͕ଟ͍  ͜ͷϦιʔεʹΞΫηε͢ΔͨΊͷݖݶΛΞΫηεݩͷϦιʔεʹ෇༩͢ΔͨΊ *&YBNQMF
  12. w $POTUSVDUͷ1SPQTͰड͚औΔϦιʔε͸6OPXOFE3FTPVSDFTܕʹ ‣ ελοΫ಺Ͱ࡞੒ͨ͠Ϧιʔε΋֎͔ΒಡΈࠐΜͩϦιʔε΋౉ͤΔ  -$POTUSVDU &YBNQMF ͸͜ͷܕ *&YBNQMF ΛJNQMFNFOUT͢ΔͨΊܕͷޓ׵ੑ͕͋Δ

     ஋΋ϝιου΋࢖͑ΔͷͰɺϓϦϛςΟϒܕ TUSJOHͳͲ ΑΓ΋͜ͷܕʹ͓ͯ͜͠͏ w $POTUSVDU͔Β֎ʹެ։͢ΔϦιʔε΋6OPXOFE3FTPVSDFTܕʹ ‣ ͦͷϦιʔεΛ࡞੒ͨ͠$POTUSVDUͷ֎Ͱ͸ߋ৽͞Εͳ͍Α͏ʹͰ͖Δ  ੹຿ͷ෼཭ɾ҆શੑͷ޲্ *&YBNQMF
  13. &YBNQMF"UUSJCVUFT w GSPN9YY"UUSJCVUFT ϝιουʹ౉͢4USVDUT*OUFSGBDF ‣ ͜ͷ৘ใΛ΋ͱʹ6OPXOFE3FTPVSDFT͕ߏ੒͞ΕΔ  ͜ΕΑΓελοΫ֎ͷϦιʔεͰ΋ٖࣅ$POTUSVDUͱͯ͠ѻ͑ΔΑ͏ʹ *&YBNQMF 6OPXOFE3FTPVSDFT

    GSPN&YBNQMF"UUSJCVUFT TDPQF JE FYBNQMF"UUSJCVUFT *&YBNQMF YY"SO  YY/BNF   &YBNQMF"UUSJCVUFT *&YBNQMFΛJNQMFNFOUTͨ͠ ΫϥεͷΠϯελϯε͕ฦΔ
  14. &YBNQMF#BTF w #BTFΫϥεͷܕఆٛʹ͍ͭͯ ‣ BCTUSBDUΫϥε ‣ 3FTPVSDFΫϥεΛFYUFOET  -$POTUSVDUͱ͸3FTPVSDFΫϥεΛܧঝͨ͠΋ͷ 

    3FTPVSDFΫϥε-$POTUSVDUڞ௨ͷ৘ใΛ࣋ͭ 㾎JT3FTPVSDF JT3FTPVSDF QIZTJDBM/BNF FUD ‣ 6OPXOFE3FTPVSDFTܕ *9YYܕ ΛJNQMFNFOUT  ͜ΕͰಡΈࠐΈ༻ͷܕͷ࣋ͭϓϩύςΟɾϝιουఆٛΛҾ͖ܧ͙
  15. &YBNQMF#BTF w #BTFΫϥεͷDPOTUSVDUPSఆٛʹ͍ͭͯ ‣ Ҿ਺  9YY#BTF1SPQTPS3FTPVSDF1SPQT ‣ ॲཧ αϒΫϥεͷ-$POTUSVDUଆʹճͯ͠΋0,

      ෺ཧ໊ηοτɺڞ௨ϓϩύςΟηοτɺڞ௨όϦσʔγϣϯɺFUDʜ ‣ #BTFଆͰॳظԽॲཧ͕ෆཁͳ৔߹͸DPOTUSVDUPS͕ͳ͍͜ͱ΋  ͦͷ৔߹͸-$POTUSVDUࣗମ αϒΫϥε Ͱఆٛ͢Δ
  16. &YBNQMF -$POTUSVDU w -$POTUSVDUΫϥεͷܕఆٛʹ͍ͭͯ ‣ -$POTUSVDUͱ͸3FTPVSDFΫϥεΛܧঝͨ͠΋ͷ ࠶ܝ  ‣ #BTFΫϥεΛFYUFOET

     #BTFΫϥε͕͢Ͱʹ3FTPVSDFΫϥεΛܧঝ͍ͯ͠Δ ‣ #BTFΫϥε͕ͳ͚Ε͹  3FTPVSDFΫϥεΛFYUFOET  6OPXOFE3FTPVSDFT *9YY ΛJNQMFNFOUT
  17. &YBNQMF -$POTUSVDU w -$POTUSVDUΫϥεͷϓϩύςΟఆٛʹ͍ͭͯ ‣ #BTFΫϥεͰBCTUSBDUͰఆٛͨ͠΋ͷ͸͢΂ͯఆٛ  #BTFΫϥε͕ͳ͚Ε͹6OPXOFE3FTPVSDFT *9YY Ͱఆٛͨ͠΋ͷΛఆٛ

    ‣ ଞʹ΋֎͔ΒΞΫηεͰ͖ΔΑ͏ʹ͍ͨ͠ϓϩύςΟ͸QVCMJDʹ  SFBEPOMZਪ঑ ΋ͷʹΑͬͯ͸ͦ͏Ͱͳ͍΋ͷ΋͋Δ   ॲཧʹඞཁͳQSJWBUFQSPUFDUFEϓϩύςΟͷઃఆ͸ࣗ͝༝ʹ
  18. &YBNQMF -$POTUSVDU w -$POTUSVDUΫϥεͷDPOTUSVDUPSఆٛʹ͍ͭͯ ‣ ෺ཧ໊ηοτ #BTFΫϥεͰ΍ͬͯ΋0,   ະࢦఆͷ৔߹͸$MPVE'PSNBUJPO͕ࣗಈੜ੒

    ‣ ະࢦఆͷ৔߹Ͱ΋$%,ଆͰੜ੒͢Δ͜ͱ΋  ෺ཧ໊ͷ໋໊ϧʔϧʹ߹Θͤͯ-B[ZTUSJOH /BNFTVOJRVF3FTPVSDF/BNF  ΞΧ΢ϯτϦʔδϣϯލ͗༻ʹ1IZTJDBM/BNF(&/&3"5&@*'@/&&%&%
  19. &YBNQMF -$POTUSVDU w -$POTUSVDUΫϥεͷϝιουఆٛʹ͍ͭͯ ‣ ಡΈࠐΈ༻Ϧιʔε 6OPXOFE3FTPVSDFT ͷͨΊͷTUBUJDGSPNϝιου 6OPXOFE3FTPVSDFT GSPN&YBNQMF"UUSJCVUFT

    &YBNQMF"UUSJCVUFT GSPN&YBNQMF"SO GSPN-PPLVQ GSPN&YBNQMF*% GSPN&YBNQMF/BNF GSPN&YBNQMF9Z[ "84ΞΧ΢ϯτ &YBNQMF Ϧιʔε औಘ ౉͢ ౉͢ "3/ *% /BNF 9Z[ ࣮ࡍͷϦιʔε৘ใ ٖࣅ$POTUSVDUੜ੒ ಡΈࠐΈ༻ ˞͜ͷߏ଄ʹԊ͍ͬͯͳ͍έʔε΋͋Δ FH4FDVSJUZ(SPVQ
  20. &YBNQMF -$POTUSVDU w -$POTUSVDUΫϥεͷϝιουఆٛʹ͍ͭͯ ‣ GSPN9YY"UUSJCVUFT͸ϝιου಺ͰಡΈࠐΈ༻ΫϥεఆٛΠϯελϯεฦ٫  #BTFΫϥεΛFYUFOET ΋͘͠͸*9YYܕΛJNQMFNFOUT 3FTPVSDFΫϥεΛFYUFOET

     㾎#BTFΫϥε͕͋Δͱ#BTFΫϥεͰఆٛͨ͠ϝιουͳͲΛ࠶ར༻Ͱ͖Δ 㾎͜ΕʹΑΓಡΈࠐΈ༻ϦιʔεͰ΋HSBOUϝιουͳͲ͕ݺ΂Δ  ϝιου͸ͦΕΛ*9YYܕͷٖࣅ$POTUSVDU ಡΈࠐΈ༻ ͱͯ͠ฦ͢
  21. $%,͕֤ϓϩάϥϛϯάݴޠͰಈ͘࢓૊Έ $%,Ϣʔβ ߏ଄ఆٛ ಺෦ॲཧ ֤$POTUSVDUΫϥε 5ZQF4DSJQU ֤$POTUSVDUΫϥε ߏ଄ఆٛ 1ZUIPO༻ +BWB༻

    (P༻ $༻ 5ZQF4DSJQU༻ +BWB4DSJQU༻ ޷͖ͳݴޠ Ͱ࢖༻ ߏ଄ఆ͔ٛΒ಺෦ॲཧݺͼग़͠ ߏ଄ఆ͚֤ٛͩݴޠʹࣗಈม׵ $%,ίϯτϦϏϡʔτͷൣғ HJUIVCDPNBXTBXTDEL ଞݴޠͰ࣮૷ͷ৔߹΋$%,࣮ߦʹ /PEFKTϥϯλΠϜ͕ඞཁ ˞֤ݴޠʹม׵͢ΔͨΊ 5ZQF4DSJQUݻ༗ͷܕදݱ͸/( ˞֤ݴޠʹ͸ม׵͠ͳ͍ͨΊ 5ZQF4DSJQUݻ༗ͷ࣮૷΋0, KTJJίϯύΠϥ "84੡ଟݴޠม׵πʔϧ ʰKTJJʱ HJUIVCDPNBXTKTJJ KTJJϥϯλΠϜ /PEFKTϓϩηε $%,ެ։࣌ 044ଆ $%,࣮ߦ࣌ Ϣʔβଆ τϥϯεύΠϧ