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
サーバレスで動かすトークン発行プラットフォーム.pdf
Search
shunp
February 23, 2019
Programming
0
1.9k
サーバレスで動かすトークン発行プラットフォーム.pdf
JAWS DAYS 2019で発表した資料になります。
[Serverless] サーバレスで動かすトークン発行プラットフォーム
shunp
February 23, 2019
Tweet
Share
More Decks by shunp
See All by shunp
HAKODATE Developers Conference 2019
shunp
0
160
日々の生活に緊張感を! Flutterでつくる寿命タイマー / The LifeTimer created by Flutter
shunp
1
830
This is My Architectureの発表感想とサーバレスアーキテクチャ
shunp
1
230
Other Decks in Programming
See All in Programming
ASP.NET Core の OpenAPIサポート
h455h1
0
150
Immutable ActiveRecord
megane42
0
120
CNCF Project の作者が考えている OSS の運営
utam0k
5
610
ErdMap: Thinking about a map for Rails applications
makicamel
1
1.1k
AWSマネコンに複数のアカウントで入れるようになりました
yuhta28
2
150
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築
sumiyae
3
620
いりゃあせ、PHPカンファレンス名古屋2025 / Welcome to PHP Conference Nagoya 2025
ttskch
1
240
functionalなアプローチで動的要素を排除する
ryopeko
1
850
React 19でお手軽にCSS-in-JSを自作する
yukukotani
5
600
Pythonでもちょっとリッチな見た目のアプリを設計してみる
ueponx
0
180
混沌とした例外処理とエラー監視に秩序をもたらす
morihirok
18
3.2k
カンファレンス動画鑑賞会のススメ / Osaka.swift #1
hironytic
0
200
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
6
220
Testing 201, or: Great Expectations
jmmastey
41
7.2k
Music & Morning Musume
bryan
46
6.3k
The Invisible Side of Design
smashingmag
299
50k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
Mobile First: as difficult as doing things right
swwweet
222
9.1k
YesSQL, Process and Tooling at Scale
rocio
170
14k
Faster Mobile Websites
deanohume
305
30k
Designing for humans not robots
tammielis
250
25k
Gamification - CAS2011
davidbonilla
80
5.1k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Transcript
αʔόϨεͰߏங͢Δ τʔΫϯൃߦϓϥοτϑΥʔϜ খॣฏ
ࣗݾհ
ΤϯδχΞγΣΞϋεࡏॅ খॣฏ ͍͚͜͠ΎΜ͍ SF*OWFOU 5IJTJT.Z"SDIJUFDUVSFʹग़ԋ ࡉʑͱใൃ৴͍ͯ͠·͢ 2JJUB 5XJUUFS
ॴଐձࣾ
4JNQMFYגࣜձࣾ ͷۀҎདྷɺϝΨόϯΫɺେखূ݊Λ͡Ίͱͨ͠ ओཁͳۚ༥ػ͚ؔʹɺ ۚ༥ͷऔҾϦεΫཧۀΛࢧԉ͢Δ ಠࣗ։ൃͷ*5ιϦϡʔγϣϯɾαʔϏεΛఏڙ Ծ௨՟ϒϩοΫνΣʔϯྖҬੵۃల։த ࡢ݄ʹ%..#JUDPJOΛϦϦʔε ࠃ"1/ςΫϊϩδʔύʔτφʔͱͯ͠ॳΊͯ ʮ"84ۚ༥αʔϏείϯϐςϯγʔʯೝఆΛऔಘ
ಥવͰ͕ٕ͢ज़ऀͷํʹ࣭Ͱ͢ɻ ʑ৽͍ٕ͠ज़Λ͍ ࣗݾݚᮎͰ͖͍ͯ·͔͢ʁ
ͪΐ͏Ͳલͷࠓࠒ αʔόϨεαʔϏεͱແԑͳ։ൃऀ
˒ۚ༥ۀքʹٻΊΒΕΔݫ੍͍͠ ๏ఆཁ݅Λຬͨ͢ݎ࿚ੑ ϛεͷڐ͞Εͳ͍ΫϦςΟΧϧੑ ˒ೲܕ ސ٬ͷϦΫΤετʹ߹ΘͤͯߏΛܾఆ ৽͍ٕ͠ज़ͷಋೖʹ͔֬ʹҰఆͷϦεΫ͕ଘࡏ͢Δ ཁ݅Λ࣮֬ʹຬͨͤΔΑ͏ ৽͍ٕ͠ज़ͷಋೖʹอकతͳେ͖͍߹͕͋Δ ฐࣾͷ߹ ཧͱݱ࣮ͷ
Ϊϟοϓ
͔ͩΒͱ͍ͬͯ ಉ͡ࢿ࢈Λͣͬͱ͍ଓ͚Δ༁ʹ͍͔ͳ͍
αʔόϨεͰߏங͢Δ τʔΫϯൃߦϓϥοτϑΥʔϜ খॣฏ
Γ͍ͨ͜ͱ͔ΓΕΔΘ͚͡Όͳ͍ ͜ΜͳੈͷதͰ খॣฏ ϝΠϯϓϩδΣΫτͱผʹࡉʑͱଓ͚͖ٕͯͨज़ઓͱ ࠓ͔Β࢝ΊΔαʔόϨε։ൃͷखҾ͖
ۙͰ༻͖ͯͨ͠αʔϏε Amazon Elastic Block Store (EBS) Amazon Simple Storage Service
(S3) AWS Key Management Service AWS Identity and Access Management (IAM) AWS CloudHSM Amazon Cognito Amazon CloudFront Amazon VPC PrivateLink Amazon Route 53 AWS Amplify AWS AppSync Amazon CloudWatch AWS CloudFormation AWS CloudTrail Amazon Lex AWS X-Ray Amazon API Gateway AWS CodePipeline AWS CodeStar AWS Cloud9 AWS CodeBuild AWS CodeCommit Amazon Aurora Amazon DynamoDB Amazon ElastiCache Amazon Lightsail AWS Fargate AWS Elastic Beanstalk AWS Lambda Amazon Elastic Container Service Amazon Sumerian Amazon Simple Notification Service Amazon Simple Queue Service AWS Step Functions Amazon Polly Amazon Kinesis
৽͍ٕ͠ज़ͷಋೖʹ͔֬ʹҰఆͷϦεΫ͕ଘࡏ͢Δ ৽͍ٕ͠ज़ͷಋೖʹอकతͳେ͖͍
͡Ό͋Ͱ͖ΔձࣾΛ୳͢ʁݸਓͰΔʁ ͬͺΓɺࢥ͍ೖΕͷ͋Δ͜ͷձࣾʹԿ͔͍ͨ͠ɻ ৽͍ٕ͠ज़ͷಋೖʹ͔֬ʹҰఆͷϦεΫ͕ଘࡏ͢Δ ৽͍ٕ͠ज़ͷಋೖʹอकతͳେ͖͍ ୭ʹཔ·Εͯͳ͍͚Ͳʜ ٕज़ྗڧԽϓϩάϥϜΛউखʹܭըͯ͠Έͨ
ͭͷطࣄ࣮Λͭͬͯ͘͠·͓͏ʂ ൃ৴ͯ͠ ڞײΛूΊΔ ࣾͰར༻Ͱ͖ ΔπʔϧΛ࡞Δ ֎෦Ͱൃද͢Δ νϟϨϯδ Ͱ͖Δڥ ͍͚͜͠ΎΜ͍ Ծඪɿ4JNQMFY5PLFO
Ծ௨՟ Λൃߦͯࣾ͠Ͱར༻ͯ͠Β͏ ࣾͰར༻Ͱ͖ΔπʔϧΛ࡞Δ Ϣʔεέʔεఆ શମΞʔΩઃܭ %#ઃܭ Ծ௨՟ൃߦ ϒϩοΫνΣʔϯଓ "1*࣮ αʔόϨεαʔϏε ͦͷଞ"84αʔϏε 8FC6* ϞόΠϧ6* ٕज़తͳνϟϨϯδཁૉ શମઃܭ ϒϩοΫνΣʔϯ όοΫΤϯυ ϑϩϯτΤϯυ
ͭͷطࣄ࣮Λͭͬͯ͘͠·͓͏ʂ ൃ৴ͯ͠ ڞײΛूΊΔ ࣾͰར༻Ͱ͖ ΔπʔϧΛ࡞Δ ֎෦Ͱൃද͢Δ νϟϨϯδ Ͱ͖Δڥ ͍͚͜͠ΎΜ͍ Ծඪɿ4JNQMFY5PLFO
Ծ௨՟ Λൃߦͯࣾ͠Ͱར༻ͯ͠Β͏ ࣾͰར༻Ͱ͖ΔπʔϧΛ࡞Δ Ϣʔεέʔεఆ શମΞʔΩઃܭ %#ઃܭ Ծ௨՟ൃߦ ϒϩοΫνΣʔϯଓ "1*࣮ αʔόϨεαʔϏε ͦͷଞ"84αʔϏε 8FC6* ϞόΠϧ6* ٕज़తͳνϟϨϯδཁૉ શମઃܭ ϒϩοΫνΣʔϯ όοΫΤϯυ ϑϩϯτΤϯυ
ͳͥ͜ͷ׆ಈ͕ඞཁͳͷ͔ʁ ͜ͷ׆ಈʹΑΓձࣾʹͲΜͳϝϦοτ͕͋Δͷ͔ʁ 1PJOU Πϊϕʔγϣϯʹͭͳ͕Δ׆ಈ ɾΠϊϕʔγϣϯΛੜΈग़͢͜ͱΛձࣾͷଘࡏҙٛͱͯ͠ଊ͍͑ͯΔاۀɻ ɾϒϩοΫνΣʔϯ͕ۚ༥ۀքͰ࠷ϗοτͳͰ͋ͬͨɻ ָ͕ࣾ͘͠ͳΔπʔϧΛఏڙ
ɾτʔΫϯͱ͍͏֎తใुͰɺීஈͷࣄʹผͷҙຯ͚ͮΛ࣋ͨͤΔɻ ɾࣾ֎ʹग़͞ͳ͍ͷͰϦεΫগͳ͍ɻ ٕज़αϯυϘοΫεͱͯ͠ར༻ ɾઓ͍ٕͨ͠ज़Λࢼ͢ͱͯ͠ར༻͢Δ͜ͱΛએݴɻ ɾࢼͨ͠ϊϋͷڞ༗ʹΑΔࣾͷٕज़ྗ্Λݟਾ͑Δɻ ɾྗΛ࣋ͯ༨ͨ͠एखΛर͏ϑΟʔϧυʹར༻ͯ͠΄͍͠ɻ ׆ಈࣗମͷঝೝ ߟهࣄΛࣾͰެ։
ͭͷطࣄ࣮Λͭͬͯ͘͠·͓͏ʂ ൃ৴ͯ͠ ڞײΛूΊΔ ࣾͰར༻Ͱ͖ ΔπʔϧΛ࡞Δ ֎෦Ͱൃද͢Δ νϟϨϯδ Ͱ͖Δڥ ͍͚͜͠ΎΜ͍ Ծඪɿ4JNQMFY5PLFO
Ծ௨՟ Λൃߦͯࣾ͠Ͱར༻ͯ͠Β͏ ࣾͰར༻Ͱ͖ΔπʔϧΛ࡞Δ Ϣʔεέʔεఆ શମΞʔΩઃܭ %#ઃܭ Ծ௨՟ൃߦ ϒϩοΫνΣʔϯଓ "1*࣮ αʔόϨεαʔϏε ͦͷଞ"84αʔϏε 8FC6* ϞόΠϧ6* ٕज़తͳνϟϨϯδཁૉ શମઃܭ ϒϩοΫνΣʔϯ όοΫΤϯυ ϑϩϯτΤϯυ
։ൃલఏ ਓ͕͍ͳ͍ খ͕૽͍ͰΔ͚ͩ ͕࣌ؒͳ͍ ਖ਼ຊۀͰख͍ͬͺ͍ͷՔಇ ͕ࣝͳ͍ Γ͍ͨ͜ͱ৽ͨͳྖҬ
·ͣඞཁ࠷খݶͷػೳʹूத͢Δ ᶃߴরձ ࣗͲͷ͘Β͍4JNQMFY5PLFOΛ͍࣋ͬͯΔ͔֬ೝͰ͖Δ ᶄτʔΫϯडऔ Կ͔ͷτϦΨʔͰ4JNQMFY5PLFOΛΒ͑Δ ։ൃલఏ ਓ͕͍ͳ͍ খ͕૽͍ͰΔ͚ͩ ͕࣌ؒͳ͍ ਖ਼ຊۀͰख͍ͬͺ͍ͷՔಇ
͕ࣝͳ͍ Γ͍ͨ͜ͱ৽ͨͳྖҬ
·ͣඞཁ࠷খݶͷػೳʹूத͢Δ ᶃߴরձ ࣗͲͷ͘Β͍4JNQMFY5PLFOΛ͍࣋ͬͯΔ͔֬ೝͰ͖Δ ᶄτʔΫϯडऔ Կ͔ͷτϦΨʔͰ4JNQMFY5PLFOΛΒ͑Δ ։ൃલఏ ਓ͕͍ͳ͍ খ͕૽͍ͰΔ͚ͩ ͕࣌ؒͳ͍ ਖ਼ຊۀͰख͍ͬͺ͍ͷՔಇ
͕ࣝͳ͍ Γ͍ͨ͜ͱ৽ͨͳྖҬ 6*ͭ͘Δͷ͔͔࣌ؒΔ 4MBDLΛ6*ͱͯ͠ར༻ ೝূࡁΈલఏ Πϯϑϥߏங͔͔࣌ؒΔ αʔόϨε-BNCEBͰߏங ࣗಈతʹ%ZOBNP%#͕બࢶʹ ࣮ૣ͘ऴΘΒ͍ͤͨ पลϥΠϒϥϦͷ๛ͳ /PEFKTͰ࣮
ͭͷطࣄ࣮Λͭͬͯ͘͠·͓͏ʂ ൃ৴ͯ͠ ڞײΛूΊΔ ࣾͰར༻Ͱ͖ ΔπʔϧΛ࡞Δ ֎෦Ͱൃද͢Δ νϟϨϯδ Ͱ͖Δڥ ͍͚͜͠ΎΜ͍ Ծඪɿ4JNQMFY5PLFO
Ծ௨՟ Λൃߦͯࣾ͠Ͱར༻ͯ͠Β͏ ࣾͰར༻Ͱ͖ΔπʔϧΛ࡞Δ Ϣʔεέʔεఆ શମΞʔΩઃܭ %#ઃܭ εϚʔτίϯτϥΫτ ಠࣗ௨՟σϓϩΠ "1*࣮ αʔόϨεαʔϏε ͦͷଞ"84αʔϏε 8FC6* ϞόΠϧ6* "3 ٕज़తͳνϟϨϯδཁૉ શମઃܭ ϒϩοΫνΣʔϯ όοΫΤϯυ ϑϩϯτΤϯυ
ಠࣗ௨՟Λఆٛ͢ΔΠϯλϑΣʔε &3$ ͕ طʹఆٛࡁΈͷ0QFO;FQQFMJOͱ͍͏ϥΠϒϥϦΛ༻ ༷ʑͳϒϩοΫνΣʔϯϓϥοτϑΥʔϜ͕ଘࡏ͢ΔதͰ ͔࣌Β࠷ਓؾͩͬͨ&UIFSFVNΛબ 5SV⒐FϑϨʔϜϫʔΫΛͬͯ 4PMJEJUZͷίϯτϥΫτΛ։ൃˍςετωοτσϓϩΠ 4JNQMFY5PLFO͕ςετωοτ σϓϩΠ͞Ε͍ͯΔ͜ͱΛ֬ೝ
τʔΫϯͷϩΰ࡞
ͭͷطࣄ࣮Λͭͬͯ͘͠·͓͏ʂ ൃ৴ͯ͠ ڞײΛूΊΔ ࣾͰར༻Ͱ͖ ΔπʔϧΛ࡞Δ ֎෦Ͱൃද͢Δ νϟϨϯδ Ͱ͖Δڥ ͍͚͜͠ΎΜ͍ Ծඪɿ4JNQMFY5PLFO
Ծ௨՟ Λൃߦͯࣾ͠Ͱར༻ͯ͠Β͏ ࣾͰར༻Ͱ͖ΔπʔϧΛ࡞Δ Ϣʔεέʔεఆ શମΞʔΩઃܭ %#ઃܭ εϚʔτίϯτϥΫτ ಠࣗ௨՟σϓϩΠ "1*࣮ αʔόϨεαʔϏε ͦͷଞ"84αʔϏε 8FC6* ϞόΠϧ6* "3 ٕज़తͳνϟϨϯδཁૉ શମઃܭ ϒϩοΫνΣʔϯ όοΫΤϯυ ϑϩϯτΤϯυ
Amazon API Gateway Amazon DynamoDB AWS Lambda ࠓճͷొαʔϏε AWS Lambda
&$ͳͲͷαʔόΛඞཁͱͤͣʹίʔυͷ࣮ߦ͕Ͱ͖Δɻ ྫ͑ɺ;JQʹݻΊͨιʔείʔυΛ-BNCEBͷίϯιʔϧը໘͔Β Ξοϓϩʔυ͢Δ͚ͩͰίʔυΛϦϞʔτͰ࣮ߦͰ͖Δɻ /PEFKTͷ࣮ߦڥͱͯ͠ར༻ Amazon API Gateway 3&45"1*8FC4PDLFU"1*Λ࡞͢ΔࡍͷΠϯλϑΣʔεΛ؆୯ʹ༻ҙͰ͖Δɻ ݺͼग़͍ͨ͠-BNCEBΛϚοϐϯάͰ͖ɺ"1*(BUFXBZ -BNCEBͰ"1*ΛߏஙՄೳɻ τϥϑΟοΫͷཧɺ*".ͱΈ߹ΘͤͨೝՄ੍ޚͰ͖Δɻ ϦΫΤετΛड͚Δ"1*ΤϯυϙΠϯτΛ࡞ Amazon DynamoDB ΩʔόϦϡʔ͓ΑͼυΩϡϝϯτܕͷσʔλϕʔεαʔϏεɻ εέʔϧཧΠϯετʔϧॲཧͳͲ͕ෆཁͰ؆୯ʹར༻Ͱ͖Δɻ -BNCEBͷσʔλॻ͖ࠐΈઌͱͯ͠ΘΕΔ͜ͱ͕ଟ͍ɻ ϒϩοΫνΣʔϯʹॻ͖ࠐ·ͳ͍σʔλͷอଘઌͱͯ͠ར༻
ᶃߴ֬ೝ ᶄτʔΫϯडऔ "1*࣮ &UIFSFVN ΞυϨεੜ ΞυϨε Ϣʔβใ ϢʔβใͱΞυϨεͷ ϚοϐϯάใΛอଘ ςετωοτ
τʔΫϯอ༗ྔΛ ॻ͖ࠐΉ XFCKT Λຬͨ͢࠷ݶͷΞʔΩςΫνϟશମ૾ ίϚϯυʹҾ ͱͯ͠࿈ܞ ˒4MBDL͔Β"1*(BUFXBZ͕ ൃߦ͢ΔΤϯυϙΠϯτ ɹɹɹ3&45"1*ͷϦΫΤετ͕ൃੜ ˒εϚʔτίϯτϥΫτͰ ɹɹཧ͠ʹ͍͘Ϛοϐϯάใ ɹɹɹ%ZOBNP%#ॻ͖ࠐΈ ˒ϩδοΫ/PEFKTͰهड़͠ ɹɹ-BNCEBΞοϓϩʔυ ˒XFCKTͱ͍͏ϥΠϒϥϦΛͬͯ ɹɹ&UIFSFVNωοτϫʔΫʹσϓϩΠ͞Εͨ ɹɹɹεϚʔτίϯτϥΫτΛૢ࡞ Amazon API Gateway Amazon DynamoDB AWS Lambda MetaMask Slack Ethereum
ᶃߴ֬ೝ ᶄτʔΫϯडऔ "1*࣮ &UIFSFVN ΞυϨεੜ ΞυϨε Ϣʔβใ ϢʔβใͱΞυϨεͷ ϚοϐϯάใΛอଘ ςετωοτ
τʔΫϯอ༗ྔΛ ॻ͖ࠐΉ XFCKT Λຬͨ͢࠷ݶͷΞʔΩςΫνϟશମ૾ ίϚϯυʹҾ ͱͯ͠࿈ܞ ˒4MBDL͔Β"1*(BUFXBZ͕ ൃߦ͢ΔΤϯυϙΠϯτ ɹɹɹ3&45"1*ͷϦΫΤετ͕ൃੜ ˒εϚʔτίϯτϥΫτͰ ɹɹཧ͠ʹ͍͘Ϛοϐϯάใ ɹɹɹ%ZOBNP%#ॻ͖ࠐΈ ˒ϩδοΫ/PEFKTͰهड़͠ ɹɹ-BNCEBΞοϓϩʔυ ˒XFCKTͱ͍͏ϥΠϒϥϦΛͬͯ ɹɹ&UIFSFVNωοτϫʔΫʹσϓϩΠ͞Εͨ ɹɹɹεϚʔτίϯτϥΫτΛૢ࡞ Amazon API Gateway Amazon DynamoDB AWS Lambda αʔόϨεͰzΔ͖͜ͱzʹूதͰ͖ͨ
ͭͷطࣄ࣮Λͭͬͯ͘͠·͓͏ʂ ࣾͰར༻Ͱ͖ ΔπʔϧΛ࡞Δ ֎෦Ͱൃද͢Δ νϟϨϯδ Ͱ͖Δڥ ͍͚͜͠ΎΜ͍ Ծඪɿ4JNQMFY5PLFO Ծ௨՟ Λൃߦͯࣾ͠Ͱར༻ͯ͠Β͏
ࣾͰར༻Ͱ͖ΔπʔϧΛ࡞Δ Ϣʔεέʔεఆ શମΞʔΩઃܭ %#ઃܭ εϚʔτίϯτϥΫτ ಠࣗ௨՟σϓϩΠ "1*࣮ αʔόϨεαʔϏε ͦͷଞ"84αʔϏε 8FC6* ϞόΠϧ6* "3 ٕज़తͳνϟϨϯδཁૉ શମઃܭ ϒϩοΫνΣʔϯ όοΫΤϯυ ϑϩϯτΤϯυ ൃ৴ͯ͠ ڞײΛूΊΔ
ͱΓ͋͑ͣ ࢀՃˍϒʔεग़ల͕ܾఆ ͜ͷ··ͷϨϕϧͰྑ͍ͷ͔ʜʁ /PEFKTΛ࣮ͬͨ αʔόϨε 4MBDLʹΑΔ6*ͷলུ ػೳ͕ߴ֬ೝˍτʔΫϯडऔ &3$ʹΑΔτʔΫϯͷൃߦ 4MBDLϝοηʔδʹΑΔߴ֬ೝ
ͱΓ͋͑ͣ ࢀՃˍϒʔεग़ల͕ܾఆ ͜ͷ··ͷϨϕϧͰྑ͍ͷ͔ʜʁ /PEFKTΛ࣮ͬͨ ϥΠτͳ"1*ͳΒ (PݴޠͰ։ൃ͍ͨ͠ αʔόϨε ίʔυཧͯ͠ ෳͷ-BNCEBΛར༻ 4MBDLʹΑΔ6*ͷলུ
ࢀՃऀ͕ϩάΠϯͰ͖Δ 7VFKTͰ8FCը໘Λͭ͘Δ ػೳ͕ߴ֬ೝˍτʔΫϯडऔ ࢀՃऀ͕ͦͷͰ τʔΫϯΛૹΓ߹͑ΔαʔϏε &3$ʹΑΔτʔΫϯͷൃߦ ఆྔੑͱఆੑੑΛ݉Ͷඋ͑ͨ &3$Ͱ ௨՟ͷϓϥοτϑΥʔϜΛͭ͘Δ ཁ͔݅Βٕज़ཁૉ·ͰશͯΛΞοϓσʔτ͢Δ 4MBDLϝοηʔδʹΑΔߴ֬ೝ "3Λͬͨ ήʔϜܕΠϯλϑΣʔε
ࣗຫͰ͖Δٕज़ཁૉΛऔΓೖΕΑ͏ ൃ৴ͯ͠ ڞײΛूΊΔ ࣾͰར༻Ͱ͖ ΔπʔϧΛ࡞Δ ֎෦Ͱൃද͢Δ νϟϨϯδ Ͱ͖Δڥ ͍͚͜͠ΎΜ͍ Ծඪɿ4JNQMFY5PLFO
Ծ௨՟ Λൃߦͯࣾ͠Ͱར༻ͯ͠Β͏ ֎෦Ͱൃද͢Δ Ϣʔεέʔε࠶ཧ "1*Ճ࡞ %#ઃܭमਖ਼ &3$ϑΥʔΫ &3$ &3$ "1*ܦ༝Ͱ௨՟Ճ (Pݴޠॻ͖͑ -BNCEBBTB$PEF 7VFKTͰ8FCը໘࡞ J1BEͰ"3ମݧ 3FWFBMKTεϥΠυͷڞ༗ ٕज़తͳνϟϨϯδཁૉ શମઃܭ ϒϩοΫνΣʔϯ όοΫΤϯυ ϑϩϯτΤϯυ ԾඪɿτʔΫϯൃߦΛϕʔεͱͨ͠ϓϨθϯαϙʔτΞϓϦͷ։ൃ
ൃදऀ༻1$ εΫϦʔϯ Ӿཡ Ө ϓϨθϯςʔλ ௌߨऀ ݱεϥΠυͷϖʔδ͕ ࣗͷεϚϗʹಉظ͞ΕΔ ൃදεϥΠυ ࠷ߴ
͍͍Ͷ ͏ʔΜ ίϝϯτදࣔཝ Ξϯέʔτ εϥΠυ ίϝϯτදࣔཝ <௨ৗεϥΠυ> <Ξϯέʔτ࣌> Ξϯέʔτʹ͑Δͱ τʔΫϯΛड͚औΔ͜ͱ͕Ͱ͖Δ ༻ҙ͞ΕͨίϝϯτϘλϯΛԡ͢͜ͱͰ ϓϨθϯςʔλτʔΫϯΛૹΔ͜ͱ͕Ͱ͖Δ τʔΫϯͷྲྀ௨ྔΛεϥΠυ͝ͱʹूܭ ϑΟʔυόοΫ ϓϨθϯαϙʔτΞϓϦ Ξϯέʔτϖʔδ͕Ө͞ΕΔͱ εϚϗͷ6*͕มԽ ϓϨθϯςʔλͷൃදʹ߹ΘͤͯಠࣗτʔΫϯΛૹΓ߹͏ΞϓϦΛ Πϕϯτग़లʹ͚ͯ࡞
ࣗຫͰ͖Δٕज़ཁૉΛऔΓೖΕΑ͏ ൃ৴ͯ͠ ڞײΛूΊΔ ࣾͰར༻Ͱ͖ ΔπʔϧΛ࡞Δ ֎෦Ͱൃද͢Δ νϟϨϯδ Ͱ͖Δڥ ͍͚͜͠ΎΜ͍ Ծඪɿ4JNQMFY5PLFO
Ծ௨՟ Λൃߦͯࣾ͠Ͱར༻ͯ͠Β͏ ֎෦Ͱൃද͢Δ Ϣʔεέʔε࠶ཧ "1*Ճ࡞ %#ઃܭमਖ਼ &3$ϑΥʔΫ &3$ &3$ "1*ܦ༝Ͱ௨՟Ճ (Pݴޠॻ͖͑ -BNCEBBTB$PEF 7VFKTͰ8FCը໘࡞ J1BEͰ"3ମݧ 3FWFBMKTεϥΠυͷڞ༗ ٕज़తͳνϟϨϯδཁૉ શମઃܭ ϒϩοΫνΣʔϯ όοΫΤϯυ ϑϩϯτΤϯυ ԾඪɿτʔΫϯൃߦΛϕʔεͱͨ͠ϓϨθϯαϙʔτΞϓϦͷ։ൃ
&3$&3$ IUUQTMBCTUJSOFUXPSLEFTJHOPGBHBNJOHXPSMEWJFXUIBUFSDFOBCMFT &3$͕Մೳʹ͢ΔήʔϜԽ͞Εͨੈք؍ Կ͕Ͱ͖ΔΑ͏ʹͳΔ͔ʁ ᶃ ௨՟Λ"1*ܦ༝ͰԿछྨͰൃߦՄೳʹ 4MBDLͷνϟϯωϧຖʹಠࣗ௨՟Λൃߦ ᶄশ߸ΩϟϥΫλʔͳͲҰҙੑͷ͋ΔͷΛ࡞Մೳʹ ྫ͑ੈքʹ͔ͭ͠ଘࡏ͠ͳ͍ʮ4JNQMFY"84.BTUFSʯͳͲͷশ߸Λ࡞ ᶅੜ͞ΕͨᶃͱᶄΛ؆୯ʹަՄೳʹ
4JNQMFY5PLFOΛϕʔε௨՟ͱͯ͠ݖརͷചങ͕Մೳ
ࣗຫͰ͖Δٕज़ཁૉΛऔΓೖΕΑ͏ ൃ৴ͯ͠ ڞײΛूΊΔ ࣾͰར༻Ͱ͖ ΔπʔϧΛ࡞Δ ֎෦Ͱൃද͢Δ νϟϨϯδ Ͱ͖Δڥ ͍͚͜͠ΎΜ͍ Ծඪɿ4JNQMFY5PLFO
Ծ௨՟ Λൃߦͯࣾ͠Ͱར༻ͯ͠Β͏ ֎෦Ͱൃද͢Δ Ϣʔεέʔε࠶ཧ "1*Ճ࡞ %#ઃܭमਖ਼ &3$ϑΥʔΫ &3$ &3$ "1*ܦ༝Ͱ௨՟Ճ (Pݴޠॻ͖͑ -BNCEBBTB$PEF 7VFKTͰ8FCը໘࡞ J1BEͰ"3ମݧ 3FWFBMKTεϥΠυͷڞ༗ ٕज़తͳνϟϨϯδཁૉ શମઃܭ ϒϩοΫνΣʔϯ όοΫΤϯυ ϑϩϯτΤϯυ ԾඪɿτʔΫϯൃߦΛϕʔεͱͨ͠ϓϨθϯαϙʔτΞϓϦͷ։ൃ
Amazon API Gateway Amazon DynamoDB AWS Lambda લճ·ͰͷొαʔϏε ࠓճಋೖͨ͠αʔϏε Amazon
Simple Storage Service (S3) AWS CloudFormation Amazon CloudFront Amazon Simple Storage Service (S3) όοΫΞοϓσʔλͷอଘઌσʔλϨΠΫͱͯ͠ͷར༻ͷΈͳΒͣ ੩తΣϒαΠτͷϗεςΟϯάՄೳɻ ࠓճ7VFKTͷ41"Λ4ʹϗεςΟϯά͢ΔతͰ༻ɻ Amazon CloudFront 4ΛΦϦδϯαʔόͱΈͳ͠Ωϟογϡͨ͠ίϯςϯπΛ৴͢Δɻ $%1$BDIF%JTUSJCVUJPOύλʔϯ AWS CloudFormation (SAM) $MPVE'PSNBUJPOʹΑΓ"84αʔϏε࠶ߏங࣌ͷࣗಈԽɻ -BNCEBͰ࡞ͨ͠"1*ΛΞοϓσʔτ͢Δͱ͖ʹςϯϓϨʔτΛྲྀ͢ɻ $MPVE'PSNBUJPOͷ֦ுͰ͋Δ4". 4FSWFSMFTT"QQMJDBUJPO.PEFM ʹͯهड़ɻ IUUQTRJJUBDPNTIVOQJUFNTFFFFFGF <ࢀߟ>(Pʴ-BNCEBͰ࠷αʔόϨενϡʔτϦΞϧ
7VFKT γϯϓϧ41" εϥΠυ͝ͱͷ ϦΞΫγϣϯΛੵ εϚʔτίϯτϥΫτ ΞΫηε༻ %ZOBNP%# ΞΫηε༻ "3,JU සൃ͢Δ-BNCEBͷσϓϩΠΛ
ίʔυͰཧ "3දࣔ༻ ΤϯυϙΠϯτ ϓϨθϯαϙʔτΞϓϦ ΞʔΩςΫνϟ֓ཁ ,PWBOωοτϫʔΫ τʔΫϯΛ "3Ͱදݱ Amazon Simple Storage Service (S3) Amazon API Gateway Amazon API Gateway AWS Lambda AWS Lambda Amazon DynamoDB Amazon CloudFront &UIFSFVN &3$ʹΑΔ τʔΫϯͷൃߦ ฐࣾಠ࣮ࣗʹΑΔϓϥοτϑΥʔϜ AWS CloudFormation (SAM)
खݩͷεϥΠυ͕εΫϦʔϯͱ࿈ಈ ϥϯμϜʹมΘΔϘλϯΛԡ͠ͳ͕Β ίϝϯτͱτʔΫϯΛૹ৴ ࣾһূΛ͔͟͢ͱ ͦͷਓΛೝࣝͯ͠"3্ʹτʔΫϯߴΛදࣔ ը໘ΛΫϦοΫ͢Δͱ "3্ͰτʔΫϯͷૹ৴͕Ͱ͖Δ ϓϨθϯαϙʔτΞϓϦ "3ΞϓϦ
ݦࡏԽ͢ΔϢʔεέʔεʹඋ͑ͨ ٕज़ࢿ࢈ͷཧΛ͠Α͏ ൃ৴ͯ͠ ڞײΛूΊΔ ࣾͰར༻Ͱ͖ ΔπʔϧΛ࡞Δ ֎෦Ͱൃද͢Δ νϟϨϯδ Ͱ͖Δڥ ͍͚͜͠ΎΜ͍
Ծඪɿ4JNQMFY5PLFO Ծ௨՟ Λൃߦͯࣾ͠Ͱར༻ͯ͠Β͏ ϓϩμΫτԽʹ͚ͯ ৽نࣄۀܭըॻ ن֨MFTTͳΥϨοτ ༷ʑͳ%"QQT։ൃ ଞ௨՟ $*$%උ ೝূೝՄ σʔλੳ ωΠςΟϒΞϓϦ։ൃ ੑೳ 6*69 Γ͍ͨνϟϨϯδཁૉ શମઃܭ ϒϩοΫνΣʔϯ όοΫΤϯυ ϑϩϯτΤϯυ ϞόΠϧ ԾඪɿτʔΫϯൃߦΛϕʔεͱͨ͠ϓϨθϯαϙʔτΞϓϦͷ։ൃ ඪɿϓϩμΫτԽʹ͚ٕͨज़ཧ
AWS Cloud9 AWS CodeBuild AWS CodeCommit AWS CodePipeline AWS Lambda
Amazon API Gateway Α͘ར༻͢ΔαʔϏε AWS Cloud9 &$্Ͱ։ൃڥΛఏڙɻλʔϛφϧ͕ηοτͰ͍͍ͯΔɻ Ͳͷ͔ΒͰಉ͡։ൃڥ͕ϒϥβΛ։͚ͩ͘Ͱ༻ҙ͞Ε͍ͯΔͨΊ ߹ʹΑͬͯ%PDLFSͰ։ൃڥΛἧ͑ΔΑΓָɻ AWS CodeCommit -BNCEBͷιʔείʔυཧ$PEF$PNNJU্Ͱཧɻ ϓϧϦΫΤετɾίϛοτϏδϡΞϥΠβʔͳͲΛ(6*Ͱఏڙ͓ͯ͠Γ บ͋Δͷͷ(JU)VCͱͦΕ΄Ͳେࠩͳ͍༻ײͰར༻Ͱ͖Δɻ AWS CodePipeline AWS CodeBuild $MPVE'PSNBUJPO4".ͷίϚϯυͰ-BNCEB"1*(BUFXBZΛ࡞͢Δɻ lJOTUBMMz lQSF@CVJMEz lCVJMEzͳͲϑΣʔζຖʹ࣮ߦ͢ΔίϚϯυΛάϧʔϓԽ͠ ඞཁͳϞδϡʔϧΠϯετʔϧɺςετɺϏϧυΛ࣮ߦͤ͞Δɻ $*$%ύΠϓϥΠϯΛ(6*Ͱఏڙ͢Δɻ ιʔείʔυཧͱͯ͠$PEF$PNNJUΛબ͢ΔͱɺಛఆϒϥϯνʹϚʔδ͞Εͨ߹ ύΠϓϥΠϯ͕ىಈ͠ɺޙଓͷ$PEF#VJME͕࣮ߦ͞ΕΔɻ
Α͘ར༻͢ΔαʔϏε Amazon Cognito AWS Amplify AWS AppSync AWS AppSync ओʹ(SBQI2-αʔόͱͯ͠ར༻ɻ
-BNCEB%ZOBNP%#&MBTUJD4FBSDI4FSWJDFΛޙଓͰϑοΫͰ͖Δɻ ෳͷ%ZOBNP%#ςʔϒϧʹ·͕ͨΔॲཧՄೳɻ AWS Amplify ϑϩϯτΤϯυ༻ͷ$*$%ͱͯ͠"NQMJGZ$POTPMFΛ༻ɻ 4ͷΞοϓϩʔυ͓Αͼ$MPVE'SPOUͰͷ৴ઃఆ͕লུͰ͖Δɻ "NQMJGZ'SBNFXPSLͰ"84αʔϏεͷΞΫηεΛ؆ུԽ͠ "QQ4ZOD$PHOJUPͷΞΫηεΛγϯϓϧʹ͢Δɻ Amazon Cognito ೝূαʔϏεͱͯ͠ར༻ɻ ϢʔβσʔλΛཧ͠ɺೝূޭ࣌ʹϢʔβใؚ͕·Εͨ+85Λฦ͢ɻ *".ͱΈ߹ΘͤΔ͜ͱͰೝՄ੍ޚ͢Δ͜ͱՄೳɻ IUUQTRJJUBDPNTIVOQJUFNTEBEGBEEGG <ࢀߟ> 7VFKT "NQMJGZΛۦ͢ΕϞμϯͳ8FCΞϓϦΛͰެ։Ͱ͖Δ
3FNJY *%& ΞʔΩςΫνϟ֓ཁ 4MBDLΠϕϯτ औಘ༻ %ZOBNP%# ΞΫηε༻ εϚʔτίϯτϥΫτ ΞΫηε༻ 4MBDLͷ
3&45"1*Λड͚Δ ೝূ ϑϩϯτΤϯυ༻$*$% ։ൃϑϨʔϜϫʔΫ σϓϩΠ 4MBDL &3$ 7VFKT γϯϓϧ41" Amazon API Gateway AWS Lambda AWS Lambda Amazon DynamoDB Amazon DynamoDB &3$9999 AWS AppSync AWS Amplify Amazon Cognito AWS Lambda AWS Lambda AWS Cloud9 AWS CodePipeline 'MVUUFS Amazon CloudWatch AWS CloudFormation AWS CloudTrail -BNCEB'VODUJPOT
ݱࡏͷ։ൃεΩʔϜ ࣮ݧతʹ ϓϩτλΠϓͷ࡞ ࣾһ Ϣʔβ ੜ ར༻ ٕज़ࢿ࢈ͷੵ 'MVUUFS 7VFKT
4MBDL 6OJUZ "3,JU &UIFSFVN (Pݴޠ "84 هࣄʹ·ͱΊΔ ༻్ผʹϦϙδτϦΛ࡞ ֤ΞϓϦ "84ʹݶΒͣ෯͍ྖҬΛࢹʹೖΕͯ׆ಈத
αʔόϨεͬͯԿ͔Β࢝ΊΕྑ͍ͷ͔Θ͔Βͳ͍ ͦ͠͏ͩࣗ͠ʹԕ͍ੈք ࠔͬͨ͜ͱ͕͋Ε 4/4ܦ༝Ͱ͓ؾܰʹ͝࿈བྷ͍ͩ͘͞ʂ αʔόϨεͦ͜؆୯ʹ͡ΊΒΕΔʂ ·͚ͣͭͩ "1*Λ࣮͢Δͱ͜Ζ͔Βελʔτͯ͠Έ·͠ΐ͏
νʔϜͷࠓޙ ৽ͨͳࣄۀΛੜΈग़͢ϑΣʔζ ϑϩϯτ͔ΒόοΫ·Ͱ ྖҬΛݶఆͤͣ׆༂͍ͨ͠ΤϯδχΞؒΛืूத ͓ؾܰʹ͝࿈བྷ͍ͩ͘͞ʂ
ຊ͋Γ͕ͱ͏͍͟͝·ͨ͠ 2JJUB 5XJUUFS ຊࢿྉͷ༰4/4Ͱެ։͠·͢