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
EC2 & 手動デプロイから ECS& CodePipeline に変えてみた
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
IshinShibata
July 13, 2021
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
EC2 & 手動デプロイから ECS& CodePipeline に変えてみた
IshinShibata
July 13, 2021
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
410
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
310
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
From π to Pie charts
rasagy
0
230
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
230
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
970
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
380
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Docker and Python
trallard
47
3.9k
Code Review Best Practice
trishagee
74
20k
Transcript
&$खಈσϓϩΠ͔Β &$4ˍ $PEF1JQFMJOFʹม͑ͯΈͨ גࣜձࣾ".%MBC ࣲాҡ৽
ࣗݾհ ࣲాҡ৽ͱਃ͠·͢ɻ ݩͷதখاۀʹͯӦۀ৬ʢ̑ʣ ˣ גࣜձࣾώτΫηʢΤϯδχΞͱͯ͠స৬ʣ ˣ גࣜձࣾ".%MBC ݱࡏ ͓স͍ΤϯδχΞͱͯ͠ҐΛཱ͍֬ͨ͠ɻɻ
ΞδΣϯμ ❏ ܦҢ ❏ &$4ͷ֓ཁ ❏ &$4࡞·Ͱͷ͋Ε͜Ε ❏ ٧·ͬͨͱ͜Ζᶃ ❏
٧·ͬͨͱ͜Ζᶄ ❏ $PEFQJQFMJOFಋೖ ❏ ·ͱΊ d&$खಈσϓϩΠ͔Β &$4ˍ $PEF1JQFMJOFʹม͑ͯΈͨ d
ܦҢ
TTIͰೖͬͯखಈͰૢ࡞ةݥͩ͠ɺԿΑΓखؒɻɻɻ &$4৮ͬͯΈ͍ͨʂ ͦΖͦΖखಈσϓϩΠ͔Β͞ΑͳΒ͍ͨ͠ɻɻ
何よりイケてない気がする!!
ݱঢ়ͷΞφϩάσϓϩΠखॱ TTIͰFDʹೖΔ HJUQVMMPSJHJONBTUFS ECʹมߋ͕͋ΕɺNJHSBUF EPDLFSJNBHFΛCVJME EPDLFSDPNQPTFVQ
None
&$4ͷ֓ཁ
"84্ͰEPDLFSίϯςφΛ؆୯ʹ࣮ߦͰ͖ΔαʔϏε λΠϓ&$ͱ'"3("5& &$ จࣈ௨ΓFDͷதʹίϯςφΛݐͯΔ TTIͰೖͬͯԿ͔ૢ࡞͍ͨ࣌͠ʹศརɻ GBSHBUF FDͷཧΛ͠ͳ͍͍ͯ͘ εέʔϧ͕༰қ ECS
͜ΕΛ"84্ͰΔͷ͕ɺ&$4 ϩʔΧϧͰEPDLFSΛىಈ͢ΔྲྀΕͱͯ͠ɻɻ %PDLFSGJMFͷ༻ҙ EPDLFSCVJMEUOHJOYGEPDLFSOHJOY EPDLFSSVOOHJOY
UBTLEFGJOJUJPO TFSWJDF 5BTL 5BTL DMVTUFS &$4 EPDLFSDPNQPTFZNMΈ͍ͨͳͷ ༻͢ΔEPDLFSJNBHFʁ QPSUͷࢦఆ ڥมͷઃఆ
ϘϦϡʔϜͷઃఆ UBTLEFGJOJUJPOʁ
UBTLEFGJOJUJPO TFSWJDF 5BTL 5BTL DMVTUFS &$4 &$4Λ࡞͢Δ্ͰશମΛ·ͱΊΔ ശΈ͍ͨͳͷ DMVTUFSʁ
5BTLΛ·ͱΊΔͷ UBTLEFGJOJUJPOΛͱʹ5BTLΛ্ཱͪ͛Δ ༻͢ΔλεΫͷʁ ϩʔυόϥϯαʔͷ༻༗ແ "1*ɺ$MJFOUΈ͍ͨͳΠϝʔδ UBTLEFGJOJUJPO TFSWJDF 5BTL 5BTL DMVTUFS
&$4 TFSWJDFʁ
UBTLEFGJOJUJPO TFSWJDF 5BTL 5BTL DMVTUFS &$4 EPDLFSίϯςφΛ·ͱΊͨͷ &$λΠϓͰ͋Εɺ5BTL&$ͱ͍͏ ೝࣝͰྑ͍͔͠Εͳ͍ 5BTLʁ
&$4࡞·Ͱͷ͋Ε͜Ε
˔ DMVTUFS࡞ &$4ϓϩδΣΫτͷശΈ͍ͨͳͷ ˔ UBTLEFGJOJUJPOͷ࡞ ίϯςφͷىಈํ๏ EPDLFSDPNQPTFZNMΈ͍ͨͳͷ ˔ TFSWJDFͷ࡞ λεΫΛ·ͱΊΔͷ
˔ EPDLFSJNBHFͷొ
EPDLFSIVCͱಉ͡Α͏ͳαʔϏεͰJNBHFΛొͰ͖Δ ͪΖΜEPDLFSQVMMͰ͖Δ l BXTFDSHFUMPHJOQBTTXPSESFHJPOࢦఆϦʔδϣϯ cEPDLFSMPHJOVTFSOBNF"84 QBTTXPSETUEJOBXTΞΧϯτELSFDSࢦఆϦʔδϣϯBNB[POBXTDPN l EPDLFSCVJMEUOHJOY l EPDLFSUBHOHJOYMBUFTUBXTΞΧϯτELSFDSࢦఆϦʔδϣ
ϯBNB[POBXTDPNOHJOYMBUFTU l EPDLFSQVTIBXTΞΧϯτELSFDSBQOPSUIFBTUBNB[POBXTDPNOHJOYMBUFTU &$3ʹEPDLFSΠϝʔδΛొ
٧·ͬͨͱ͜Ζᶃ
BXTDMJΛීஈΘͳ͍͔ΒɺJBNͷΓସ͑ํͰΉɻɻɻ BXTFDSHFUMPHJOQBTTXPSESFHJPOࢦఆϦʔδϣϯ cEPDLFSMPHJOVTFSOBNF"84 QBTTXPSETUEJOBXTΞΧϯτELSFDSࢦఆϦʔδϣϯBNB[POBXTDPN &$3ʹQVTI͢ΔBXTΞΧϯτͱผͷΞΧϯτͰϩάΠϯͨ͠߹ɺQVTI͕Ͱ͖ͳ͍ɻ BXTΞΧϯτ͕ෳ͋Δ߹FYQPSU"84@%&'"6-5@130'*-&QSPGJMFOBNF Ͱ༻͢ΔΞΧϯτΛΓସ͔͑ͯΒɺ&$3ʹϩάΠϯ͢Δ QVTI͕Ͱ͖ͳ͍ɻɻɻɻɻ
٧·ͬͨͱ͜Ζᶄ
nginx Rails ιέοτ௨৴Λߦ͏ʹ 3BJMTͷιέοτϑΝΠϧΛڞ༗͢Δඞཁ͕͋Δ
volume task GBSHBUF OHJOYίϯςφ͔Β ϘϦϡʔϜιʔεΛSBJMTίϯςφʹࢦఆ &$ ϘϦϡʔϜΛ࡞͠ɺίϯςφಉ࢜Ͱڞ༗͢Δ ソケット通信 ソケット通信 WPMVNFͷڞ༗
socketファイル &'4Λ͑ଞʹΓํ͕͋Δ͔ɻɻɻ volume task ソケット通信
OHJOYίϯςφ͔ΒϘϦϡʔϜΛಡΈࠐΉ railsのDockerfileにて VOLUMEを作成 OHJOYɺSBJMTίϯςφ͔Βڞ༗ͷϘϦϡʔϜΛϚϯτ͢Δ ボリュームの作成 &$̎λΠϓͷ߹ 'BSHBUFͷ߹
$PEFQJQFMJOFಋೖ
DPEFQJQFMJOFͰ$*$%ͷύΠϓΛ࡞ΓɺύΠϓ Λͦͷ΄͔ͷαʔϏεͰͭͳ͘Πϝʔδ
ࠓճ༻ͨ͠αʔϏε
ソース ビルド テスト デプロイ
Pipeline Transition Stage Action Action Stage Action Action Action 1JQFMJOF
$PEFQJQFMJOFͷ࠷্Ґ֓೦ɻ֤ϓϩηε Λ·ͱΊͨͷ 4UBHF 1JQFMJOFͷҰ࿈ͷϓϩηεɻϏϧυɺςε τɺσϓϩΠ͕͜Εʹ͋ͨΔ "DUJPO 4UBHF্ͷ۩ମతͳλεΫɻ৽͍͠ίϯ ςφͷλεΫʹஔ͖͑Δͱ͔ɺ%PDLFS CVJMEɺ%PDLFSQVTIͳͲ 5SBOTJUJPO ࣍ͷεςʔδʹҠΔॲཧ
Action Category(アクション内容) Action Providers(どのサービスが行うか) Souce Amazon S3, Amazon ECR, CodeCommit,
Github, Bitbucket Build CodeBuild, Jenkins Test CodeBuild, Jenkins Deploy Amazon S3, Amazon ECS, CodeDeploy
Pipeline Souce Deploy Build docker build, ECRへの docker-push git pushをトリガーにpipeline
の実行し、ソースを取得 古いコンテナを新しいコンテ に差し替える Transition Transition buildspec.yml imagedefinitions .json version: 0.2 phases: pre_build: commands: - $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email) 環境変数定義ができる build: commands: - docker build -t $AWS_ACCOUNT_ID.dkr.ecr.ap-northeast-1.amazonaws.com/rails:latest . post_build: commands: - docker push $AWS_ACCOUNT_ID.dkr.ecr.ap-northeast-1.amazonaws.com/rails:latest - echo Writing image definitions file... - printf '[{"name":"rails","imageUri":"%s"}]' - $AWS_ACCOUNT_ID.dkr.ecr.ap-northeast-1.amazonaws.com/rails:latest > imagedefinitions.json artifacts: files: imagedefinitions.json [ {"name":"rails","imageUri":"AWS_ACCOUNT_ID.dkr.ecr.ap-northeast- 1.amazonaws.com/rails:latest"} ]
None
·ͱΊ
˔ ӡ༻ίετ͕ܹݮͨ͠ɻ ˔ "84৮Δͷָ͕͘͠ͳΔɻ ˔ $PEFQJQFMJOF͍͍͢ʂ ˔ جຊతͳ%PDLFSͷཧղେࣄʂ ͞ΑͳΒखಈσϓϩΠ $MPVE'PSNBUJPOͰߏஙͯ͠Έ͍ͨ
ॳΊͯͷ$*$%$PEFQJQFMJOF͓͢͢Ί %PDLFSͷཧղ͕͋ͬͯͦ͜༻Ͱ͖ΔαʔϏε
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ
$PEFγϦʔζͰ࢝ΊΔ͡Ίͯͷ$*$% IUUQTEFWDMBTTNFUIPEKQBSUJDMFTDJDEXJUIDPEFTFSJFTBUIJHPCBTIJBXT ϙʔτϑΥϦΦΛ&$4Ͱʂʳ3BJMTº/HJOYΞϓϦΛ'BSHBUFʹσϓϩΠ͢Δ·ͰΛஸೡʹઆ໌ͯ͠Έͨ 71$࡞ʙ$JSDMF$*ʹΑΔࣗಈσϓϩΠ·Ͱ લฤ IUUQTRJJUBDPNNBSVJUFNTFEBCBEFEBEC ʲ"84ೖʳ&$4 'BSHBUF ͱ&$3Ͱָʑίϯςφ͔Β)FMMP8PSME͠Α͏ʂ IUUQTXXXZPVUVCFDPNXBUDI
W@'Y-QYHNP ॳ৺ऀͰͰ͖Δʂ &$4º &$3º $JSDMF$*Ͱ3BJMTΞϓϦέʔγϣϯΛίϯςφσϓϩΠ IUUQTRJJUBDPNTBPOHUYJUFNTGEEC ࢀߟࢿྉ "84$PEF1JQFMJOFͰ $*$%ͷΈΛߏங͓ͨ͠ IUUQTCMPHTQBDFNBSLFUDPNDPEFDJDEDPEFQJQFMJOF "NB[PO&$$POUBJOFS4FSWJDF &$4 ͷ֓೦ཧ IUUQTRJJUBDPN/FX(ZVJUFNTFEFEBCEE