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
インナーソースはじめました @ NES Tech Brewery
Search
SimSta
September 25, 2024
4
230
インナーソースはじめました @ NES Tech Brewery
SimSta
September 25, 2024
Tweet
Share
More Decks by SimSta
See All by SimSta
AWSの2025年最新トレンドをフル活用してフルサーバーレスな司書エージェントを作ってみた @ JAWS-UG Sapporo
shimagaji
3
280
AWS Media Servicesを使ってAmazon IVSとYouTubeへの同時配信を試してみた @ JAWS-UG千葉支部 x Media-JAWS
shimagaji
1
110
AWSアップデートまとめ #しむそく をFun Done Learnで振り返る @ JAWS-UG Tokyo
shimagaji
2
280
Amazon Q DeveloperでMCP Serverを使ってKnowledge Baseを呼び出してみた @ JAWS-UG 彩の国埼玉支部#1
shimagaji
1
400
KAG社内のPlatform Engineeringをちょっとだけ紹介します @ Sapporo Engineer Base
shimagaji
0
44
日本からre:Inventを支えた活動報告&ミニre:Cap @ JAWS-UG Sapporo
shimagaji
0
120
Step FunctionsとInfrastructure Composerで挑むローコード × Platform Engineering @ JAWS-UG 青森
shimagaji
1
320
スクラムチームのDevOpsを支えるPlatform Engineering @ 実践DevOps! 〜KAGとkubellの取り組み〜
shimagaji
0
100
日本からre:Inventを支える技術 @ re:Invent2024 北海道組 事前勉強会
shimagaji
0
120
Featured
See All Featured
RailsConf 2023
tenderlove
30
1.3k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
658
61k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
The Cost Of JavaScript in 2023
addyosmani
55
9.1k
Thoughts on Productivity
jonyablonski
71
4.9k
Agile that works and the tools we love
rasmusluckow
331
21k
Transcript
Πϯφʔιʔε ͡Ί·ͨ͠ 4JN4UB !TIJNBHBKJ /&44BQQPSP5FDI#SFXFSZ /FT5FDI#SFXFSZ
ˡϗϫΠτγϚϦεͷΞϧλ
ࣗݾհ ɹ࡛ۄɹʢʙେֶͷ్த·Ͱʣ ˠࡳຈɹʢʙେֶɾʣ ˠਆಸʢʙେֶӃʙब৬ͯ͘͠Β͍ʣ ˠࡳຈɹʢʙͪΐͬͱɺݱࡏʣ ͖ͳ"84αʔϏεɿ4UFQ'VODUJPOT 4JN4UBʢΦϯϥΠϯͷ͕ͨ͢ʣ ,%%*ΞδϟΠϧ։ൃηϯλʔגࣜձࣾ ϓϥοτϑΥʔϜΤϯδχΞϦϯά෦ !TIJNBHBKJ
5XJUUFS 4FSWFSMFTT ΧάΧά
ϗϫΠτγϚϦεͱ Β͍ͯ͠·͢🐿 ˢେνϧλϦε 5XJUUFSΞΧϯτ͋ΔΑ !BMUB@XIJUFDIJQ ࠷ۙॳΊͯ ಈපӃʹߦ͖·ͨ͠
աڈͷొஃࢿྉΞοϓͯ͠·͢ʢࠓͷࢿྉʂʣ IUUQTTQFBLFSEFDLDPNTIJNBHBKJ
ݸਓϒϩάΛӡ༻͍ͯ͠·͢͠·͕͡ ͠Ήͦ͘ "84ΞοϓσʔτΛ ຖिߋ৽ʂ ͦͷଞ ΫϥυΨδΣοτ γϚϦεͷͳͲ
"HFOEB • ϓϥοτϑΥʔϜΤϯδχΞͷ͓ࣄ • Πϯφʔιʔεͱͷग़ձ͍ • ΠϯφʔιʔεͷޮՌͱ͠͞ • ·ͱΊ
ϓϥοτϑΥʔϜΤϯδχΞͷ ͓ࣄ
ϓϥοτϑΥʔϜΤϯδχΞϦϯάͬͯʁ ϓϥοτϑΥʔϜɾΤϯδχΞϦϯάͱԿ͔ʁ(BSUOFS IUUQTXXXHBSUOFSDPKQKBBSUJDMFTXIBUJTQMBUGPSNFOHJOFFSJOH ҎԼΛຬͨ͢ϓϥοτϑΥʔϜΛ ߏங͢ΔΞϓϩʔνΛࢦ͢ ඪɿ ɾ։ൃऀͷੜ࢈ੑ্ ɾϏδωεՁͷग़ తɿ
ɾ։ൃऀͷೝෛՙΛܰݮ ɾ։ൃऀͷΤΫεϖϦΤϯε্ खஈɿ ɾηϧϑαʔϏεػೳͷॆ࣮ ɾΠϯϑϥӡ༻ͷࣗಈԽ
,"(ϓϥοτϑΥʔϜνʔϜͷ͓ࣄ • ࣾڞ௨(JU)VC&OUFSQSJTF4FSWFSʢ()&4ʣͷཧ • ()&4ࣗࣾΫϥυڥͷίετ࠷దԽ • ࣗࣾΫϥυڥ*E1ͷӡ༻ɺཧ • ࣗࣾΫϥυڥͱ֤Ҋ݅ڥͷηΩϡϦςΟվળ
ˠ4FDVSJUZ)VC(VBSE%VUZͷಋೖɺཧͳͲ • ֤εΫϥϜνʔϜͷώΞϦϯάɺࢧԉϝχϡʔ࡞ • ͦͷଞɺͪΐͬͱ֎Ͱͤͳ͍͜ͱͳͲ
,"(ϓϥοτϑΥʔϜνʔϜͷ͓ࣄ • ࣾڞ௨(JU)VC&OUFSQSJTF4FSWFSʢ()&4ʣͷཧ • ()&4ࣗࣾΫϥυڥͷίετ࠷దԽ • ࣗࣾΫϥυڥ*E1ͷӡ༻ɺཧ • ࣗࣾΫϥυڥͱ֤Ҋ݅ڥͷηΩϡϦςΟվળ
ˠ4FDVSJUZ)VC(VBSE%VUZͷಋೖɺཧͳͲ • ֤εΫϥϜνʔϜͷώΞϦϯάɺࢧԉϝχϡʔ࡞ • ͦͷଞɺͪΐͬͱ֎Ͱͤͳ͍͜ͱͳͲ ˠ͜ΕϓϥοτϑΥʔϜΤϯδχΞϦϯάͬΆ͍ ˠ͜ΕϓϥοτϑΥʔϜΤϯδχΞϦϯάͬΆ͍͚Ͳൿີ ˠ͜͜ΑΓ্Πϯϑϥ$$P&ཁૉڧΊ
ηϧϑαʔϏεܕͷϓϥοτϑΥʔϜ 1MBUGPSN&OHJOFFSJOHPO4FSWFSMFTT IUUQTTQFBLFSEFDLDPN@LFOTIQMBUGPSNFOHJOFFSJOHPOTFSWFSMFTT • ҎԼͭʮ1MBUGPSN&OHJOFFSJOHPO4FSWFSMFTTʯ͔Βൈਮ • "NB[PO$PEF$BUBMZTU • "844FSWJDF$BUBMPH •
#BDLTUBHF • ॳظ(JU)VCͳͲͷίʔυϦϙδτϦͰՄೳͰʁͱߟ͑Δ ˠࣾͷ(JU)VC&OUFSQSJTF0SHBOJ[BUJPOΛબఆ
(JU)VC&OUFSQSJTFͷඋʹΑΔ൫ݻΊ ϙʔλϧϦϙδτϦͷ࡞ ϦϙδτϦͷ࡞ϧʔϧ੍ఆ 5FBNTʹΑΔݖݶཧ
(JU)VC&OUFSQSJTFͷඋʹΑΔ൫ݻΊ • ೝෛՙͷݮͱՄࢹੑ্ʹΑΔෛ࠴Խͷ༧ • ϙʔλϧϦϙδτϦͷ࡞ • ϦϙδτϦ࡞ϧʔϧͷ੍ఆ • ηΩϡϦςΟ໘ͷݟ͠ •
5FBNTʹΑΔϦϙδτϦ୯ҐͷΞΫηεݖݶઃఆ • 0SHBOJ[BUJPOʹ͓͚Δ#BTF1FSNJTTJPOTͷແޮԽ • ϦϙδτϦͷ7JTJCJMJUZΛݪଇ1SJWBUFมߋ • ࢧԉπʔϧ܈ͷѪশߟҊ
ࢧԉπʔϧ܈ʮLBHUPPMTʯͷߟҊ wҎԼͷΑ͏ͳͷΛࠓޙ࡞ɾఏڙ༧ఆ w (JU)VC"DUJPOT༻ͷ$PEF#VJME3VOOFSΛల։͢Δπʔϧ w /"5(BUFXBZΛࢦఆͨ࣌ؒ͠ͷΈϓϩϏδϣχϯά͢Δπʔϧ w ։ൃڥ͚ʹ/"5ΠϯελϯεΛ࡞͢ΔςϯϓϨʔτ wίϯϙʔωϯτίʔυεχϖοτͳͲɺ։ൃΛαϙʔτ͢Δͷ࡞͍ͨ͠ LBHUPPMT
w ϓϥοτϑΥʔϜνʔϜ͕ఏڙ͢ΔࢧԉπʔϧʢϦϙδτϦʣ܈ w *B$ɺίʔυεχϖοτͳͲศརͳπʔϧɺηΩϡϦςΟ্࣮ࢪͯ͠ཉ͍͠ͷΛల։༧ఆ
LBHUPPMTୈɿ(VBSE%VUZ4VNNBSJ[FS (VBSE%VUZ͔Βͷ௨Λ ͦͷ··4/4Ͱૹ৴͢Δͱ ͚ͬ͜͏ೝෛՙߴ͍ͷͰ શ෦#FESPDLʹ͛ͯ ͍͍ײ͡ʹͯ͠௨͢Δπʔϧ
(VBSE%VUZ4VNNBSJ[FSͷߏ ௨ઌʹ4MBDLʢ&ϝʔϧՄʣΛ͏͜ͱͰ ʢ΄΅ʣϊʔίʔυΛ࣮ݱ AWS Cloud GuardDuty Step Functions Bedrock SNS
Invoke Execute EventBridge User Threats E-Mail Publish Slack Security Hub ᶃ(VBSE%VUZͷΠϕϯτΛर͏ ᶄ4FDVSJUZ)VCʹू͞ΕͨΠϕϯτΛर͏ ͷͲͪΒ͔Λબͯ͠σϓϩΠՄೳ
LBHUPPMTʢϓϥοτϑΥʔϜΤϯδχΞϦϯάʣͷ՝ • ,"(ͷ৫ܗଶ • ࣄۀձࣾͱҟͳΓɺ֤Ҋ֤݅νʔϜͰγεςϜ͕ҟͳΔ • "84͚ͩͰͳ͘(PPHMF$MPVE"[VSFͷҊ݅ͦͦ͜͜ • ϓϥοτϑΥʔϜνʔϜͷݶք •
ΧόʔͰ͖Δٕज़ྖҬ͕ݶΒΕͯ͠·͏ ˠʮࢧԉͰ͖ΔͷʯͱʮٻΊΒΕ͍ͯΔͷʯͷΞϯϚον • πʔϧ૿ՃʹΑΔϝϯςφϯεվળ͕Ͱ͖Δ࿑ྗͷෆ • ޮՌతʹ֤νʔϜΛࢧԉͰ͖Δ͔ͱ͍͏ෆ҆ɾɾɾ
Πϯφʔιʔεͱͷग़ձ͍
·ͣͪ͜ΒΛ͝ཡ͍ͩ͘͞
IUUQTZPVUVCF/0I@J'-:D TJ@,NF.TX#RER1(
None
ɹͦ͏ͩɺ ɹΠϯφʔιʔεɺ ɹΖ͏ɻ
Πϯφʔιʔεͱʁ ΠϯφʔιʔεͰ࢝ΊΔ৫Φʔϓϯιʔε։ൃೖ IUUQTTQFBLFSEFDLDPNZVIBUUPSJOOFSTPVSDFMFBSOJOHQBUIKBQBOFTF ҰݴͰද͢ͱʮࣾΦʔϓϯιʔεʯ
LBHUPPMTͷํมߋ LBHUPPMT w ϓϥοτϑΥʔϜνʔϜ͕ఏڙ͢ΔࢧԉπʔϧʢϦϙδτϦʣ܈ w *B$ɺίʔυεχϖοτͳͲศརͳπʔϧɺηΩϡϦςΟ্࣮ࢪͯ͠ཉ͍͠ͷΛల։༧ఆ w $0/53*#65*/(NEΛઃ͚ɺ։ൃऀ͔ΒͷίϯτϦϏϡʔγϣϯΛΦʔϓϯʹड͚ೖΕ
LBHJTNͷՃ ͲͪΒΠϯφʔιʔεʢࣾΦʔϓϯιʔεʣͷҐஔ͚ ཧӡ༻ͷओମ͕ϓϥοτϑΥʔϜνʔϜ͔༗ࢤ͔ͷҧ͍ LBHUPPMT w ϓϥοτϑΥʔϜνʔϜ͕ఏڙ͢ΔࢧԉπʔϧʢϦϙδτϦʣ܈ w *B$ɺίʔυεχϖοτͳͲศརͳπʔϧɺηΩϡϦςΟ্࣮ࢪͯ͠ཉ͍͠ͷΛల։༧ఆ w $0/53*#65*/(NEΛઃ͚ɺ։ൃऀ͔ΒͷίϯτϦϏϡʔγϣϯΛΦʔϓϯʹड͚ೖΕ
LBHJTN w ֤νʔϜνʔϜͳͲɺࣾͷ͋ΒΏΔॴ͔Βఏڙӡ༻͞ΕΔϓϩμΫτ w ϦϙδτϦͷ࡞ϧʔϧʹଇΕ୭Ͱఏڙ0, w ֤ϦϙδτϦͷϧʔϧʹै͑୭ͰίϯτϦϏϡʔτ0,
LBHJTNͷJTNͬͯͳʹʁ
LBHJTNͷJTNͬͯͳʹʁ JOOFSTPVSDFNBO
ΠϯφʔιʔεͷޮՌͱ͠͞
ΠϯφʔιʔεͷޮՌ • Φʔϓϯͳڥͷߏங • πʔϧφϨοδͷڞ༗ɺࣾશମͰͷੵ • ʮंྠͷ࠶ൃ໌ʯͷࢭ • ίϥϘϨʔγϣϯจԽͷৢ •
ϑΟʔυόοΫͱίϯτϦϏϡʔγϣϯͷଅਐ • νʔϜؒͷڠྗମ੍ͷڧԽɺαΠϩԽͷղফ • ϓϩμΫτͱ৫ͷվળ • ࣭։ൃੜ࢈ੑͷ্ • ৽ͨͳΠϊϕʔγϣϯͷଅਐ
Πϯφʔιʔεͷ͠͞ • ܧଓతͳϝϯςφϯεͷཁٻ • ϝϯςφϯε͞Εͳ͍πʔϧφϨοδෛ࠴Խ͢Δ • ʮ͍͔͠ΒϝϯςͰ͖ͳ͍ʯʮఏڙͯ͠ऴΘΓʯΛແ͍ͨ͘͠ • ίϥϘϨʔγϣϯจԽͷৢ •
(JWFͱ5BLFͷ͕ؔҰํతʹͳΓ͗͢ͳ͍Α͏ʹ͢Δ • ࣗൃతͳίϯτϦϏϡʔγϣϯ͕ߦ͑ΔڥͱจԽ͕ඞཁ • վળʹΑΔޮՌͷଌఆ • ޮՌΛ࣮ײ͢ΔͨΊʹࢦඪΛઃ͚ɺ֤Ҋ݅Ͱܭଌͯ͠Β͏
Πϯφʔιʔεͷ͠͞ • ܧଓతͳϝϯςφϯεͷཁٻ • ϝϯςφϯε͞Εͳ͍πʔϧφϨοδෛ࠴Խ͢Δ • ʮ͍͔͠ΒϝϯςͰ͖ͳ͍ʯʮఏڙͯ͠ऴΘΓʯΛແ͍ͨ͘͠ • ίϥϘϨʔγϣϯจԽͷৢ •
(JWFͱ5BLFͷ͕ؔҰํతʹͳΓ͗͢ͳ͍Α͏ʹ͢Δ • ࣗൃతͳίϯτϦϏϡʔγϣϯ͕ߦ͑ΔڥͱจԽ͕ඞཁ • վળʹΑΔޮՌͷଌఆ • ޮՌΛ࣮ײ͢ΔͨΊʹࢦඪΛઃ͚ɺ֤Ҋ݅Ͱܭଌͯ͠Β͏ ˠࣾͷʮΠϯφʔιʔεʯͱ͍͏ίϛϡχςΟΛӡӦ͍ͯ͘͠͠͞
ʮ͠͞ʯʹର͢Δ,"(ͷ͍͍ॴʢએʣ • ΞδϦςΟͱࣗ༝͕ߴ͍ • উखʹLBHUPPMTͱ͔LBHJTNͱ͔࡞ͬͯڐ͞ΕΔ • ͋Δఔࣗݾͷʹ͓͍ͯਐΊΒΕΔͷͰૉૣ͘औΓΊΔ • ࣦഊΛաʹΊΔจԽ͕ͳ͍ •
৺ཧతͳϓϨογϟʔ͕΄ͱΜͲͳ͍ • ʮೋਓʹགྷΔਓʯ͕͍Δ • औΓΈʹରͯͬͯ͘͠ΕΔޙԡͯ͘͠͠ΕΔਓ͕͍Δ • ʮΠϯφʔιʔεʯͱ͍͏ίϛϡχςΟӡӦ͕ʢൺֱతʣָʹ࣮ફͰ͖Δ ʢࣗͰ͖Δ΄Ͳ؆୯Ͱͳ͍ͷͰؤுΓ·͢ʣ νʔϜʹϊϦΛͨΒͨ࣌͠ʹ͍ͨʮೋਓʹགྷΔਓʯͷڞ௨ IUUQTTQFBLFSEFDLDPNQJZPOBLBKJNBUJNVOJOPSJXPNPUBSBTJUBTIJOJJUBFSSFONVOJZPOHSVSFOOPHPOHUPOHEJBO
ࢀߟɿΞδϟΠϧ։ൃηϯλʔݑষ
ԿΑΓֶΜͰ࣮ફ͖͢ʂ νʔϜτϙϩδʔ Πϯφʔιʔεύλʔϯ ίϛϡχςΟ
࣮ફྫɿEFWJPΑΓ Πϯφʔιʔε1MBUGPSN&OHJOFFSJOH͍ͣΕ,"(͕ࢦ͖࢟͢ͷҰͭͳؾ͕͢Δ $MBTTNFUIPEྲྀͷ1MBUGPSN&OHJOFFSJOH IUUQTEFWDMBTTNFUIPEKQBSUJDMFTDMBTTNFUIPEQMBUGPSNFOHJOFFSJOHEFWJP
࣮ફྫɿ4FSWFSMFTT%BZT5PLZPΑΓ 1MBUGPSN&OHJOFFSJOHͷ࣮ફʹఆ·ͬͨਖ਼ղແ͘ɺ৫ʹద߹͍ͤͯ͘͜͞ͱ͕ॏཁͩͱ௧ײ ͍·͋ΔνʔϜʹϑΟοτͤ͞Δ4FSWFSMFTTͦͯ͠1MBUGPSN&OHJOFFSJOHͷઓ IUUQTTQFBLFSEFDLDPNTFJLFTFSWFSMFTTGJUTUIFUFBNZPVIBWFBOEQMBUGPSNFOHJOFFSJOH
·ͱΊ
·ͱΊ • ϓϥοτϑΥʔϜΤϯδχΞϦϯάͷऔΓΈΛ࢝ΊΔ্Ͱɺ ΠϯφʔιʔεʹײԽ͞Εɺཱ྆ͤ͞ΔܗͰൃ ˠʮLBHUPPMTʯͱʮLBHJTNʯ • ΠϯφʔιʔεʹΑΓνʔϜؒͷίϥϘϨʔγϣϯ͕ਪਐ͞Εɺ
ंྠͷ࠶ൃ໌Λ͙͜ͱ͕Ͱ͖Δ • Πϯφʔιʔε׆ಈίϛϡχςΟʹࣅ͍ͯΔ ˠదʹӡӦ͠ͳ͚ΕޮՌΛൃشͤͣɺٕज़ෛ࠴ͷԹচͱͳΔ • ϓϥοτϑΥʔϜΤϯδχΞͱͯ͠ηϧϑαʔϏεܕͷࢧԉΛਪਐ Πϯφʔιʔε׆ಈͱͷ૬ޮՌʹΑΓɺΑΓ։ൃऀମݧͷ্Λࢦ͢ • ઌਓͷφϨοδͱίϛϡχςΟ͔Βֶͼɺ࣮ફ͢Δʂ
5IBOLZPVʂ