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
CloudFormationの運用が 辛くならない方法を本気で考えてみた
Search
Yuki_Kurono
September 16, 2023
Technology
0
270
CloudFormationの運用が 辛くならない方法を本気で考えてみた
「四国クラウドお遍路 2023 - 四国の外のモノサシを知ってみよう-」登壇資料
Yuki_Kurono
September 16, 2023
Tweet
Share
More Decks by Yuki_Kurono
See All by Yuki_Kurono
今年のre:inventから学ぶこと
yuki_kurono
0
79
re_invent 2023事前勉強会
yuki_kurono
0
81
CloudFormationで登場したForEachをちゃんと理解してみる
yuki_kurono
0
760
Turnstileのウィジェット モードとは何者か
yuki_kurono
0
620
CodeGuru Security ってなんだ?
yuki_kurono
0
1.1k
えるしってるか CloudFrontはWAFがあっても カスタムエラーレスポンスを返せる
yuki_kurono
0
400
Cloudflare初心者がIaCから基本構成を学んでみた
yuki_kurono
1
580
Terraformのnull_resource ってなに?aws cli が実行できるらしい
yuki_kurono
1
1.4k
Hashicorp VaultでAWSクレデンシャルの管理を楽にしたい
yuki_kurono
0
640
Other Decks in Technology
See All in Technology
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3.6k
Agentic AIが変革するAWSの開発・運用・セキュリティ ~Frontier Agentsを試してみた~ / Agentic AI transforms AWS development, operations, and security I tried Frontier Agents
yuj1osm
0
210
AI との良い付き合い方を僕らは誰も知らない (WSS 2026 静岡版)
asei
1
260
Java 25に至る道
skrb
3
190
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
3
280
2025年の医用画像AI/AI×medical_imaging_in_2025_generated_by_AI
tdys13
0
320
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
12k
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
#22 CA × atmaCup 3rd 1st Place Solution
yumizu
1
140
小さく、早く、可能性を多産する。生成AIプロジェクト / prAIrie-dog
visional_engineering_and_design
0
370
「違う現場で格闘する二人」——社内コミュニティがつないだトヨタ流アジャイルの実践とその先
shinichitakeuchi
0
210
Scrum Guide Expansion Pack が示す現代プロダクト開発への補完的視点
sonjin
0
520
Featured
See All Featured
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
61
Test your architecture with Archunit
thirion
1
2.1k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
120
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
110
Odyssey Design
rkendrick25
PRO
0
460
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
82
Marketing to machines
jonoalderson
1
4.5k
Code Reviewing Like a Champion
maltzj
527
40k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.8k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Transcript
CloudFormationの運用が 辛くならない方法を本気で考えてみた 黒野 雄稀 | 2023/9/16 1
自己紹介 twitter(X):@kurono_98 #jawsug #cloudohenro 2 黒野 雄稀 Yuki Kurono アイレット株式会社 名古屋で仕事してマス
普段はインフラ設計・構築や運用構築に従事 2022/2023 Japan AWS All Certifications Engineers 2023 Japan AWS Top Engineers AWS Community Builders(Cloud Operations)
今日お話しすること 3 CloudFormationを運用するうえで大変だと感じること、それに対する解決策に ついてお話しします。 注意:アンチCloudFormationではないです!disるつもりも一切ないです。 #jawsug #cloudohenro
ここでクイズ 4 #jawsug #cloudohenro CloudFormationのアイコンは以下4つのうちどれでしょう? A C D B
正解はB 5 #jawsug #cloudohenro CloudFormationのアイコンは以下4つのうちどれでしょう? A C D B ClodFormation
CodePipeline CodeCommit X-Ray
CloudFormationとは 6 AWSで提供されるInfrastructure as Code(IaC)サービス IaC = コードしてインフラを管理しようぜ! テンプレートと呼ばれるファイルにコードを記述する。 記述方法はJson
or YAMLを使うことができる。 2011/02/25リリース(御年12歳) #jawsug #cloudohenro AWSTemplateFormatVersion: '2010-09-09' Resources: VPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 Virtual private cloud (VPC) デプロイ
CFnってなんで使うんだっけ? 7 #jawsug #cloudohenro 標準化がしたいんだっけ?構築を楽にしたいんだっけ?なんとなく?? みんな色々な理由があるのかなと思いますが、自分は圧倒的に 「構築を楽にしたい」からです。 けど何故か大変な思いをして使うのを敬遠し、何か素晴らしいアップ デートが入るのを日々待っているだけの自分がいる。 辛さを感じて避けてきてたけど、解決策があるのではないかと思って
色々考えてみました。
なにが辛いと感じるのか • スタックが肥大化しがち • 冗長的な記述が多い • トライ&エラーに時間がかかる • 更新時に変更される部分が分かりにくいとかもあるけど...w 8
自分なりに何故辛いと感じるのか、何故敬遠してしまうのか考えてみました。 以下の3大要素が自分の中では辛く感じている部分というのが分かりました。 #jawsug #cloudohenro
スタックが肥大化しがち問題 9 少し大きめなシステムをCFnで構築しようとすると1つのスタックが肥大がしが ち。サービスごとにスタックを分けようとすると煩雑化してさらなる地獄に。 #jawsug #cloudohenro vpc.yaml subnet.yaml ec2.yaml role.yaml
巨大system.yaml 分割
スタックが肥大化しがち問題 10 スタックはサービスごとではなく、機能ごとに分けていく。 スタック間の結合も少なくなり分割もできてハッピー。 #jawsug #cloudohenro subA.yaml subB.yaml subC.yaml subD.yaml
分割 巨大system.yaml
冗長的な記述が多くなる問題 11 CloudFormationの従来の書き方だと同じリソースを複数回定義する必要があ る。S3を100個作りたいとかなった時に絶望する。(これは無いと思うけど) #jawsug #cloudohenro ×100 AWSTemplateFormatVersion: '2010-09-09' Resources:
- "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" AWSTemplateFormatVersion: '2010-09-09' Resources: - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" AWSTemplateFormatVersion: '2010-09-09' Resources: - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" AWSTemplateFormatVersion: '2010-09-09' Resources: - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: "BucketName" - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: 死
冗長的な記述が多くなる問題 12 ForEachを使うことでかなり記述量を抑えることが可能に。 それでも動的に渡すBacket名などは記述する必要はある。Mappingsを並行して 使用することを心からオススメする。 #jawsug #cloudohenro ×100 AWSTemplateFormatVersion: 2010-09-09
Transform: "AWS::LanguageExtensions" Resources: "Fn::ForEach::BucketLoopName": - BucketName - - bucketkurono1 - bucketkurono2 - bucketname ・・・100まで - "S3${BucketName}": Type: "AWS::S3::Bucket" Properties: BucketName: !Ref BucketName 流石にまだ良い
トライ&エラーに時間かかる問題 13 AWSコンソールからデプロイを行うと、ブラウザのロード速度に足を引っ張ら れることや画面遷移、操作が多くストレスが多い。 #jawsug #cloudohenro トライ エラー デプロイ
トライ&エラーに時間かかる問題 14 デプロイ方法をコンソールからAWS CLIに変更することでブラウザに依存して いたストレスから解放される。再実行も同じコマンドなので楽になる。 #jawsug #cloudohenro トライ エラー デプロイ
まとめ 15 CloudFormationだけが、辛いということはないと思います。 #jawsug #cloudohenro • やり方次第で、辛いと思える部分は解消できると思いました。 • アップデートもされているので、日々良い方向へ運用方法を改善していく のが大事だと思います。
• あとは元々やりたかったことから逸脱するのであれば、諦める。 ◦ CloudFormationは目的ではなく手段なので履き違えないように。
16