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
150
日々の生活に緊張感を! Flutterでつくる寿命タイマー / The LifeTimer created by Flutter
shunp
1
810
This is My Architectureの発表感想とサーバレスアーキテクチャ
shunp
1
220
Other Decks in Programming
See All in Programming
CSC509 Lecture 08
javiergs
PRO
0
100
Vitest Browser Mode への期待 / Vitest Browser Mode
odanado
PRO
2
1.7k
LLM生成文章の精度評価自動化とプロンプトチューニングの効率化について
layerx
PRO
2
130
Kotlin2でdataクラスの copyメソッドを禁止する/Data class copy function to have the same visibility as constructor
eichisanden
1
110
Tuning GraphQL on Rails
pyama86
2
1k
プロジェクト新規参入者のリードタイム短縮の観点から見る、品質の高いコードとアーキテクチャを保つメリット
d_endo
1
1k
Android 15 でアクションバー表示時にステータスバーが白くなってしまう問題
tonionagauzzi
0
130
僕がつくった48個のWebサービス達
yusukebe
18
17k
讓數據說話:用 Python、Prometheus 和 Grafana 講故事
eddie
0
350
Dev ContainersとGitHub Codespacesの素敵な関係
ymd65536
1
120
【Kaigi on Rails 2024】YOUTRUST スポンサーLT
krpk1900
1
240
約9000個の自動テストの 時間を50分->10分に短縮 Flakyテストを1%以下に抑えた話
hatsu38
23
10k
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Statistics for Hackers
jakevdp
796
220k
Being A Developer After 40
akosma
86
590k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
9
680
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
290
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
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Ͱެ։͠·͢