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
Amplify Meetup #01
Search
Taewoo Kim
July 31, 2020
Programming
6.7k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Amplify Meetup #01
AWS Amplify Meetup #01 で LT 発表したスライドです。
Taewoo Kim
July 31, 2020
More Decks by Taewoo Kim
See All by Taewoo Kim
AWS Lambda 내부동작 파헤치기
twkiiim
1
3k
Amazon VPC Deep Dive: ENI 를 알면 VPC 가 보인다
twkiiim
2
5.9k
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기
twkiiim
0
450
Amazon EventBridge vs Amazon SNS
twkiiim
0
2.6k
活用パターンで学ぶGraphQL
twkiiim
0
1.6k
AWS 기반 서버리스 아키텍쳐 톺아보기
twkiiim
0
2.3k
AWS 기반 서버리스 아키텍쳐 톺아보기
twkiiim
1
3.5k
AppSync를 활용한 리얼타임 서버리스 아키텍쳐
twkiiim
0
4.7k
[LINE API × Tech API Vol. 2 Powered by AWS] サーバーレスでの分散トランザクション
twkiiim
0
2.6k
Other Decks in Programming
See All in Programming
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
350
Dockerfile CMD for Node.js
grazie1999
0
120
リアルな遅延を測る仕様
kota_yata
1
120
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
1
770
PyConJP2026_wat_Python × Signal Processing: How to Draw Pictures with Sound Using Spectrogram Art
wat
0
270
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
360
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.5k
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
500
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
180
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
400
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
240
言葉の格闘技のススメ~紙とペンと言葉から始める、キャリアの描き方~
progresscicada
2
170
Featured
See All Featured
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
480
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.8k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
First, design no harm
axbom
PRO
2
1.3k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
780
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
A designer walks into a library…
pauljervisheath
211
24k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
480
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Transcript
AmplifyͷAPIػೳΛ͏ࡍͷTips Amplify Meetup #01 LT ηογϣϯ #05
ࣗݾհ • Taewoo Kim (ΩϜςʣɺؖࠃਓͰ͢ʂ • AWS Solutions Architect at
• 2020 APN AWS Top Engineers ʹબ • ͖ͳAWSαʔϏε AWS AppSync ͱ AWS Amplify
ຊηογϣϯͷର • AWS Amplify API ػೳΛҰͰ࣮ࡍʹࢼͯ͠Έͨํ • AWS Amplify νϡʔτϦΞϧΛΫϦΞʔͨ͠ํ
• AWS Amplify Λຊ൪ڥͰಋೖ͍ͨ͠ͱࢥ͏ํ
ૣͰ͕͢
օ͞Μ Amplifyͳͥͬͯ·͔͢ʁ
AmplifyΛ͏ཧ༝ • ָ͍͔͠Β • όοΫΤϯυଆͷ࣮ศརͩ͠ɺϑϩϯτଆͷָ࣮ʹͳΔ͔Β •ϏδωεΞΠσΟΞΛ۩ମԽͨ͠ॳظMVPΛ രͰ࣮Ͱ͖Δ͔Βʂ
AmplifyΛ͏ཧ༝ • ָ͍͔͠Β • όοΫΤϯυଆͷ࣮ศརͩ͠ɺϑϩϯτଆͷָ࣮ʹͳΔ͔Β •ϏδωεΞΠσΟΞΛ۩ମԽͨ͠ॳظMVPΛ രͰ࣮Ͱ͖Δ͔Βʂ
AmplifyΛ͏ཧ༝ • ָ͍͔͠Β • όοΫΤϯυଆͷ࣮ศརͩ͠ɺϑϩϯτଆͷָ࣮ʹͳΔ͔Β •ϏδωεΞΠσΟΞΛ۩ମԽͨ͠ॳظMVPΛ രͰ࣮Ͱ͖Δ͔Βʂ ݸਓతʹ͜ͷཧ༝(↑)͕Ұ൪େࣄͩͱࢥ͍·͢
AmplifyΛ͏ཧ༝ • ָ͍͔͠Β • όοΫΤϯυଆͷ࣮ศརͩ͠ɺϑϩϯτଆͷָ࣮ʹͳΔ͔Β •ϏδωεΞΠσΟΞΛ۩ମԽͨ͠ॳظMVPΛ രͰ࣮Ͱ͖Δ͔Βʂ ݸਓతʹ͜ͷཧ༝(↑)͕Ұ൪େࣄͩͱࢥ͍·͢ MVP࣮ͰAmplify͕Ұ൪ʹཱͭػೳ API
Amplify API Λ͍࢝Ίͨࡍʹ ඞ͓͍ͣͬͯͨํ͕ྑ͍ ϊϋΛڞ༗͠·͢
όοΫΤϯυϓϩδΣΫτ ϑϩϯτ͔Βͨ͠ํ͕ྑ͍
Ϟνϕʔγϣϯ • Amplify ެࣜυΩϡϝϯτΛݟΔͱɺϑϩϯτΤϯυϓϩδΣΫτͰ όοΫΤϯυϓϩδΣΫτΛҰॹʹཧ͢Δํ๏Λհ͍ͯ͠·͢ɻ • ͭ·ΓɺϑϩϯτΤϯυϓϩδΣΫτͷதʹɺamplify/ ͱ͍͏ϑΥ ϧμʔ͕ଘࡏ͢Δͱ͍͏ܗʹͳΓ·͢ɻ •
Ͱ͕͢ɺෳͷϓϩδΣΫτͰߏ͞Εͨ߹ɺ֤ϓϩδΣΫτʹ όοΫΤϯυઃఆΛೖΕΔͷ͕ਖ਼͍͠ͷ͔ɺͱ͍͏Έ͕͔ͪͱࢥ͍ ·͢ɻ
Ϟνϕʔγϣϯ • Amplify ެࣜυΩϡϝϯτΛݟΔͱɺϑϩϯτϓϩδΣΫτͰόο ΫΤϯυϓϩδΣΫτΛҰॹʹཧ͢Δํ๏Λհ͍ͯ͠·͢ɻ • ͭ·ΓɺϑϩϯτΤϯυϓϩδΣΫτͷதʹɺamplify/ ͱ͍͏ ϑΥϧμʔ͕ଘࡏ͢Δͱ͍͏ܗʹͳΓ·͢ɻ •
Ͱ͕͢ɺෳͷϓϩδΣΫτͰߏ͞Εͨ߹ɺ֤ϓϩδΣΫτ ʹόοΫΤϯυઃఆΛೖΕΔͷ͕ਖ਼͍͠ͷ͔ɺͱ͍͏Έ͕͔ͪͱ ࢥ͍·͢ɻ ͏Μ….. όοΫΤϯυผ్Ͱཧ͠·͠ΐ͏ʂ
όοΫΤϯυϓϩδΣΫτΛ͢Δ͜ͱͰಘΔϝϦοτ 1. όοΫΤϯυͱϑϩϯτͷSeparation of ConcernΛ࣮ݱ͍͢͠ 2. ෳͷϝϯόʔ͕Ұॹʹ࡞ۀ͘͢͠ͳΔ 3. কདྷతʹόοΫΤϯυϓϩδΣΫτΛϚΠάϨʔγϣϯ͢Δʹ ͬͱָʹͳΔ
όοΫΤϯυͱϑϩϯτΤϯυ͠·͠ΐ͏ʂ https://dev.classmethod.jp/articles/amplify-tips-series-1/
GraphQL Schemaͷ type ʹ @model Λ͚ͳ͔ͬͨ࣌ͷ ҙ͖͢͜ͱ
GraphQL Schemaͷ type ʹ @model Λ͚ͳ͔ͬͨ࣌ͷҙ͖͢͜ͱ https://dev.classmethod.jp/articles/amplify-tips-series-3/
ͦͦ @model Λͳ͚ͥͭͳ͍ΜͰ͔͢ʁʁ @model σΟϨΫςΟϒΛ͚ͭΔ͜ͱͷϝϦοτ 1. σʔλιʔε(DynamoDB) Λੜ͠ɺ AppSync ͱ࿈ܞͯ͘͠ΕΔɻ
2. Create/Read/Update/Delete/List ΦϖϨʔγϣϯΛಈ࡞ͤ͞ΔͨΊͷ Query Mutation ͱɺͦΕͧΕ͕ඞཁͱ͢Δ input ͷλΠϓΛࣗಈͰੜͯ͘͠ΕΔɻ 3. ੜ͞Εͨ Query MutationɺλΠϓϑΟʔϧυresolverͷͨΊͷ Request/Response Mapping TemplatesΛࣗಈͰੜͯ͘͠ΕΔɻ 4. ͜ͷΑ͏ʹੜ͞Εͨ CRUD(L) API ΛɺΫϥΠΞϯτιʔείʔυଆͰΞΫηεͰ͖Δ API ϥΠϒϥϦʔΛࣗಈͰੜͯ͘͠ΕΔɻ (amplify codegen)
@connection ͱ depth ͋ͨΓ • యܕతͳΞϓϦσʔλεΩϚʔͰඞཁͳλΠϓ͕ेʙඦ • λΠϓ͝ͱͷؔੑΛ࡞ΔͨΊʹ @connection ͕ඞཁ
• codegen ͷ depth ΛݮΒ͢··ҡ࣋͢ΔͨΊɺˏmodel Λফ͢ • ݁Ռతʹ @connection ແ͠ͰσʔλʹΞΫηεՄೳ
@model Λ͚ͭͳ͔ͬͨࡍͷҙʁ • @model Λ͚ͭͳ͍ͱɺͦͷ DynamoDB ςʔϒϧ͕ੜ͞Εͳ͍ • ଞͷ type
ͷςʔϒϧʹ JSON ܗࣜͰอଘ͞ΕΔ • DynamoDB JSON ෦ͷϑΟʔϧυʹରͯ͠ͷ Query αϙʔτ͠ ͯ͘Ε͍ͯͳ͍
@model Λ͚ͭͳ͔ͬͨࡍͷҙʁ • ͳͷͰɺdepth ͋ͨΓͷΈͰ ˏmodel Λ͚ͭͨ͘ͳ͍ͳΒɺ depth ઃఆؾʹͤͣɺ query
ίʔυΛ࡞͢Εྑ͍ https://dev.classmethod.jp/articles/amplify-tips-series-4/
Custom Resolver ͷ໋໊نଇΛ ઌʹܾΊΑ͏
Custom Resolver ͕ඞཁͷ߹ͬͯʁ • ECαΠτͷจAPIɿ - ܾࡁαʔϏεͱจαʔϏεͷ࿈ܞ - ใαʔϏεͱσϦόϦʔαʔϏε -
શͯΛ߹ΘͤͯτϥϯβΫγϣϯॲཧ • SNSͷྑ͍Ͷʂɿ - ୭͔ྑ͍Ͷʂ͔ͨ͠ʢϢʔβʔςʔϒϧʣ - ྑ͍Ͷʂͷτʔλϧ - ߘσʔλςʔϒϧ - શͯ߹ΘͤͯτϥϯβΫγϣϯॲཧ
schema.graphql
custom_resolver.yaml 1 2 3
custom_resolver.yaml
custom_resolver.yaml
custom_resolver.yaml
VTL ϑΝΠϧ Query.myCustomLambdaExecution.req.vtl
Custom Resolver ʹ͍ͭͯͷࢲͷߟ͑ • ϓϩδΣΫτͰඞཁͳ Custom Resolver ͕ݸఔͳΒແ͠ • ϓϩδΣΫτͰඞཁͳ
Custom Resolver ͕ेݸҎ্ͳΒɺ Custom Resolver ͷཧίετ։ൃίετ͕ߴ͘ͳΔ • ͬͱָʹ͢Δʹ Serverless Framework ͷ serverless-appsync- plugin Λར༻ͯ͠ AppSync Λߏங͢Δ → amplify codegen Ͱ͖Δ͠ɺcustom resolver ͷָ࣮ʹͳΔ → ͰɺAmplify ͷ σΟϨΫςΟϒ͑ͳ͍
ϒϩάಡΜͰΈ͍ͯͩ͘͞ :D
https://dev.classmethod.jp/tag/aws-amplify/
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ