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 CDKでまるっと インフラ環境をIaCしたぞ!
Search
kubotak
September 24, 2022
Programming
0
460
AWS CDKでまるっと インフラ環境をIaCしたぞ!
PHPConference2022 ゴールドスポンサーLT 2022/09/24
kubotak
September 24, 2022
Tweet
Share
More Decks by kubotak
See All by kubotak
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
160
情報漏洩させないための設計
kubotak
6
2.1k
Svelteコンポーネントの依存関係に秩序を〜
kubotak
0
130
DMARCレポート可視化ツールを SvelteKitで作った話
kubotak
2
540
Superforms本番投入で分かった良さとハマりどころ
kubotak
0
900
Storybookを書くだけでリグレッションテストが 実行される世界へようこそ
kubotak
31
11k
(うまくいった||いかなかった) 技術選定は何を考えていたか
kubotak
1
1.2k
ウォーターフォールに思えたプロジェクトにあったアジャイルの要素
kubotak
2
800
Felteで作る簡単フォームバリデーション
kubotak
1
1.6k
Other Decks in Programming
See All in Programming
iOSアプリ開発で 関数型プログラミングを実現する The Composable Architectureの紹介
yimajo
2
210
「ElixirでIoT!!」のこれまでとこれから
takasehideki
0
370
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
190
Select API from Kotlin Coroutine
jmatsu
1
190
すべてのコンテキストを、 ユーザー価値に変える
applism118
2
800
[初登壇@jAZUG]アプリ開発者が気になるGoogleCloud/Azure+wasm/wasi
asaringo
0
130
型付きアクターモデルがもたらす分散シミュレーションの未来
piyo7
0
810
Gleamという選択肢
comamoca
6
760
git worktree × Claude Code × MCP ~生成AI時代の並列開発フロー~
hisuzuya
1
480
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
1
690
Cline指示通りに動かない? AI小説エージェントで学ぶ指示書の書き方と自動アップデートの仕組み
kamomeashizawa
1
580
技術同人誌をMCP Serverにしてみた
74th
1
360
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
140
7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
RailsConf 2023
tenderlove
30
1.1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
What's in a price? How to price your products and services
michaelherold
246
12k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
Practical Orchestrator
shlominoach
188
11k
How to train your dragon (web standard)
notwaldorf
93
6.1k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
Transcript
Copyright© M&AΫϥυ AWS CDKͰ·Δͬͱ ΠϯϑϥڥΛIaCͨͧ͠ʂ PHP Conference Japan 2022 /
Kenjiro Kubota
Copyright© M&AΫϥυ ͓ͳ͡ΈɺM&AΫϥυͰ͢ PHPConferenceͱ͍͑M&AΫϥυ ※ࣾઆɺॾઆ͋Γ·͢ • PHPConference 2020(4໊) • PHPConference
2021(5໊) • PHPConference 2022(4໊) M&AΫϥυࡏ੶ΤϯδχΞͷPHPConferenceొஃྺ
Copyright© M&AΫϥυ ٻਓࠂαΠτͷΑ͏ͳM&AμΠϨΫτϚονϯά 3 ങ͍ख ɾҊ݅ใुM&AޭใुͷΈ ɾ࠷खྉͳ͠ ɾചΓखιʔγϯάͷνϟωϧ͕૿͑Δ ɾM&AχʔζΛൃ৴͢Δ͚ͩͰചΓखΛू٬ ɾհۀऀΛհͣ͞ʹμΠϨΫτʹΓऔΓՄೳ
ɾજࡏʹϦʔν͕Մೳ खྉແ ྉ ※ϓϥοτϑΥʔϜҊ݅ͷ߹ ※ ചΓख 1.ܝࡌ͢Δ ɾങ͍खͷM&AχʔζΛࣗΒௐΔ͜ͱ͕Մೳ ɾհۀऀΛհͣ͞ʹμΠϨΫτʹΓऔΓՄೳ ɾങ͍खͷM&A୲ऀʹίϯλΫτΛͱΕΔ ɾհۀऀΛΘͳ͍ͷͰखྉ͕ແྉ 2.ΦϑΝʔ͢Δ M&Aɾग़ࢿχʔζΛܝࡌ ങ͍खͷϝϦοτ ചΓखͷϝϦοτ ɾհۀऀΛΘͳ͍ͷͰखྉ͕ແྉ ʓʓྖҬͷձࣾΛ ืू͠·͢ ͜ͷձࣾͱҰॹʹ ͍͖͍ͬͯͨʂ 3 PR
Copyright© M&AΫϥυ ࢿۚௐୡϓϥοτϑΥʔϜ 2022ౙఏڙ։࢝ PR ࡢࠓͷࢿۚௐୡχʔζٸ૿ʹ͋ΘͤɺैདྷM&AΫϥυͰఏڙ͍ͯͨ͠ ʮࢿۚௐୡͷػೳʯΛΓग़͠ɺࢿۚௐୡʹಛԽͨ͠৽αʔϏεΛߏஙதͰ͢ɻ ͜ΕʹΑΓɺຊதͷελʔτΞοϓاۀͷࢿۚௐୡΛεϜʔζʹ͠ɺΑΓεϐʔυ ײΛ࣋ͬͨࣄۀʹߩݙͯ͠·͍Γ·͢ɻ
Copyright© M&AΫϥυ AWS CDKͱ
Copyright© M&AΫϥυ AWS CDKͱ AWS Cloud Development Kit (AWS CDK)
AWS CloudFormationΛ࣮ߦ͢ΔίʔυΛએݴతͳςϯϓϨʔτͱͯ͠ఆٛ͢Δ͜ͱͰϓϩϏ δϣχϯάΛ࣮ݱͰ͖ΔϑϨʔϜϫʔΫ CloudFormationʹΑΓIaC͕࣮ߦ͞ΕΔͷͰࣗಈϩʔϧόοΫυϦϑτݕग़ʢखಈมߋͯ͠͠ ·ͬͨ߹ʹఆٛͱ࣮ମ͕ဃ͢Δ͜ͱΛݕग़ʣ͕Ͱ͖Δɻ ҎԼͷݴޠ͕αϙʔτ͞Ε͍ͯΔ PHPͳ͍
Copyright© M&AΫϥυ AWS CDKͱ AWS CDK Constructs CDKAPPɺStackɺConstructͷ֤ཁૉʹΑͬͯߏ͞Ε͍ͯΔɻ • APP
◦ Stackͷґଘؔͷఆٛ • Stack ◦ CloudformationͷStack୯Ґ ◦ σϓϩΠͷ࠷খ୯Ґ • Construct ◦ AWSͷϦιʔε
Copyright© M&AΫϥυ AWS CDKͱ Construct Library CDKConstruct LibraryΛ༻ͯ͠AWSϦιʔεΛఆٛ͠·͢ɻ Construct LibraryʹҎԼͷ3छྨʹ͚ΒΕ·͢ɻ
• low-level constructsʢL1ʣ ◦ ײతʹϦιʔεΛఆٛ͢Δ͜ͱ͕Ͱ͖ɺσϑΥϧτ͕ઃఆࡁΈͷศརͳϝιου ͕ఏڙ͞ΕΔ • higher-level, intent-based APIʢL2ʣ ◦ ϓϩύςΟΛ໌ࣔతʹઃఆ͢Δඞཁ͕͋ΔͨΊɺύϥϝʔλΛৄࡉʹઃఆͰ͖Δ ◦ Ϋϥε໊ʹCfnϓϨϑΟοΫε͕͍͍ͭͯΔ • patternsʢL3ʣ ◦ ҰൠతͳΞʔΩςΫνϟύλʔϯʹै͏ߴϨϕϧͷConstructΛఏڙ
Copyright© M&AΫϥυ AWS CDKͱ AWS SDKʹ͍ͭͯৄ͘͠Γ͍ͨํ ͪ͜ΒͷηογϣϯΛνΣοΫʂ ʢ͢ͰʹऴΘ͍ͬͯΔηογϣϯͳͷͰεϥΠυ͔ಈըΛࢀর͍ͩ͘͞ʣ
Copyright© M&AΫϥυ M&AΫϥυͷࣄྫ M&AΫϥυͷΠϯϑϥ Amazon Web Service(AWS)্Ͱߏங͍ͯ͠·͢ɻ ओʹҎԼͷαʔϏεΛར༻ • ECS(Fargate)
• ECR • Lambda • Cloudfront • Open Search Service • ALB • CloudWatch • Athena • S3 • RDS • ElastiCache • SQS • etc
Copyright© M&AΫϥυ AWS CDKΛಋೖ͢Δલ ϒϥβͷAWSίϯιʔϧ͔Βૢ࡞ αʔϏεΠϯ͔Β3ఔ࣮͜ͷঢ়ଶͰಛʹʹͳͬͯͳ͔ͬͨɻ ࡞ۀΛεΫγϣͯ͠υΩϡϝϯτʹ͢ͳͲߦ͍ͬͯͯΘ͕͋ͬͨ͠͞ɺසൟʹΠϯϑϥʹ खΛೖΕΔ͜ͱ͕ͳ͔ͬͨɻ Ұ෦Serverless FrameworkΛ͏ͳͲIaCʹͳ͍ͬͯΔͷ͋ͬͨɻ
Copyright© M&AΫϥυ ֬ೝڥΛ૿ͦ͏
Copyright© M&AΫϥυ ։ൃऀ͕૿͑ɺνʔϜΛ͚ͨ νʔϜ͕͔Εͨ͜ͱʹΑΓ֬ೝڥʢ͍ΘΏΔεςʔδڥʣͰಈ࡞֬ೝ͍ͨ͠λΠϛ ϯά͕ҟͳΓσϓϩΠौ͕ൃੜͨ͠ɻ ͦͷͨΊɺ֬ೝڥΛෳ࡞Δ͜ͱʹɾɾɾ
Copyright© M&AΫϥυ ෳڥ࡞Δࡍͷো
Copyright© M&AΫϥυ εϖοΫΛ͋Θͤͯෳڥ࡞Δखؒ ϒϥβίϯιʔϧ͔ΒڥΛ࡞Δͷ͕ඇৗʹखؒ কདྷతʹ͞ΒʹνʔϜ͕૿͑ͨ߹ɺ·ͨಉ͡Λͬͯ࡞Δख͕ؒൃੜ͢Δ ͞ΒʹฐࣾͰCloudfrontͷBehaviorΛར༻ͯ͠ύε͝ͱʹ ΞϓϦέʔγϣϯͷ͖ઌΛมߋ͢Δॲཧ͕େྔʹ͋ͬͨɻ ڥΛෳ࡞Δࡍʹͱͯͭͳ͍࡞ۀ֬ೝ͕ඞཁʹͳΔɻ
Copyright© M&AΫϥυ ͦ͜ͰɺAWS CDK
Copyright© M&AΫϥυ AWS CDKΛར༻ͯ͠ڥߏங Stack୯ҐͰڞ௨Խ͠ɺڥʹΑͬͯҟͳΔมΛ༩͑Δ͜ͱͰεϖοΫ֤छIPΞυϨε ͷมಈ͕Ͱ͖ΔΑ͏ʹߏங CloudfrontͷBehaviorྻͰอ࣋͠ɺCDK͔ΒҰׅͰө͞ΕΔΑ͏ʹରԠ ෳڥ·ͱΊͯಉ͡BehaviorΛઃఆ͢Δ͜ͱ͕Ͱ͖ΔΑ͏ʹͳͬͨɻ
Copyright© M&AΫϥυ ͪΐͬͱ೦ͳͱ͜Ζ
Copyright© M&AΫϥυ AWS CDKΛར༻ͯ͠ݟ͑ͨ՝ • CloudFromation͕࣮ߦ͞ΕΔͨΊɺྃ·Ͱ݁ߏ͕͔͔࣌ؒΔɻ ◦ ಛʹCloudfront֤Edgeαʔόʔͷө·Ͱ͍ͬͯΔײ͡ʁͰ͍ • Fargate
SpotΛ͏ͨΊʹL1 ConstructͰ͏·͘ߦ͔ͳ͔ͬͨͷͰL2ʹΑΔCfnΫϥ εΛ͏ඞཁ͕͋ͬͨɻͦͷଞʹ݁ہCfnΫϥεͰॻ͔ͳ͍ͱࢦఆͰ͖ͳ͍ͷ͕ଟ͔ͬ ͨ • ϥΠϒϥϦ͕TypeScriptͷݴޠͷྑ͞Λ͍Ε͍ͯͳ͍ ◦ ܾ·ͬͨจࣈ͔͑͠ͳ͍ͳΒUnionͰఆٛͯ͠΄͍͠ɻStringʹͳ͍ͬͯΔͷͰɺ ͳʹ͕ࢦఆͰ͖Δ͔Θ͔Βͳ͍ͷ͕݁ߏ͋Δʢ݁ہެࣜυΩϡϝϯτΛݟͳ͚Ε ͑ͳ͍ʣ • CDKͷίʔυͨͩཏྻ͢Δ͚ͩͰͳ͘StackConstruct୯ҐΛ͏·͘ઃܭ͢Δඞཁ͕ ͋Δͱײͨ͡
Copyright© M&AΫϥυ ·ͱΊ • Թ͔Έͷ͋Δख࡞ۀ͔ΒIaCʹҠߦͨ͜͠ͱͰࠓޙڥ͕૿͑ͯఆٛΛ΄΅ίϐϖ Ͱ૿͚ͩ͢Ͱྑ͍Ϩϕϧʹͳͬͨʂ • CloudfrontͷBehaviorͣͬͱ՝ײ͕͕͋ͬͨCDKͰεοΩϦͨ͠ • ୀ۶ͳ͜ͱCDKʹΒͤΑ͏ɻ
Copyright© M&AΫϥυ Thanks for watching this :)