Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Step FunctionsとInfrastructure Composerで挑むローコード ...
Search
SimSta
November 22, 2024
1
220
Step FunctionsとInfrastructure Composerで挑むローコード × Platform Engineering @ JAWS-UG 青森
SimSta
November 22, 2024
Tweet
Share
More Decks by SimSta
See All by SimSta
KAG社内のPlatform Engineeringをちょっとだけ紹介します @ Sapporo Engineer Base
shimagaji
0
27
日本からre:Inventを支えた活動報告&ミニre:Cap @ JAWS-UG Sapporo
shimagaji
0
72
スクラムチームのDevOpsを支えるPlatform Engineering @ 実践DevOps! 〜KAGとkubellの取り組み〜
shimagaji
0
80
日本からre:Inventを支える技術 @ re:Invent2024 北海道組 事前勉強会
shimagaji
0
97
KDDI CCoEからKAG Platform Engineeringへ受け継がれたもの、変わったもの @ CCoE実践者コミュニティ北海道
shimagaji
0
92
インナーソースはじめました @ NES Tech Brewery
shimagaji
4
190
Step FunctionsからはじめるBedrock @ JAWS-UG AI/ML
shimagaji
2
350
シマリスを知る!2024 @ Cloud in the Camp Horippa
shimagaji
0
81
(ほぼ)ノーコードでもBedrockしたいっ!! @JAWS-UG Sapporo
shimagaji
4
260
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
11
930
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
620
How to train your dragon (web standard)
notwaldorf
90
5.8k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
128
19k
Typedesign – Prime Four
hannesfritz
40
2.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.4k
The Cost Of JavaScript in 2023
addyosmani
47
7.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.5k
Transcript
4UFQ'VODUJPOTͱ *OGSBTUSVDUVSF$PNQPTFSͰΉ ϩʔίʔυº1MBUGPSN&OHJOFFSJOH 4JN4UB !TIJNBHBKJ +"846(੨ʢ߂લʣ KBXTVHBPNPSJKBXTVHUPIPLV
ˡϗϫΠτγϚϦεͷΞϧλ
ࣗݾհ ɹ࡛ۄɹʢʙେֶͷ్த·Ͱʣ ˠࡳຈɹʢʙେֶɾʣ ˠਆಸʢʙେֶӃʙब৬ͯ͘͠Β͍ʣ ˠࡳຈɹʢʙͪΐͬͱɺݱࡏʣ ͖ͳ"84αʔϏεɿ4UFQ'VODUJPOT 4JN4UBʢΦϯϥΠϯͷ͕ͨ͢ʣ ,%%*ΞδϟΠϧ։ൃηϯλʔגࣜձࣾ ϓϥοτϑΥʔϜΤϯδχΞϦϯά෦ !TIJNBHBKJ
5XJUUFS 4FSWFSMFTT ͝ΧάΧά
,"(ͷւಓ౦ΦϑΟε
,"(ͷւಓ౦ΦϑΟε ʁ ɾͦͷҬʹॅΜͰ͍Δࣾһ͕͍Δ͜ͱ ɾݱ࣌Ͱಓݝ͝ͱʹϲॴ ɾͭ·Γʜʁ
ϗϫΠτγϚϦεͱ Β͍ͯ͠·͢🐿 5XJUUFSΞΧϯτ͋ΔΑ !BMUB@XIJUFDIJQ େνϧλϦε͍ΔΑ
աڈͷొஃࢿྉΞοϓͯ͠·͢ʢࠓͷࢿྉʂʣ IUUQTTQFBLFSEFDLDPNTIJNBHBKJ
ݸਓϒϩάΛӡ༻͍ͯ͠·͢͠·͕͡ ͠Ήͦ͘ "84ΞοϓσʔτΛ ຖिߋ৽ʂ ͦͷଞ ΫϥυΨδΣοτ γϚϦεͷͳͲ
͠Ήͦ͘3BEJP "84ͷΞοϓσʔτΛαΫοͱΩϟονΞοϓ !͠Ήͦ͘ ຖिਫ༵ʙ ৴தʂ
͜ͷ΄͔ɺSF*OWFOUظؒதʙʢ+45ʣຖ৴༧ఆʂ
উखʹର߅͍ͯ͠Δ উखʹର߅͍ͨ͠
"HFOEB • 1MBUGPSN&OHJOFFSJOHͱʁ • ηϧϑαʔϏεπʔϧͷల։ • "84ͰͷϩʔίʔυΞϓϩʔν • LBHUPPMTͷൃ •
ϩʔίʔυº1MBUGPSN&OHJOFFSJOHͷ՝ • ·ͱΊ
1MBUGPSN&OHJOFFSJOHͷ֓ཁ
1MBUGPSN&OHJOFFSJOHʢ1'&ʣͱʁ ϓϥοτϑΥʔϜɾΤϯδχΞϦϯάͱԿ͔ʁ(BSUOFS IUUQTXXXHBSUOFSDPKQKBBSUJDMFTXIBUJTQMBUGPSNFOHJOFFSJOH ҎԼΛຬͨ͢ϓϥοτϑΥʔϜΛ ߏங͢ΔΞϓϩʔνΛࢦ͢ ඪɿ ɾ։ൃऀͷੜ࢈ੑ্ ɾϏδωεՁͷग़ తɿ
ɾ։ൃऀͷೝෛՙΛܰݮ ɾ։ൃऀͷΤΫεϖϦΤϯε্ खஈɿ ɾηϧϑαʔϏεػೳͷॆ࣮ ɾΠϯϑϥӡ༻ͷࣗಈԽ
%FW0QTͱ1MBUGPSN&OHJOFFSJOH ϓϥοτϑΥʔϜΤϯδχΞϦϯάͱ IUUQTMFBSONJDSPTPGUDPNKBKQQMBUGPSNFOHJOFFSJOHXIBUJTQMBUGPSNFOHJOFFSJOH 4%-$ ʢιϑτΣΞ։ൃϥΠϑαΠΫϧʣ ιϑτΣΞ։ൃͷϑΣʔζΛࣔ͢ࢦ %FW0QT ܧଓతͳσϦόϦʔΛ࣮ݱ͢ΔͨΊͷ ։ൃख๏ͱӡ༻ͷࣗಈԽɾޮԽ 1MBUGPSN&OHJOFFSJOH
։ൃηΩϡϦςΟɾΨόφϯεΛ ڥඋ*B$ɺࣗಈԽͳͲͰࢧԉ "HJMF4%-$4LZSPDLFUJOH:PVS1SPKFDUXJUI"HJMF1SJODJQMFT IUUQTNMTEFWDPNCMPHBHJMFTEMD
ւಓཱྀߦʹྫ͑Δͱʜ 4%-$ త·Ͱͷਤ %FW0QT ަ௨खஈʢΓʣ 1MBUGPSN&OHJOFFSJOH ަ௨Πϯϑϥɺλʔϛφϧ ʢࠃಓɺߴɺۭ࿏ɺߤ࿏ʣ ࡳຈˠവؗߦ͘ͷʹ ͔ͭͯమಓͰ͔͔͕࣌ؒͬͨ
ࣨའ͔Βߤ࿏ΛඋͰ͖Ε େ෯ʹ͕࣌ؒॖͰ͖Δ͔͠Εͳ͍ খḺˠߦ͘ͱ͢Δͱ Γʢెาंమಓഅʣ͕%FW0QT ಓΓͷඋ͕1MBUGPSN&OHJOFFSJOH $PQZSJHIU4PVHPV4IPVLFO$0 -UE"MM3JHIUT3FTFSWFE
ηϧϑαʔϏεπʔϧͷల։
ηϧϑαʔϏεܕͷϓϥοτϑΥʔϜ 1MBUGPSN&OHJOFFSJOHPO4FSWFSMFTT IUUQTTQFBLFSEFDLDPN@LFOTIQMBUGPSNFOHJOFFSJOHPOTFSWFSMFTT
ηϧϑαʔϏεܕͷϓϥοτϑΥʔϜ 1MBUGPSN&OHJOFFSJOHPO4FSWFSMFTT IUUQTTQFBLFSEFDLDPN@LFOTIQMBUGPSNFOHJOFFSJOHPOTFSWFSMFTT • "84ͷ߹ɺҎԼͷ͕ͭީิʹͳΓಘΔ • "NB[PO$PEF$BUBMZTU • "844FSWJDF$BUBMPH •
#BDLTUBHF • (JU)VCͳͲͷίʔυϦϙδτϦͰఏڙՄೳ ˠ,"(Ͱࣾͷ(JU)VC&OUFSQSJTF0SHBOJ[BUJPOΛ׆༻
Ͱπʔϧͱ͔ΞϓϦέʔγϣϯͬͯ ࡞Δͷେมͦ͏ʜʁ
ηϧϑαʔϏεπʔϧͷݕ౼ͱ՝ • ࣄۀձࣾͱҟͳΓҊ݅͝ͱʹγεςϜ͕ҟͳΔ ˠڞ௨ͷίϯϙʔωϯτఏڙ͕͍͠ ˠ֤νʔϜͷΞʔΩςΫνϟΛेʹௐࠪ͢Δඞཁ͋Γ • πʔϧཧνʔϜશһ͕ϝϯςφϯεͰ͖Δͷ͕ཧ
ˠ։ൃऀνʔϜͱҟͳΓٕज़ελοΫ͕Ұக͠ʹ͍͘ ɹΠϯϑϥɺγεɺύʔτφʔΛؚΉνʔϜͳͲ • ϝϯςφϯεͷೝෛՙΛͰ͖Δ͚ͩԼ͍͛ͨ ˠίʔυͷϝϯςφϯεͰ͖ΔݶΓͨ͘͠ͳ͍ ˠͦͦίʔυΛ͋·Γॻ͖ͨ͘ͳ͍ɺࢹ֮తײతʹ࡞Γ͍ͨ ɹʢ͕ɺίʔυͱͯ͠อଘ͍ͨ͠ɾɾɾʣ
ίʔυ͕ॻ͚Ε ͍ΖΜͳ͜ͱ͕Ͱ͖Δͷʹʜɻ
ʢ͋·ΓʣίʔυΛॻ͔ͣʹ πʔϧΛ։ൃ͍ͨͬ͠ʂʂ
"84Ͱͷ ϩʔίʔυΞϓϩʔν
4UFQ'VODUJPOT º *OGSBTUSVDUVSF$PNQPTFS
4UFQ'VODUJPOTͱʁ ϩʔίʔυͰ"84֎෦"1*ͱ࿈ܞͯ͠ΞϓϦέʔγϣϯͷ ϫʔΫϑϩʔΛߏஙͰ͖ΔΦʔέετϨʔγϣϯαʔϏε
4UFQ'VODUJPOTͷັྗ ͪ͜ΒͰࢥ͏ଘޠ͖ͬͯ·ͨ͠ IUUQTTQFBLFSEFDLDPNTIJNBHBKJTFSWFSMFTTGJSTUTUFQGVODUJPOTGJSTU
ʲ5PEBZʳ4UFQ'VODUJPOT͕7BSJBCMFTͱ+40/BUBΛαϙʔτ 7BSJBCMFTɿޙଓͷॲཧͰར༻͍ͨ͠มΛ֨ೲͰ͖Δʂ +40/BUBɿ-BNCEBͳ͠Ͱෳࡶͳσʔλૢ࡞Λ࣮ݱʂ 4JNQMJGZJOHEFWFMPQFSFYQFSJFODFXJUIWBSJBCMFTBOE+40/BUBJO"844UFQ'VODUJPOT IUUQTBXTBNB[PODPNCMPHTDPNQVUFTJNQMJGZJOHEFWFMPQFSFYQFSJFODFXJUIWBSJBCMFTBOEKTPOBUBJOBXTTUFQGVODUJPOT “Example": "{% jsonata expression %}"
-BNCEB͕ඞཁͩͬͨॲཧΛ+40/BUB͚ͩͰॻ͚Δʂ εςοϓͷೖग़ྗॲཧϑϩʔ͕γϯϓϧʹʂ ʢ"4-ͷه๏͕γϯϓϧʹͳͬͨͱݴ͍ͬͯͳ͍ʣ ೖྗ͞ΕͨϖΠϩʔυΛ"TTJHO͓ͯ͘͜͠ͱͰ ͲͷεςοϓͰ؆୯ʹݺͼग़ͤΔʂ
*OGSBTUSVDUVSF$PNQPTFSͱʁ $MPVE'PSNBUJPOςϯϓϨʔτΛࢹ֮తʹ࡞ɾදࣔͰ͖ΔαʔϏε ʢݩʑ4".ಛԽͰɺ໊લ"QQMJDBUJPO$PNQPTFSͩͬͨʣ "84ίϯιʔϧɺ·ͨ*%&ͷ"845PPMLJU͔Βར༻Մೳ 4".Ϧιʔεʢ֦ுίϯϙʔωϯτʣͱ$'OϦιʔεͰ͍উख͕ҟͳΔ
4UFQ'VODUJPOTº*OGSBTUSVDUVSF$PNQPTFS *OGSBTUSVDUVSF$PNQPTFS͔Β 4UFQ'VODUJPOTͷ 8PSLGMPX4UVEJPΛ։͚Δʂ
LBHUPPMTͷൃ
ηϧϑαʔϏεπʔϧ܈ʮLBHUPPMTʯ w1MBUGPSN&OHJOFFSJOHͱͯ͠ͷࢧԉπʔϧΛఏڙ͍ͨ͠ͱ͍͏ϞνϕʔγϣϯͰ։࢝ w·ͣݩʑͷ1'&νʔϜʹΑΔۀʢΠϯϑϥ$$P&دΓʣʹؔ࿈͢ΔͷΛఆ wηΩϡϦςΟɺΨόφϯεܥ wίετͷݮ w(JU)VC&OUFSQSJTFͷར༻ิॿ LBHUPPMT w ϓϥοτϑΥʔϜνʔϜ͕ఏڙ͢ΔࢧԉπʔϧʢϦϙδτϦʣ܈ w
*B$ɺίʔυεχϖοτͳͲศརͳπʔϧɺηΩϡϦςΟ্࣮ࢪͯ͠ཉ͍͠ͷΛల։༧ఆ
LBHUPPMTͷհ
LBHUPPMTͷհ • (VBSE%VUZ4VNNBSJ[FS • (VBSE%VUZͷݕग़݁ՌΛ#FESPDLͰ͔Γ͔ͯ͘͢͠Β௨ • 4FDVSJUZ)VCʹू͞Εͨ(VBSE%VUZݕग़݁ՌʹରԠ • $PEF#VJME3VOOFS •
()&ͷ4FMGIPTUFE3VOOFSΛϚωʔδυͰల։ • 71$ͷ࡞͔Β(JU)VC"QQTܦ༝Ͱͷଓ·ͰΨΠυ͖Ͱ࡞ • /"54DIFEVMFS • /"5(BUFXBZΛ༵ͱ࣌ؒͰ࡞আ͠ɺίετΛݮ • TBNQMFTFDVSJUZIVCOPUJGJDBUJPOT • 4FDVSJUZ)VC͔Βͷ௨Λ4MBDLૹ৴͢ΔͨΊͷ5FSSBGPSNίʔυ
(VBSE%VUZ4VNNBSJ[FS (VBSE%VUZ͔Βͷ௨Λ ͦͷ··4/4Ͱૹ৴͢Δͱ ͚ͬ͜͏ೝෛՙߴ͍ͷͰ શ෦#FESPDLʹ͛ͯ ͍͍ײ͡ʹͯ͠௨͢Δπʔϧ
௨ઌʹ4MBDLʢ&ϝʔϧՄʣΛ͏͜ͱͰ ʢ΄΅ʣϊʔίʔυΛ࣮ݱ AWS Cloud GuardDuty Step Functions Bedrock SNS Invoke
Execute EventBridge User Threats E-Mail Publish Slack Security Hub ᶃ(VBSE%VUZͷΠϕϯτΛर͏ ᶄ4FDVSJUZ)VCʹू͞ΕͨΠϕϯτΛर͏ ͷͲͪΒ͔Λબͯ͠σϓϩΠՄೳ (VBSE%VUZ4VNNBSJ[FS
(VBSE%VUZ4VNNBSJ[FSͷߏ *OGSBTUSVDUVSF$PNQPTFSͱ 4UFQ'VODUJPOT8PSLGMPX4UVEJPͰՄࢹԽ
$PEF#VJME3VOOFS $PEF#VJMEΛͬͨ4FMGIPTUFE3VOOFSͷηοτΞοϓΛࢧԉ AWS Cloud AWS Cloud Network Load Balancer
NAT gateway GitHub Enterprise NAT gateway CodeBuild ɾ$PEF$POOFDUJPOTϗετ ɾ$PEF$POOFDUJPOTଓ ɾ8FCIPPL ͜ͷϦιʔεҰࣜΛॱ൪ʹ࡞
$PEF#VJME3VOOFSͷߏ $-*·ͨίϯιʔϧͰηοτΞοϓ͕ඞཁͳϦιʔε͋Γ $PEF$POOFDUJPOTϗετͱଓʢ(JU)VC"QQTઃఆʣɺ8FCIPPL
/"54DIFEVMFS /"5(BUFXBZఀࢭͰ͖ͳ͍ͷͰɺεέδϡʔϧͰ࡞আ͢Δઓ๏ͰίετΛઅ AWS Cloud Step Functions NAT Gateway SNS Create
Stack Execute Scheduler User Error Notification Publish Step Functions Execute Scheduler Publish Delete Stack
/"54DIFEVMFSͷߏ
ϩʔίʔυº1MBUGPSN&OHJOFFSJOH ͷ՝
ϩʔίʔυº1MBUGPSN&OHJOFFSJOHͷ՝ • ,"(ͷ৫ܗଶʹجͮ͘ఏڙൣғͷݶք • ࣄۀձࣾͱҟͳΓɺ֤Ҋ֤݅νʔϜͰγεςϜ͕ҟͳΔ • "84͚ͩͰͳ͘(PPHMF$MPVE"[VSFͷҊ݅ͦͦ͜͜ ˠ5FSSBGPSNͳͲͷशख़ͱϝϯςφϯεͷඞཁੑ͕ٻΊΒΕΔ •
ϓϥοτϑΥʔϜνʔϜͷݶք • ΧόʔͰ͖Δٕज़ྖҬ͕ݶΒΕͯ͠·͏ ˠʮࢧԉͰ͖ΔͷʯͱʮٻΊΒΕ͍ͯΔͷʯͷΞϯϚον • πʔϧ૿ՃʹΑΔϝϯςφϯεվળ͕Ͱ͖Δ࿑ྗͷෆ • ϩʔίʔυΞϓϩʔν͕ద༻Ͱ͖ͳ͍έʔεׂΓΔ֮ޛ
՝ʹର͢Δ ͭͷղܾࡦ
None
Πϯφʔιʔεͱʁ ΠϯφʔιʔεͰ࢝ΊΔ৫Φʔϓϯιʔε։ൃೖ IUUQTTQFBLFSEFDLDPNZVIBUUPSJOOFSTPVSDFMFBSOJOHQBUIKBQBOFTF ҰݴͰද͢ͱʮࣾΦʔϓϯιʔεʯ
ΠϯφʔιʔεΛؚΊͨ,"(ͷ1MBUGPSN&OHJOFFSJOH ͲͪΒΠϯφʔιʔεʢࣾΦʔϓϯιʔεʣͱͯ͠ѻ͏ ཧӡ༻ͷओମ͕ϓϥοτϑΥʔϜνʔϜ͔༗ࢤ͔ͷҧ͍ LBHUPPMT w ϓϥοτϑΥʔϜνʔϜ͕ఏڙ͢ΔࢧԉπʔϧʢϦϙδτϦʣ܈ w *B$ɺίʔυεχϖοτͳͲศརͳπʔϧɺηΩϡϦςΟ্࣮ࢪͯ͠ཉ͍͠ͷΛల։༧ఆ w $0/53*#65*/(NEΛઃ͚ɺ։ൃऀ͔ΒͷίϯτϦϏϡʔγϣϯΛΦʔϓϯʹड͚ೖΕ
LBHJTN w ֤νʔϜϧʔϧͳͲɺࣾͷ͋ΒΏΔॴ͔Βఏڙӡ༻͞ΕΔϓϩμΫτ w ϦϙδτϦͷ࡞ϧʔϧʹଇΕ୭Ͱఏڙ0, w ֤ϦϙδτϦͷϧʔϧʹै͑୭ͰίϯτϦϏϡʔτ0, ಠஅͰউखʹ໊͚·ͨ͠
ৄͪ͘͜͠Βʂ IUUQTTQFBLFSEFDLDPNTIJNBHBKJLBHLVCFMMEFWPQT
ֶͿ͜ͱେࣄʂ νʔϜτϙϩδʔ Πϯφʔιʔεύλʔϯ ΠϯφʔιʔεҰछͷ ࣾίϛϡχςΟͳͷͰʜ ͦͷଞ༷ʑͳ ઌਓͷ࣮ફྫ͋Γ
·ͱΊ
·ͱΊ • 1MBUGPSN&OHJOFFSJOHͷऔΓΈʹ͓͚Δϝϯςφϯε ೝෛՙͷʹରԠ͢ΔͨΊɺ"84ͷϩʔίʔυαʔϏεΛ׆༻ ˠ4UFQ'VODUJPOTͱ*OGSBTUSVDUVSF$PNQPTFS • ʮLBHUPPMTʯͱͯ͠ηϧϑαʔϏεπʔϧΛల։ •
ϚϧνΫϥυϦιʔεͷͳͲʹରॲ͘͢ ʮLBHJTNʯͱͯ͠ΠϯφʔιʔεͷऔΓΈਪਐ • ઌਓͷφϨοδͱίϛϡχςΟ͔Βֶͼɺ࣮ફ͢Δʂ
5IBOLZPVʂ