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
非IaCなAWS環境をCloudFormationでIaC化する
Search
kefi550
October 08, 2023
Programming
2
500
非IaCなAWS環境をCloudFormationでIaC化する
【AWS】AWS10分LT会 - vol.1
https://aws-likers.connpass.com/event/296768/
kefi550
October 08, 2023
Tweet
Share
More Decks by kefi550
See All by kefi550
ECSのコストのケチり方
kefi550
0
190
Amazon Pinpoint使ってますか?Amazon PinpointでGmail送信者ガイドラインに対応した話
kefi550
0
540
CO2濃度を監視して生産性向上💪
kefi550
0
29
Other Decks in Programming
See All in Programming
テストコード文化を0から作り、変化し続けた組織
kazatohiei
2
1.5k
暇に任せてProxmoxコンソール 作ってみました
karugamo
1
720
短期間での新規プロダクト開発における「コスパの良い」Goのテスト戦略」 / kamakura.go
n3xem
2
170
KubeCon + CloudNativeCon NA 2024 Overviewat Kubernetes Meetup Tokyo #68 / amsy810_k8sjp68
masayaaoyama
0
250
良いユニットテストを書こう
mototakatsu
5
2k
LLM Supervised Fine-tuningの理論と実践
datanalyticslabo
3
1.1k
rails stats で紐解く ANDPAD のイマを支える技術たち
andpad
1
290
開発者とQAの越境で自動テストが増える開発プロセスを実現する
92thunder
1
180
103 Early Hints
sugi_0000
1
230
menu基盤チームによるGoogle Cloudの活用事例~Application Integration, Cloud Tasks編~
yoshifumi_ishikura
0
110
20年もののレガシープロダクトに 0からPHPStanを入れるまで / phpcon2024
hirobe1999
0
270
快速入門可觀測性
blueswen
0
340
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
4
170
Docker and Python
trallard
42
3.1k
Site-Speed That Sticks
csswizardry
2
190
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
Six Lessons from altMBA
skipperchong
27
3.5k
Practical Orchestrator
shlominoach
186
10k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
How to Think Like a Performance Engineer
csswizardry
22
1.2k
How to Ace a Technical Interview
jacobian
276
23k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Transcript
非IaCな環境をCloudFormationで IaC化する 2023/10/09 AWS10分LT会 - vol. 1 1 石橋翔太 (@kefi550)
IaCとは https://docs.aws.amazon.com/ja_jp/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html
• AWSリソースがほぼすべて手で作られており、コード化はされていない 課題 • 本番/ステージングで細かい差分が多い...無意味な差分がある... • 作業(手順)漏れなどによるリリース失敗... • AWSリソース等環境の把握、変更レビューがムズい...(自分が入社したときムズかった)
コード管理されず、手作業によるインフラ管理は盆栽になりやすい 課題 ステージング 本番 とりあえず変更... とりあえず変更... なんでこうなってんだっけ?
• パラメータを変えることで、あるテンプレート から環境ごとのリソースを作る 理想の状態 共通テンプレート stagingリソース productionリソース Env=production Env=staging
無意味な本番/ステージングの差分を防止 理想の状態 共通テンプレート stagingリソース productionリソース Env=production Env=staging
• 既存リソースをCFnスタックにimportする ◦ import作業は多少めんどい ◦ 再作成できない系リソースはこっちがいい • 既存リソースと等価なリソースをCFnで作成し、古いリソースを削除するリプレイス ◦ 作るのはラク
◦ 新たに作ったリソースが要件を満たしているかの確認を注意する必要がある • 新規作成系リソースは必ずCloudFormationで作る心構えをする ◦ 既存リソースをコード化するのに比べてラクなので新規作成時にコード化すべき 既存リソースをCloudFormation化していくアプローチ
• former2 をつかって本番/ステージングそれぞ れのリソースのテンプレートを得る • https://github.com/iann0036/former2 既存リソースをCFnスタックにimportする
• 本番/ステージングの同じ役割のリソースをFn::If 等を使って気合で1つのテンプレートにマージ • スタックにimportして、ドリフトが無いことを確認(ドリ フト検出できないリソースもある ) 既存リソースをCFnスタックにimportする
• 本番/ステージングの変な差分 課題 本番DB sg-xxx TCP 5432 allow from sg-zzz
ステージングDB sg-yyy TCP 5432 allow from 0.0.0.0/0
• Fn::Sub や Fn::Ref等を使って共 通テンプレートを整理する 既存リソースをCFnスタックにimportする
一旦既存の状態をそのままスタックにimportしてから細かく変更することで、影響範囲やレビュー 負荷を小さくできる
• 一旦既存の状態のままスタックにimportしてから細かく変更することで、影響範囲やレビュー負荷 を小さくできる • importの段階で多少の気合が必要 ◦ ドリフト検出を使って、テンプレートが正しく現状と合っているかは確認できる
既存リソースをCFnスタックにimportする
• ほぼコード化されていないAWSリソースをCloudFormationでコード化しています • CFn resource importで安全にCFn移行 コード化していまのところ良かったこと • (リソースの作成変更といった)作業漏れが発生しにくい
• マネコンから作るのに比べて、細かいパラメータへの意識 • レビューしやすい • ゴミが残りづらい • オンボーディングに便利(だと思う) おわりに
インフラはコードで管理しよう