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からはじめるBedrock @ JAWS-UG AI/ML
Search
SimSta
September 25, 2024
2
290
Step FunctionsからはじめるBedrock @ JAWS-UG AI/ML
SimSta
September 25, 2024
Tweet
Share
More Decks by SimSta
See All by SimSta
インナーソースはじめました @ NES Tech Brewery
shimagaji
4
140
シマリスを知る!2024 @ Cloud in the Camp Horippa
shimagaji
0
62
(ほぼ)ノーコードでもBedrockしたいっ!! @JAWS-UG Sapporo
shimagaji
4
220
まずServerlessから考える、まずStep Functionsから考える @CloudNative Days Summer 2024 プレイベント
shimagaji
1
240
CodeCatalystで生成AIチャットボットをデプロイしてみた @ クラメソさっぽろ勉強会 #2
shimagaji
0
230
塩漬けダメ、ゼッタイ! サポート切れのIaCツールをTerraformに移行した話
shimagaji
0
170
Bedrock Agentsを搭載した図書管理LINE Chatbotを作ろうとしてみた @ JAWS-UG Yokohama
shimagaji
1
220
AWS認定全冠から始まるクラウドジャーニー @ JAWS-UG Tokyo
shimagaji
0
730
Serverless re:Capしながら LINE Chatbotをほぼノーコードで作る @ JAWS-UG Yokohama
shimagaji
2
200
Featured
See All Featured
Writing Fast Ruby
sferik
626
60k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
250
Why Our Code Smells
bkeepers
PRO
334
57k
Fireside Chat
paigeccino
32
3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
46
2.1k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
RailsConf 2023
tenderlove
28
860
Ruby is Unlike a Banana
tanoku
96
11k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Bash Introduction
62gerente
608
210k
Designing on Purpose - Digital PM Summit 2013
jponch
114
6.9k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Transcript
4UFQ'VODUJPOT͔Β͡ΊΔ #FESPDL 4JN4UB !TIJNBHBKJ +"846("*.-ࢧ෦ KBXTVH@BJNM
ˡϗϫΠτγϚϦεͷΞϧλ
ࣗݾհ ɹ࡛ۄɹʢʙେֶͷ్த·Ͱʣ ˠࡳຈɹʢʙେֶɾʣ ˠਆಸʢʙେֶӃʙब৬ͯ͘͠Β͍ʣ ˠࡳຈɹʢʙͪΐͬͱɺݱࡏʣ ͖ͳ"84αʔϏεɿ4UFQ'VODUJPOT 4JN4UBʢΦϯϥΠϯͷ͕ͨ͢ʣ ,%%*ΞδϟΠϧ։ൃηϯλʔגࣜձࣾ ϓϥοτϑΥʔϜΤϯδχΞϦϯά෦ !TIJNBHBKJ
5XJUUFS 4FSWFSMFTT ΧάΧά
ϗϫΠτγϚϦεͱ Β͍ͯ͠·͢🐿 5XJUUFSΞΧϯτ͋ΔΑ !BMUB@XIJUFDIJQ େνϧλϦε͍ΔΑ
աڈͷొஃࢿྉΞοϓͯ͠·͢ʢࠓͱࡢͷࢿྉʂʣ IUUQTTQFBLFSEFDLDPNTIJNBHBKJ
ݸਓϒϩάΛӡ༻͍ͯ͠·͢͠·͕͡ ͠Ήͦ͘ "84ΞοϓσʔτΛ ຖिߋ৽ʂ ͦͷଞ ΫϥυΨδΣοτ γϚϦεͷͳͲ
"HFOEB • #FESPDL͕ΊͪΌͪ͘ΌΞπ͍ • #FESPDLΛ؆୯ʹ͍͍ͨʂ • 4UFQ'VODUJPOTͷ͢ʍΊ • ΞϓϦέʔγϣϯͷྫ •
4UFQ'VODUJPOTͷҙ • ·ͱΊ
͡Ίʹ
ࠓɺ#FESPDL͕ΊͪΌͪ͘ΌΞπ͍
#FESPDLͷػೳ Ϟσϧݺͼग़͠ Ҏ্ͷج൫Ϟσϧ͔Β ༻్ʹ߹ΘͤͯબΜͰݺͼग़ͤΔ ը૾ೝࣝը૾ੜɺຒΊࠐΈ0, ,OPXMFEHF#BTFT ؆୯ͳηοτΞοϓͰ 4ʹอଘͨ͠จॻΛͱʹ ຊ֨తͳ3"(Λ࣮Ͱ͖Δ "HFOUT
Ϟσϧ͕ࢦࣔʹԠͯࣗ͡తʹ 3"(-BNCEBΛ࣮ߦͯ͠ λεΫΛ͜ͳͯ͘͠ΕΔ • ϓϩϏδϣϯυεϧʔϓοτ • ਪύϥϝʔλͷௐ • 1SJWBUF-JOL • $IBUXJUIZPVSEPDVNFOU • ϞσϧධՁ • ίϥϘϨʔγϣϯʢ4UVEJPʣ • ΨʔυϨʔϧ • ΥʔλʔϚʔΫݕग़ • ΧελϜϞσϧΠϯϙʔτ • ϓϩϯϓτϚωδϝϯτ • 1SPNQU'MPXT FUD
͍ͭʹ$MBVEF͕౦ژϦʔδϣϯʹՃʂ Ӊ࠷Ͱʢग़ݱͯ͠ޙʣهࣄॻ͖·ͨ͠ IUUQTRJJUBDPNTIJNBHBKJJUFNTCCEFGBEBGGGC
ೖهࣄ͋Γ·͢ IUUQTEFWDMBTTNFUIPEKQ
ॻ੶ग़·ͨ͠#FESPDL։ൃೖ 4JN4UBͪΐͬͱ͚͓ͩख͍͍͖ͤͯͨͩ͞·ͨ͠
#FESPDLΛͬͨ ΞϓϦέʔγϣϯͷྫ
Ϗδͭ͘ʂʢ%9ࣄۀاըମݧΞϓϦʣ Ӊ࠷ Λࢦͯ͠"NB[PO#FESPDLΛຊ֨׆༻ͨ͠ϓϩμΫτΛ։ൃ͠·ͨ͠ʂ IUUQTEFWFMPQFSTLEEJDPNCMPH5.%QDEJ5R3$.[SEQ;P #FESPDLͷ("͔Β ޙͷʹ ϓϨεϦϦʔε͕ग़ͨ Ӊ࠷ͷ#FESPDLΞϓϦ
͔͙ͨΜʢ4MBDL͔Β͑ΔνϟοτϘοτʣ +"84%":4$ϑϧ"84ͷϚϧνςφϯτ4BB4ੜ"*ΞϓϦʮ͔͙ͨΜʯ։ൃൿ IUUQTXXXEPDTXFMMDPNTTL[L;+-.72KBXTEBZT@D@LBHVUBOQ
ٞࣄύοΫϯʢ3F"DU"HFOUʹΑΔӦۀࢧԉπʔϧʣ ,%%*ΞδϟΠϧ։ൃηϯλʔͷ"84ੜ"*ࣄྫɿ"NB[PO#FESPDLͰӦۀ׆ಈΛαϙʔτrٞࣄͱఏҊॻͷ࡞࣌ؒΛݮ IUUQTBXTBNB[PODPNKQCMPHTOFXTBXTHFOBJVTFDBTFTLEEJBHJMFNJOVUFT
Ͱੜ"*ΞϓϦέʔγϣϯͬͯ ࡞ΔͷେมͳΜͰ͠ΐʁ
4JN4UBͷόοΫάϥϯυ • ։ൃʢαϒγεςϜʣܦݧˠ΄΅্ྲྀఔɺίʔυॻ͔ͳ͍ • ࢼݧͷγφϦΦϑΝΠϧΈ͍ͨͳಠࣗݴޠͳΒͨ͘͞Μॻ͍ͨ • Πϯϑϥʢ΄΅ΫϥυʣܦݧˠZBNMͱͪΐͬͱ͚ͩUG • -BNCEBʢ1ZUIPOʣͱϑϩϯτͷ+BWB4DSJQUͪΐͬͱ͚ͩ ίʔυ͋Μ·ॻ͍ͨ͜ͱͳ͍ʢŧŔŕŪƂŜſʣ
ίʔυ͕ॻ͚Ε ͍ΖΜͳ͜ͱ͕Ͱ͖Δͷʹʜɻ
ʢ͋·ΓʣίʔυΛॻ͔ͣʹ #FESPDL͍ͨͬ͠ʂʂ
ʢ΄΅ʣϊʔίʔυͰ#FESPDL͢Δํ๏ͷྫ • 4UFQ'VODUJPOTΛ͏ • (FOFSBUJWF"*6TF$BTFT+1ʢ(FO6ʣΛσϓϩΠ͢Δ • #FESPDL$MBVEF$IBUΛ$PEF$BUBMZTU͔ΒσϓϩΠ͢Δ • ͦͷଞʹ͍Ζ͍Ζ͋ΔΑ
ʢ΄΅ʣϊʔίʔυͰ#FESPDL͢Δํ๏ͷྫ • 4UFQ'VODUJPOTΛ͏ɹˡࠓͪ͜ΒΛհʂ • (FOFSBUJWF"*6TF$BTFT+1ʢ(FO6ʣΛσϓϩΠ͢Δ • #FESPDL$MBVEF$IBUΛ$PEF$BUBMZTU͔ΒσϓϩΠ͢Δ • ͦͷଞʹ͍Ζ͍Ζ͋ΔΑ
൪ʹ͍ͭͯৄࡉΛΓ͍ͨํͪ͜ΒͰհ͍ͯ͠·͢ IUUQTTQFBLFSEFDLDPNTIJNBHBKJKBXTVHTBQQPSPCFESPDLXJUIBMNPTUOPDPEF
4UFQ'VODUJPOTº#FESPDLͰ ΞϓϦέʔγϣϯΛͭ͘Ζ͏ʂ
4UFQ'VODUJPOTͱʁ ϩʔίʔυͰ"84֎෦"1*ͱ࿈ܞͯ͠ΞϓϦέʔγϣϯͷ ϫʔΫϑϩʔΛߏஙͰ͖ΔΦʔέετϨʔγϣϯαʔϏε
4UFQ'VODUJPOTͷັྗ ͪ͜ΒͰࢥ͏ଘޠ͖ͬͯ·ͨ͠ IUUQTTQFBLFSEFDLDPNTIJNBHBKJTFSWFSMFTTGJSTUTUFQGVODUJPOTGJSTU
4UFQ'VODUJPOTº#FESPDLͰ ͭͬͨ͘ΞϓϦέʔγϣϯͷհ
ᶃ΄΅ϊʔίʔυͰͭ͘Δ-*/&νϟοτϘοτ ͠Ήͦ͘ͷϒϩάݪߘΛϕʔεͱͯ͠ "84ͷΞοϓσʔτʹؔ͢Δ࣭ʹ͑·͢ #FESPDL,OPXMFEHF#BTFTΛ 1JOFDPOFͱΈ߹Θͤͯ༻ҙ͠ɺ 3FUSJFWBM"OE(FOFSBUFΛݺͼग़ͯ͠ར༻ ͵ΔΆ
-*/&νϟοτϘοτͷߏ ϑϩϯτΤϯυʹ-*/&Λ͏͜ͱͰ ʢ΄΅ʣϊʔίʔυΛ࣮ݱ AWS Cloud API Gateway Step Functions Bedrock
EventBridge API Destination LINE Webhook Invoke Execute Call HTTPS Endpoint Secrets Manager API Key User API Key S3 Pinecone Retrieve Embedding
4UFQ'VODUJPOTͷϫʔΫϑϩʔ ࠷ॳͷॲཧͰݺͼग़͠ݩνΣοΫ ʢҰக͠ͳ͍ॲཧεΩοϓʣ ݕࡧͯ͠ੜͨ͠ग़ྗΛ ͞Βʹܗ͢ΔελΠϧ ʢվળɾͷ༨͋Γʣ &WFOU#SJEHF"1*%FTUJOBUJPOͰ -*/&ͷΤϯυϙΠϯτΛݺͼग़͠ ճΛϢʔβʔʹૹ৴ ձཤྺΛՃ͢Δ߹
%ZOBNP%#ͷಡΈॻ͖Λ͢
΄΅ίʔυΛॻ͔ͳ͍Ͱ ؆୯ʹνϟοτϘοτ͕࡞ΕΔʂ ͨͩ͠ɾɾɾ
ͬͱγϯϓϧʹνϟοτϘοτ͕࡞ΕΔΑ͏ʹͳͬͨ݅ "84$IBUCPUΛ͏͜ͱͰશʹϊʔίʔυͰ"HFOUTΛݺͼग़ͤΔΑ͏ʹ ʢ"DUJPO(SPVQTΛ͏߹-BNCEBͷίʔσΟϯά͕ඞཁʣ AWS Cloud Bedrock Agents SNS Invoke Notify
Action Groups Chatbot Publish Knowledge Bases User Slack
ͬͱγϯϓϧʹνϟοτϘοτ͕࡞ΕΔΑ͏ʹͳͬͨ݅ User Slack ˢຊͷ͔͙ͨΜ ˡِͷ͔͙ͨΜʢ͔ͨ͘Μʣ
ᶄ(VBSE%VUZͷ݁ՌΛ͍͍ײ͡ʹ௨ͯ͘͠ΕΔ܅ (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ʹू͞ΕͨΠϕϯτΛर͏ ͷͲͪΒ͔Λબͯ͠σϓϩΠՄೳ
4UFQ'VODUJPOTͷϫʔΫϑϩʔ ͜Ε͚ͩ
4UFQ'VODUJPOTº#FESPDLΞϓϦέʔγϣϯ·ͱΊ • 3"(Λࡌͨ͠-*/&νϟοτϘοτ • (VBSE%VUZͷ݁ՌΛ͍͍ײ͡ʹͯ͠௨ͯ͘͠ΕΔ܅ ͲͪΒΊͪΌͪ͘Όγϯϓϧ͔ͭ΄΅ϊʔίʔυͳͷͰ ੜ"*ΞϓϦέʔγϣϯͷೖʹ࠷దʂ #FESPDL"HFOUTΛར༻͢Δ߹-BNCEBίʔσΟϯά͕ඞཁͳɺ ຊ൪ར༻͢Δ߹8"'ͳͲηΩϡϦςΟ໘Λߟྀ͖͢ͳʹҙʂ
ॻ੶ʹϋϯζΦϯ͋Γ·͢#FESPDL։ൃೖ
4UFQ'VODUJPOTར༻࣌ͷ ҙ
"HFOUTͷݺͼग़͠-BNCEB͕ඞཁ ਤॻିग़ΤʔδΣϯτΛߏஙͨ͠ͱ͖ͷྫ ʮ"HFOUΛݺͼग़ͨ͢Ί͚ͩͷ-BNCEBʯ͕ඞཁ ʢͪΐͬͱΠέͯͳ͍ʣ IUUQTTQFBLFSEFDLDPNTIJNBHBKJCFESPDLBHFOUTXPEB[BJTJUBUVTIVHVBOMJMJOFDIBUCPUXP[VPSPVUPTJUFNJUBBUKBXTVHZPLPIBNB
"4-ʢ+40/1BUIʣͷೝෛՙߴΊ ΄ͱΜͲ(6*Ͱૢ࡞Ͱ͖Δ͕ ࡉ͔͍ॲཧ+40/Ͱฤू͢Δ ʢZBNM͕ཉ͍͠ʜʂʣ ΈࠐΈؔ4UBUF9999 ΄ͱΜͲ֮͑ͯͳ͍ ೖग़ྗʹ͏ *OQVU1BUI 3FTVMU1BUI 3FTVMU4FMFDUPS
0VUQVU1BUI ͍͍ͩͨงғؾͰͬͯΔ ࠷ۙঢ়ଶ͝ͱʹςετͰ͖ΔͷͰ ೖग़ྗ͕زཧղͰ͖ΔΑ͏ʹͳͬͨ
ಉ͡Ϧʔδϣϯͷ#FESPDL'.ͷΈݺͼग़ͤΔ Tokyo Region Oregon Region N.Virginia Region ΫϩεϦʔδϣϯਪΤϯυϙΠϯτܦ༝ͰͷΈ ηΧϯμϦͱͯ͠ଞϦʔδϣϯͷ'.Λݺͼग़ͤΔ ʢݱঢ়64ͱ&6ͷΈɺΧελϜਪΤϯυϙΠϯτཉ͍͠ʣ
·ͱΊ
·ͱΊ • 4UFQ'VODUJPOTʹΑΓɺ؆୯ʹ#FESPDLΛͬͨ ੜ"*ΞϓϦέʔγϣϯೖ͢Δ͜ͱ͕Ͱ͖Δ • ϊʔίʔυϩʔίʔυ͔Β࢝Ίͯɺඞཁͱͳͬͨࡍʹ ίʔσΟϯάͰ࣮͍ͯ͘͠ͷΞϦ •
ݱঢ়4UFQ'VODUJPOTʹ͍ʹ͍͘ଘࡏ͢Δ ˠੵۃతͳϑΟʔυόοΫ͍ͩ͡
5IBOLZPVʂ