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
1
6.5k
Amplify Meetup #01
AWS Amplify Meetup #01 で LT 発表したスライドです。
Taewoo Kim
July 31, 2020
Tweet
Share
More Decks by Taewoo Kim
See All by Taewoo Kim
AWS Lambda 내부동작 파헤치기
twkiiim
1
2.7k
Amazon VPC Deep Dive: ENI 를 알면 VPC 가 보인다
twkiiim
2
5.6k
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기
twkiiim
0
410
Amazon EventBridge vs Amazon SNS
twkiiim
0
2.3k
活用パターンで学ぶGraphQL
twkiiim
0
1.4k
AWS 기반 서버리스 아키텍쳐 톺아보기
twkiiim
0
2.1k
AWS 기반 서버리스 아키텍쳐 톺아보기
twkiiim
1
3.1k
AppSync를 활용한 리얼타임 서버리스 아키텍쳐
twkiiim
0
4.5k
[LINE API × Tech API Vol. 2 Powered by AWS] サーバーレスでの分散トランザクション
twkiiim
0
2.4k
Other Decks in Programming
See All in Programming
バイブコーディング超えてバイブデプロイ〜CloudflareMCPで実現する、未来のアプリケーションデリバリー〜
azukiazusa1
2
680
おやつのお供はお決まりですか?@WWDC25 Recap -Japan-\(region).swift
shingangan
0
150
AI駆動のマルチエージェントによる業務フロー自動化の設計と実践
h_okkah
0
280
テストから始めるAgentic Coding 〜Claude Codeと共に行うTDD〜 / Agentic Coding starts with testing
rkaga
16
5.9k
CIを整備してメンテナンスを生成AIに任せる
hazumirr
0
140
「App Intent」よくわからんけどすごい!
rinngo0302
1
120
ご注文の差分はこちらですか? 〜 AWS CDK のいろいろな差分検出と安全なデプロイ
konokenj
4
640
Yes, You Can Work on Rails & any other Gem
kaspth
0
110
Advanced Micro Frontends: Multi Version/ Framework Scenarios @WAD 2025, Berlin
manfredsteyer
PRO
0
430
NEWT Backend Evolution
xpromx
1
140
Android 16KBページサイズ対応をはじめからていねいに
mine2424
0
620
11年かかって やっとVibe Codingに 時代が追いつきましたね
yimajo
0
140
Featured
See All Featured
Become a Pro
speakerdeck
PRO
29
5.4k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.5k
Thoughts on Productivity
jonyablonski
69
4.7k
How GitHub (no longer) Works
holman
314
140k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
4 Signs Your Business is Dying
shpigford
184
22k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.7k
The Language of Interfaces
destraynor
158
25k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Statistics for Hackers
jakevdp
799
220k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
282
13k
Git: the NoSQL Database
bkeepers
PRO
431
65k
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/
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ