Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
AWS Cloud Formation Git Syncで始める 頑張らない自動デプロイ
Search
miyamo2
April 26, 2024
Programming
200
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWS Cloud Formation Git Syncで始める 頑張らない自動デプロイ
20240426 社内LT用
miyamo2
April 26, 2024
More Decks by miyamo2
See All by miyamo2
Go 1.24 tool directiveは何を変えるのか
miyamo2
1
290
Httpリクエストを自動リトライ・ポーリングするイテレータを作ってみた
miyamo2
0
220
Other Decks in Programming
See All in Programming
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
13
5.8k
DroidKnights 2026 Android A2UI Jetpack Compose 기반의 안전한 AI UI 렌더링 - 박제창
itsmedreamwalker
1
200
Engineering Biometric UX Across Android Versions | DroidKnights 2026
ryunen344
1
190
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
1.6k
PyConTW 2026 - AI Coding 不只是工具升級, 區域醫院醫療資訊系統協作開發與資訊團隊轉型實踐
cclai999
0
240
AI Augmentation Techniques with Liberty
ivargrimstad
1
390
React Native経験者が Flutterを30⽇間触って驚いたこと
3saito
0
160
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
180
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.7k
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
4
1.5k
AI-Powered Domain-Driven Design
ziobrando
0
410
Next.js: The final boss of Web Performance
guaca
0
380
Featured
See All Featured
A Tale of Four Properties
chriscoyier
163
24k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
600
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Balancing Empowerment & Direction
lara
6
1.4k
Optimising Largest Contentful Paint
csswizardry
37
4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
The Language of Interfaces
destraynor
162
27k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Thoughts on Productivity
jonyablonski
76
5.5k
How to make the Groovebox
asonas
2
2.5k
Transcript
AWS Cloud Formation Git Syncで始める 頑張らない自動デプロイ miyamo2
話すこと - Cloud Formation/Git Syncの概要 - Git Syncの課題と解決案 話さないこと -
Cloud Formation/Git Syncの設定手順
Cloud Formation AWSリソースをYAMLもしくはJSONで管理できるIaCサービス
AWSTemplateFormatVersion: "2010-09-09" Parameters: Env: Type: String Default: dev AllowedValues: -
dev - stage - prod Resources: UserTable: Type: AWS-:DynamoDB-:Table Properties: TableName: !Sub users-${Env} AttributeDefinitions: - AttributeName: "UserId" AttributeType: "S" KeySchema: - AttributeName: "UserId" KeyType: "HASH" ProvisionedThroughput: ReadCapacityUnits: "1" WriteCapacityUnits: "1" BillingMode: PROVISIONED Outputs: UsersTableName: Value: !Ref UserTable Parameters このテンプレートで受け取るパラメータ Resources このテンプレートで生成するリソース Outputs このテンプレートが出力するリソース Cloud Formation
Cloud Formation AWSコンソールからGUIベースでポチポチ操作することも可 CI/CD製品と組み合わせて使うのが主流?
Git Sync Cloud Formationの新機能 GitリポジトリとCFnスタック(≒デプロイの粒度)を連携させることで スクリプトレスなCDを構築できる 連携しているリポジトリに用意されたパラメータ定義用ファイルを参照
Git Sync CIワークフローが必要な場合は自前で用意する必要あり on: pull_request: branches: - "連携ブランチ" 連携ブランチへ merge
Git SyncによるCD
Git Sync 課題 ①別スタック/別手順で管理されているリソースを参照する場合、 パラメータを手修正し続けるのがツラい ②そもそもパラメータを平文で管理していいの?
パラメータは原則 SSM Parameter Storeで管理する
実装例 AWSTemplateFormatVersion: "2010-09-09" Parameters: # Resources.Somethingが依存するリソース FooArn: Type: AWS-:SSM-:Parameter-:Value<String> NoEcho:
true Default: /dev/foo/arn Env: Type: String Default: dev AllowedValues: - dev - stage - prod Resources: # なにがしかのリソース Something: --. # SomethingのArnをSSM Parameter Store SomethingArnSSMParameter: Type: "AWS-:SSM-:Parameter" Properties: Tier: "Standard" Name: !Sub /${Env}/something/arn Type: "String" Value: !GetAtt Something.Arn パラメータを AWS::SSM::Parameter::Value<T> で受け取る 生成リソースを AWS::SSM::Parameterで出力 SSM Parameterのパスだけお互いに 握っていればOK
実装例 -!/bin/sh REGISTRY=$1 REPOSITORY=$2 TAG=$(git rev-parse HEAD) docker push ${
REGISTRY }/${ REPOSITORY }:${ TAG } aws ssm put-parameter \ --name /ecr/${ REGISTRY }/${ REPOSITORY }/tag \ --value ${ TAG } \ --type String \ --overwrite \ --region ap-northeast-1 CFnで管理できないリソース → シェルスクリプトでよしなに 後々GitHub ActionsなどのCI/CD製 品に移行する場合を踏まえて、コード 資産としての引き継ぎやすさを意識し たい
まとめ CDの構築を頑張らない分、運用はちょっと煩雑になりそう 以下に当てはまる場合はおすすめ - リリース頻度が高くない - とりあえずサクッと1つの環境にデプロイしたい SPA、SSRのWebフロントエンドならAmplify Hostingの方がおすすめ
参考 Working with AWS CloudFormation Git sync https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/git-sync.html CloudFormationがCD Pipelineなしで
そのままGit連携デプロイが可能に! #AWSreInvent https://dev.classmethod.jp/articles/cloudformation-git-sync-update/ miyamo2が構築したサンプル https://github.com/miyamo2/cfn-with-gitsync-dynamodb https://github.com/miyamo2/cfn-with-gitsync-lambda