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
AWSの研修環境構築のためにAWS CDKとAmplify Console使った話 / jaws sonic 2020
Search
kasacchiful
September 12, 2020
Programming
2
1.4k
AWSの研修環境構築のためにAWS CDKとAmplify Console使った話 / jaws sonic 2020
JAWS SONIC 2020 & MIDNIGHT JAWS 2020 で、発表した資料です。
kasacchiful
September 12, 2020
Tweet
Share
More Decks by kasacchiful
See All by kasacchiful
AWS IoT 1-clickがサービス終了するので、SORACOMに移行した話 / 20240518-jawsug-niigata-iotlt-niigata
kasacchiful
0
100
AWS Application Composerで始める、 サーバーレスなデータ基盤構築 / 20240406-jawsug-hokuriku-shinkansen
kasacchiful
1
400
AWSの各種サービス紹介と活用方法 − AI・ML活用デモを交えて − / 20231208aws-aiml-seminar
kasacchiful
0
440
Amazon Rekognition デモ / 20231208-aws_seminar-01-rekognition-demo
kasacchiful
0
450
Amazon Lookout for Vision デモ / 20231208-aws_seminar-02-lookout-vision-demo
kasacchiful
0
440
Python機械学習勉強会in新潟のロゴが無いので、生成AIで作ってみましょう / osc2023niigata
kasacchiful
0
380
Amazon Bedrock概要と生成AIの基礎 / 20231118-jawsug-niigata-15
kasacchiful
0
93
生成AIと自然言語処理の基礎 / 20231111-pyml-niigata-18.pdf
kasacchiful
0
180
最近やってる、サーバーレスでデータ分析基盤を構築している話 / 20230916-nds63
kasacchiful
0
88
Other Decks in Programming
See All in Programming
DynamoDB コスト最適化っぽいことの基本 with Terraform
kuro_kurorrr
2
250
How to use Macrobenchmark
veronikapj
0
160
君たちはどうコードをレビューする (される) か / 大吉祥寺.pm
utgwkk
15
8.5k
Rubyのパフォーマンスプロファイリングの改善 / Enhancing performance profiling for Ruby
osyoyu
1
410
APIのない大学ログインWebサービスをWKWebViewとJavaScriptでアプリ化した話
akidon0000
1
330
CSC307 Lecture 14
javiergs
PRO
0
220
SDCon2024: Enabling DevOps and Team Topologies thru architecture: architecting for fast flow
cer
PRO
0
780
Composing an API the *right* way (Droidcon Berlin 2024)
zsmb
1
450
CSC307 Lecture 07
javiergs
PRO
0
220
ピグパーティにおけるMongoDB CommunityバージョンからAtlasへの移行事例
10969hotaka
0
130
しくじり先生 Image Matching Challenge 2024 編
goosehaaan
0
810
DMMプラットフォームにおけるTiDBの導入から運用まで
pospome
7
3k
Featured
See All Featured
Practical Orchestrator
shlominoach
185
10k
How to Think Like a Performance Engineer
csswizardry
4
590
Done Done
chrislema
179
15k
The Invisible Side of Design
smashingmag
294
50k
Rails Girls Zürich Keynote
gr2m
93
13k
Six Lessons from altMBA
skipperchong
24
3.2k
Creatively Recalculating Your Daily Design Routine
revolveconf
214
11k
VelocityConf: Rendering Performance Case Studies
addyosmani
321
23k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
78
15k
The Art of Programming - Codeland 2020
erikaheidi
48
13k
Debugging Ruby Performance
tmm1
71
11k
Optimising Largest Contentful Paint
csswizardry
18
2.6k
Transcript
AWSͷݚमڥߏஙͷͨΊʹ AWS CDKͱAmplify Console ͬͨ Hiroshi Kasahara (JAWS-UG Niigata) JAWS
SONIC 2020 & MIDNIGHT JAWS 2020 2020/09/12 Sat. 21:00
• ৽ׁࢢࡏॅ • ݩSIerۈͷΤϯδχΞ • ͖ͳݴޠ: • ίϛϡχςΟ: • JAWS-UG
৽ׁ • JaSST Niigata ࣮ߦҕһձ • ASTER ਖ਼ձһ • etc. Hiroshi Kasahara @kasacchiful @kasacchiful 2
JAWS-UG Niigata • 201811݄ʹ্ཱͪ͛ • ৽ׁݝʹ3ͭ͋Δࢧ෦ͷ1ͭ • ৽ׁͱ͍͑ɺञ • ࠙ձ͕ʮʹ͍͕ͨञͷਞʯͷ࣌
• ΦϑϥΠϯ։࠵ͷࡍʹɺ͓͍͍͓͠ञ ͱ͓৯ࣄΛᅂΈʹɺͥͻ৽ׁ͓ӽ͘͠ ͍ͩ͞ 3
͢͜ͱ • ࣾͷݚमڥΛߏங͢ΔͨΊʹɺAWS CDKͱAWS Amplify ConsoleΛ͍·ͨ͠ • AWS CDKͱAWS Amplify
Consoleͷબఆཧ༝ • AWS CDKͱAWS Amplify Consoleͷݸਓత༻ײ 4
͞ͳ͍͜ͱ • AWS CDKͷৄࡉ • AWS Amplify Consoleͷৄࡉ • ࣮ࡍॻ͍ͨίʔυͷઆ໌
5
ͬͨ͜ͱ • ݚमͰ༻͢ΔIAMϢʔβVPCͳͲͷॳظઃఆ • AWS CDKͰఆٛ • ݚमͰ༻͢ΔϋϯζΦϯࢿྉ • docsifyΛ༻ͯ͠هड़͠ɺAmplify
ConsoleͰՔಇ 6
എܠ • ࠓɺࣾͷAWSݚमΛ͞Ε·ͨ͠ • ΄ͱΜͲͷࣾһAWS৮ͬͨ͜ͱ͕ͳ͍ • ʮAWSͱԿ͔ʯΛͬͨޙʹʮϋϯζΦϯʯ͕ඞཁͩͳ • ʮϋϯζΦϯʯͲ͏ͬͯΖ͏͔ͳʁ 7
ϋϯζΦϯͷ༰ • 2019ʹʮJAWS-UG৽ׁʯͱ ʮJAWS-UG৽ׁݝʯͰ࣮ࢪͨ͠ɺ EC2ͱS3ͷϋϯζΦϯΛݩʹߏɻ • ಄30આ໌ͷޙɺ2࣌ؒͰ WordPressαΠτߏங·ͰҰ௨ΓͰ͖ ΔΑ͏ʹɻ •
ૣ͘ऴΘͬͨਓ͚ʹΦϓγϣϯϋϯ ζΦϯΛ༻ҙɻ 1. Amazon EC2 • ΠϯελϯεىಈɺΠϯελϯελΠϓมߋɺ Πϯελϯεআ 2. Amazon S3 • όέοτ࡞ɺΦϒδΣΫτอଘɺόέοτ আɺެ։ઃఆɺ੩తWebαΠτϗεςΟϯά 3. WordPressαΠτߏங • Marketplace AMIΛ༻ͯ͠Πϯελϯεىಈɺ ը૾ϑΝΠϧΛS3ʹอଘͯ͠৴ 4. Φϓγϣϯ • WordPressͷMySQLσʔλΛRDSʹҠߦ • ALBͰෛՙࢄ • ΦʔτεέʔϦϯάઃఆ 8
ϋϯζΦϯڥ • ࢀՃऀຖͷAWSΞΧϯτແ͍ɻ • ϋϯζΦϯ༻ͷAWSΞΧϯτ1ͭʹ ରͯ͠ɺࢀՃऀͷIAMϢʔβVPC ͳͲΛ༻ҙɻ • AWSϚωδϝϯτίϯιʔϧͰૢ࡞ •
EC2ͷϩάΠϯSystems Manager ͷηογϣϯϚωδϟʔͰ࣮ࢪ 9
ϋϯζΦϯڥ 10 WordPressͷEC2ΠϯελϯεΛىಈͤ͞ ͯɺը૾ϑΝΠϧΛS3ʹอଘɾ৴Ͱ͖Δ ·ͰΛඪʹϋϯζΦϯ࣮ࢪ ΦϓγϣϯϋϯζΦϯ·Ͱ࣮ࢪ͢Δͱɺ͜͜ ·ͰͰ͖Δ
ϋϯζΦϯ࣮ࢪ͢Δʹ͋ͨͬͯͷ՝ (1) 1. ࣾͷωοτϫʔΫڥͰɺEC2ʹϩάΠϯͰ͖ͳ͍ • ձࣾϦϞʔτϫʔΫͰͳ͘ɺΈͳ͞ΜΦϑΟεϫʔΫ • Ϛωδϝϯτίϯιʔϧ৮ΕΔ͕ɺSSH/RDP͚ͩͰͳ͘SSMηογϣ ϯϚωδϟʔϒϩοΫ͞ΕΔ 2.
͍ձٞࣨͰɺͨ͘͞ΜͷਓΛೖΕͨ͘ͳ͍ • ࣮ࡍͷϋϯζΦϯࢀՃऀߜΓ͍ͨ • Ͱɺͨ͘͞ΜͷਓʹࢀՃͯ͠΄͍͠δϨϯϚ 11
ϋϯζΦϯ࣮ࢪ͢Δʹ͋ͨͬͯͷ՝ (2) 3. ϋϯζΦϯͷॳظઃఆɺࢀՃਓʹԠͯ͡ਝʹ࡞Γ͍ͨ • 3࣌ؒͷஸͳͷͰɺ࣌ؒΛ֬อ͔ͯ͠ΒࢀՃਃࠐʹͳΔͣ • ͭ·Γɺ։࠵લʹ૿͑ΔՄೳੑେ 4. ։࠵ޙʹ෮श͢ΔͨΊͷڥΛ༩͍͑ͯ͋͛ͨ
• श͏ΑΓ׳ΕΖ • ܁Γฦ͠AWSΛ৮ͬͨํ͕ʹ͘ • ͰࣾωοτϫʔΫ͔ΒAWS৮Δͷ͍͠ 12
՝ͷରԠ (1) 1. ࣾͷωοτϫʔΫڥͰɺEC2ʹϩάΠϯͰ͖ͳ͍ • ձʹϋϯζΦϯઐ༻ΞΫηεϙΠϯτ͕͋ΔͷͰɺҰ࣌తʹ༗ޮԽ͢ Δ 2. ͍ձٞࣨͰɺͨ͘͞ΜͷਓΛೖΕͨ͘ͳ͍ •
ΦϯϥΠϯͰࢹௌͰ͖ΔΑ͏ʹ͢Δ (ฐࣾͰɺMicrosoft Teams) • ϋϯζΦϯ࣌ؒଳͰɺࢲͷϋϯζΦϯ༰ͷϥΠϒߏஙΛ৴ • ձࢀՃऀ͚ͷϋϯζΦϯαϙʔτɺผͷਓʹ͓ͤͨ͠ 13
՝ͷରԠ (2) 3. ϋϯζΦϯͷॳظઃఆɺࢀՃਓʹԠͯ͡ਝʹ࡞Γ͍ͨ • AWS CDKͰઃఆͰ͖ΔΑ͏ʹͨ͠ (ࣾNW͔ΒCDKίϚϯυͰΞΫηεͰ͖ͨ) 4. ։࠵ޙʹ෮श͢ΔͨΊͷڥΛ༩͍͑ͯ͋͛ͨ
• ϋϯζΦϯࢿྉΛAWS Amplify ConsoleͰެ։͠ɺࣗͰ෮शͰ͖ΔΑ͏ʹͨ͠ • ॳظઃఆCDKͰग़ྗͨ͠CloudFormationςϯϓϨʔτͰઃఆͰ͖ΔΑ͏ʹͨ͠ • ࢲͷϋϯζΦϯϥΠϒߏங৴ಈըɺը͢ΔͱࣗಈతʹMicrosoft Streamsʹ อଘ͞ΕΔͷͰɺࣗͰϥΠϒߏஙಈըΛݟͳ͕ΒߏஙͰ͖ΔΑ͏ʹͨ͠ 14
AWS CDK 15
AWS CDK • AWSͷϦιʔεΛϓϩάϥϛϯάݴޠͰఆٛͯ͠ϓϩϏδϣχϯά • CloudFormationͷϥούʔ 16
ͳͥAWS CDKΛͬͨͷ͔ʁ ಉ͡ઃఆΛ܁Γฦ͠࡞Γ͍ͨ • CloudFormationΛॻ͘ͷ(ݸਓతʹ)πϥΠ • CDKͰϧʔϓͤ͞ΕOKͩ͠ɺ(ݸਓతʹ)ײతʹ͔͚Δ ීஈ͍׳Ε͍ͯΔϓϩάϥϛϯάݴޠͷίʔυͰॻ͚Δ/ಡΊΔ҆৺ײ • CloudFormationͷYAML/JSONϑΝΠϧΑΓɺCDKͷPythonίʔυͷํ͕ɺ(ݸਓతʹ)ಡΈ
͍͢ CloudFormationςϯϓϨʔτग़ྗͰ͖Δ • ࣗݾֶश࣌ʹɺݸਓͷAWSΞΧϯτͰॳظઃఆΛ࠶ݱͰ͖Δ 17 ͜ΕͰࢀՃਓɺ ҰؾʹVPCͳͲͷॳظઃఆ͕Ͱ͖Δʂ
αʔϏεͷ੍ݶʹؾΛ͚ͭΔ AWSͷ֤छαʔϏεͷ੍ݶΛ֬ೝ͓ͯ͘͜͠ͱɻ ࠓճ্ݶ؇ͷਃΛͨ͠ͷ • 1Ϧʔδϣϯ͋ͨΓͷVPCͷ • 1Ϧʔδϣϯ͋ͨΓͷΠϯλʔωοτήʔτΣΠͷ 18
αʔϏεΫΥʔλ ʮࢲͷαʔϏεΫΥʔλʯ͔Βɺ্ݶ؇ͷਃͰ͖·͢ɻ • ʮطଘͰಈ͍͍ͯΔͷͷʯΛؚΊΔ͜ͱΛΕ͕ͪͳͷͰɺؾΛ͚͓ͭͯ͜͏ • ྫ: σϑΥϧτVPC • VPCͷΛʮ10ʯ࡞Γ͍͔ͨΒʮ10ʯͰਃ͢ΔͱɺσϑΥϧτVPCΛؚΊ ͯͳ͍ͷͰɺVPC1ͭ࡞Εͳ͍
ਃͨ͠ཌ͘Β͍ʹɺ্ݶ؇͕ө͞Ε·ͨ͠ɻ 19
CDKͰઃఆͨ͠ͷ ࢀՃऀ͋ͨΓ • VPC: 1ͭ • ΠϯλʔωοτήʔτΣΠ: 1ͭ (VPCʹΞλον) •
αϒωοτ: 4ͭ • publicαϒωοτɺIGWͷϧʔςΟϯά Ճ • ηΩϡϦςΟάϧʔϓ: 2ͭ (web ͱ db) • IAMϢʔβ • ڞ௨ͷIAMάϧʔϓʹՃ 20 ࢀՃऀڞ௨ • IAMάϧʔϓ • ֤छϙϦγʔΛΞλον • IAMϩʔϧ • EC2ʹʮAmazonEC2RoleforSSMʯͱ ʮAmazonS3FullAccessʯΛڐՄ͢ΔͨΊ • ΠϯελϯεϓϩϑΝΠϧͷ࡞ΛΕͣʹ ࠓճPythonͰॻ͖·ͨ͠
ߏஙྫ (IAMϢʔβͱIAMάϧʔϓ) # IAM Group iam_group = iam.Group(self, "HandsonGroup", group_name
= "HandsonGroup", managed_policies = [ iam.ManagedPolicy.from_aws_managed_policy_name("AmazonS3FullAccess"), ] ) # IAM Users cnt = 10 for i in range(1, cnt + 1): iam_user = iam.User(self, f"handson-seminar-iamuser-{i}", user_name = f"handson-seminar-iamuser-{i}", groups = [iam_group], ) 21
ࣗݾֶश༻ͷॳظڥઃఆCFNςϯϓϨʔτ cdk synth ͷίϚϯυͰɺCloudFormationςϯϓϨʔτΛग़ྗͰ͖Δɻ 22 $ cdk synth handson-stack >
cfn-template-handson.yml
AWS CDKͷ༻ײ • ͍ͭͷϓϩάϥϛϯάݴޠͰॻ͚Δ҆৺ײ (ݸਓతʹ) • ݁ߏলུͯ͠هड़Ͱ͖Δ • ϋϯζΦϯͰࢿྉʹهड़͢Δඞཁ͕͋ͬͨͷͰVPC໊ࢦఆ͕ͨ͠ɺ CloudFormationςϯϓϨʔτΑΓهड़ྔ͕ݮͬͨ
• ݟ͕͠ϥΫ • ࠔͬͨͱ͖ɺAPIϦϑΝϨϯεઌۦऀͷTypeScriptίʔυΛࢀর • ݴޠҟͳͬͯɺΫϥεϝιου͕ڞ௨Խ͞Ε͍ͯΔ 23
AWS Amplify Console 24
AWS Amplify Console • ੩తWebϗεςΟϯάαʔϏε • Ϗϧυ&σϓϩΠ͢ΔͨΊͷɺγϯϓϧͳCI/CDػೳ͋Γ • AmplifyΛߏ͢Δཁૉͷ1ͭ •
ࠓճAmplify ConsoleͷΈ͍ͬͯ·͢ 25
Amplify Consoleͷಋೖ 1. Deployͷ”GET STARTED”Λબ 2. GitϦϙδτϦαʔϏεΛબ 3. ϦϙδτϦͱϒϥϯνΛબ 4.
ϏϧυઃఆΛՃ 5. อଘͯ͠σϓϩΠ!!!
ͳͥAmplify ConsoleΛͬͨͷ͔ʁ (1) ͔ࣗΒͰࣗݾֶशͰ෮श͍ͤͯ͋͛ͨ͞ • Amplify ConsoleͰࢿྉΛWebͰެ։͢ΕOK • ύεϫʔυอޢ(Basicೝূ)Ͱ͖Δ •
VPCͷॳظઃఆɺCDKͰ࡞ͨ͠CloudFormationςϯϓ ϨʔτΛࢿྉαΠτ͔Βμϯϩʔυͯ͠༻ͯ͠Β͑OK 27
ͳͥAmplify ConsoleΛͬͨͷ͔ʁ (2) σϓϩΠ·ͰͷखॱΛϥΫʹ͍ͨ͠ • ࠓ·ͰͷJAWS-UG৽ׁͰͬͯͨ͜ͱ • ฤू࣌: MarkdownͰॻ͘ →
masterϒϥϯνʹϚʔδ → GitHubʹpush • Ϗϧυ&σϓϩΠ࣌: MarkdownΛHTMLʹม͢Δ → S3ʹઃஔ͢Δ • ࠓճͬͨ͜ͱ • ฤू࣌: MarkdownͰॻ͘ → masterϒϥϯνʹϚʔδ → GitHubʹpush • pushͨ͠ޙɺAmplify Console͕ࣗಈతʹϏϧυ & σϓϩΠͯ͘͠ΕΔ 28 ࢿྉ࡞Δͷࢲ1ਓ͚͔ͩͩΒɺ ༨ܭͳखॱΛ౿·ͳ͍Α͏ʹ͍ͨ͠
Ϗϧυ & σϓϩΠ ϑϩʔ 29
υΩϡϝϯταΠτΛdocsifyͰ VueϕʔεͷυΩϡϝϯταΠτΛ͓खܰʹ • Single Page Application • Ϗϧυෆཁ • MarkdownϑΝΠϧͷ··ઃஔͰ͖Δ
• JAWS-UG৽ׁͷϋϯζΦϯࢿྉ(Markdown)͕ͦͷ··͑Δ • ͰϚωδϝϯτίϯιʔϧͷUIมߋ͕݁ߏ͋ͬͨͷͰɺॻ͖͢෦ଟ͔ͬͨ • ֤छϗεςΟϯάαʔϏεͷσϓϩΠखॱ͕υΩϡϝϯτʹ༻ҙ • Amplify Consoleɺ͜ͷσϓϩΠखॱͷ௨Γʹ࣮ࢪ͠·ͨ͠ 30 IUUQTEPDTJGZKTPSH
version: 0.1 frontend: phases: build: commands: - "sed -i -e
\"s/routerMode: 'hash',/routerMode: 'history',/g\" ./docs/index.html" artifacts: baseDirectory: /docs files: - '**/*' cache: paths: [] docsifyͷυΩϡϝϯτʹ ै͑OKɻ • ϦϙδτϦϧʔτʹஔ͘ amplify.ymlӈͷΑ͏ ʹͯ͠ɺϏϧυ࣌ʹ routerModeΛ”history” ʹॻ͖͍͑ͯΔɻ Amplify ConsoleͷσϓϩΠઃఆ
ΤϯτϦϙΠϯτͷindex.htmlʹdocsifyͷઃఆΛॻ͖ɺ ֤ϖʔδMarkdownͰॻ͖·͢ɻ
࣮ࡍͷϋϯζΦϯςΩετ͜Μͳײ͡
ςΩετͱϚωδϝϯτίϯιʔϧฒͯ ϋϯζΦϯͷ༷Λ࣮ԋ & ࣾʹϥΠϒ৴͠·ͨ͠
AWS Amplify Consoleͷ༻ײ • Ϗϧυ & σϓϩΠͷख͕͔ؒͳΓল͚ͨ • ॳظઃఆҙ֎ͱ؆୯ͩͬͨ •
(docsifyͷσϓϩΠखॱʹै͚ͬͨͩͰ͋Δ͕…) • Amplify SDKAmplify CLIΘͳͯ͘ɺ·ͣAmplify Consoleͩ ͚Ͱࢼͯ͠ΈΔՁ͋Δ 35
·ͱΊ 36
·ͱΊ • ࣾͷݚमڥΛߏங͢ΔͨΊʹɺAWS CDKͱAWS Amplify ConsoleΛ͍·ͨ͠ • AWS CDKͰϋϯζΦϯͷॳظڥߏஙɻϓϩάϥϛϯάݴޠͰॻ͚ Δ҆৺ײɻهड़͕݁ߏলུͰ͖ͯɺίʔυશମ͕εοΩϦɻ
• AWS Amplify ConsoleͰϋϯζΦϯςΩεταΠτͷϏϧυ&σϓϩ ΠলྗԽɻҙ֎ͱ؆୯ɻා͘ͳ͍ɻ 37
https://jawsug-niigata.connpass.com 38
ࢀߟ • ϋϯζΦϯͷϕʔε: • JAWS-UG ৽ׁ #2 - S3 ϋϯζΦϯ
• https://jawsug-niigata.connpass.com/event/114694/ • JAWS-UG ৽ׁ #4 - EC2 / Lightsail ϋϯζΦϯ • https://jawsug-niigata.connpass.com/event/126558/ • JAWS-UG ৽ׁݝ ॳ৺ऀ͚ϋϯζΦϯ • https://nds.connpass.com/event/133878/ 39