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 拡張コマンド~Rain~
Search
watany
May 24, 2024
Technology
0
530
異次元のCloudFormation 拡張コマンド~Rain~
Hibiya.Tech #5「愛情爆発!わたしの推し技術を語りたい」にてお話しした内容になります。
https://classmethod.connpass.com/event/316770/
watany
May 24, 2024
Tweet
Share
More Decks by watany
See All by watany
RemovalPoliciesのことを知ろう!
watany
2
43
エンジニアに許された特別な時間の終わり
watany
90
83k
AI Agent時代なのでAWSのLLMs.txtが欲しい!
watany
4
840
宇宙最速のランチRecap LT会(AWS re:Invent 2024)
watany
2
720
苦いビールを避ける冴えたやり方
watany
2
370
こんなにあるの? 最近のIPAトレンドを ざっくりまとめてみた
watany
3
860
消費者庁のページから学ぶ アウトプットでの比較で荒れない方法
watany
0
260
Deep Dive into Lambda Response Streaming
watany
1
130
”AWS CDKを選定しなかった理由”から見るCDKの現在地
watany
6
4.1k
Other Decks in Technology
See All in Technology
LINE Notify互換のボットを作った話
kenichirokimura
0
170
年末調整プロダクトの内部品質改善活動について
kaomi_wombat
0
180
技術的負債を正しく理解し、正しく付き合う #phperkaigi / PHPerKaigi 2025
shogogg
7
1.7k
問題解決に役立つ数理工学
recruitengineers
PRO
6
980
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
20k
バクラクでのSystem Risk Records導入による変化と改善の取り組み/Changes and Improvement Initiatives Resulting from the Implementation of System Risk Records
taddy_919
0
200
AI・LLM事業部のSREとタスクの自動運転
shinyorke
PRO
0
290
Why Go?
xpmatteo
0
130
OCI見積もり入門セミナー
oracle4engineer
PRO
0
100
お問い合わせ対応の改善取り組みとその進め方
masartz
1
280
開発組織全体で意識するSLI/SLOを実装している話
zepprix
1
800
ドメインイベントを活用したPHPコードのリファクタリング
kajitack
2
1.1k
Featured
See All Featured
Visualization
eitanlees
146
15k
It's Worth the Effort
3n
184
28k
Typedesign – Prime Four
hannesfritz
41
2.6k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
2.9k
Making Projects Easy
brettharned
116
6.1k
Building a Modern Day E-commerce SEO Strategy
aleyda
39
7.2k
Code Review Best Practice
trishagee
67
18k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
366
25k
For a Future-Friendly Web
brad_frost
176
9.6k
Building Your Own Lightsaber
phodgson
104
6.3k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
320
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Transcript
Hibiya.Tech #5 異次元のCloudFormation 拡張コマンド~Rain~ 2024-05-24
自己紹介 渡邉 洋平(watany) • NTTテクノクロス株式会社 • JAWS-UG東京 運営 • Japan
AWS Top Engineer 2023
CloudFormation運用をめぐる状況は厳しく • AWS CDKでラップして使う • AWS SAM派の人はわかる • 素で使うのは負け ※個人の見解です
Rainがいるぜ
Rain • CloudFormation(以下CFn)のテンプレート、スタックを管理するCLIツール • 公式RepositoryでOSSの形で提供されている • 現状も開発が継続されている(重要) https://github.com/aws-cloudformation/rain
CFnそのままだと何が困るか CFnの見直し理由 1. Templateを書きづらい • SupersetのCDKやSAMで解決する? • とはいえ既存資材がCFnのことはある。 • 生成AIの支援があれば、CFnで十分作れることも
2. Stackを運用しづらい • CDKやSAMでもよいが、この点ならRainで解決できる つまり、CFn運用へのペインを解決したいだけならRainが役に立つ
Rainの実例 CFnテンプレートのCRUD操作を例に紹介します 1. Create 2. Read 3. Update 4. Delete
1. Create
1.Create with AWS CLI • 作ったら非同期でStackIdだけが返却される。 ◦ 今の状態は? 失敗したら?
1.Create with Rain • 変更セットを表示し、y/nでデプロイ前確認がある • デプロイ中の状況をコンソールに出力される • 不正なテンプレートなら、ロールバックまでを表示
1.Create with Rain • OKテイク
2. Read
2.Read with AWS CLI • Stackの状況(StackName/StackStatus)を知りたい ◦ CLIの場合はjqを組み合わせると便利
2.Read with Rain • rainは同等の操作が簡単 • 「rain ls <stack-name>」でスタックの状況確認 ◦
「rain ls」でRegion内のスタック一覧、「rain ls -a」で全Region
2.Read with Rain • 「rain cat <stack-name>」でスタックの詳細確認
3. Update
3.Update with AWS CLI • Createと別のコマンド、Createと同じ問題 • > 作ったら非同期でStackIdだけが返却される。 ◦
> 今の状態は? 失敗したら?
3.Update with Rain • Createと同じ`rain deploy`でUpdate可能!(CDK相当)
4. Delete
4.Delete with AWS CLI • Deleteすると結果が標準出力されない(?!) ◦ 今の状態は? 失敗したら?
4.Delete with Rain • rain rm <stack>で「スタックの状態」「削除状況」「削除成否」を表示 ◦ 驚き最小限の挙動
いかがでしたか? • ここまでのまとめ ◦ CloudFormation APIの非同期性をRainが吸収してくれる ◦ コマンドも直観的。Linuxユーザなら扱いやすい。 • 想定問答
◦ これってAWS CDK CLIでも同様なのでは? ▪ はい。ただ、他にも色々できます。 ▪ CDKユーザも以降の機能のためにrainを入れた方がいいです。
5. CRUD以外にできること
Build
rain build • CFnテンプレートのひな型を作るためのコマンド • 例: うろ覚えでAPIDestinationを作る場合、 ◦ 公式ドキュメント無しでも「--list」で探して……
rain build • rain buildの引数に入れると、ひな型が出てくる!
rain build • -b(bare)を指定すると、必要最小限のひな型に
Logs
rain logs • Stackのイベントを人間が読みやすい形式にスッと出せる。 ◦ 「aws cloudformation describe-stack-events」はevent毎に10行くらいあるので読みづ らい。 ◦
マネジメントコンソールで見たい理由の半分 (私見)が解決
rain logs • CREATE_FAILEDの経緯も抜粋して表示。 ◦ logs –allで全表示できる
Tree
rain tree • CFn Templateの構造を表示してくれる
rain tree • dot形式も対応しているので、認知負荷をさらに減らせる
いかがでしたか? (2回目) • ここまでのまとめ ◦ RainはCRUD操作だけでなく、CFn Stackの運用に役立つ機能をCUIで提供。 ◦ 慣れるとGUでの参照より、CloudShell+Rainが快適になる! •
この辺の詳しい解説はカックさんの Blogも詳しい https://kakakakakku.hatenablog.com/entry/2023/05/05/110658
6. も~っと!CRUD以外にできること
Stackset
rain stackset <deploy / ls / rm> • rain stackset
でStackSetのCRUD操作が可能に! ◦ こちらの素のAWS CLI叩くの不便なのでありがたい。。。
Forecast
rain forecast (Experimental) • 実際のStack作成前に、失敗を予測する機能 ◦ Not Linter (rain fmtはTemplateのFormatter)
• 例:作成するBucket名被りを事前にチェック
• 現状は開発中。ロードマップの例 ◦ EIP制限のチェック ◦ EC2 Instance Typeが指定したAZで利用可能か? ◦ VPC
FlowlogsのFormatエラー ◦ etc… • ロードマップはGithub ◦ https://github.com/aws-cloudformation/rain/tree/main/internal/cmd/forecast rain forecast (Experimental)
Build + Claude3
• rain build…ひな型に値埋めてほしいな。 • 生成AIってやつで何とかならんか? → なる。 ◦ --model, --prompt
で指定する。 rain build + Generative AI
• こういうのが作れる ◦ ちなみにHaikuで作ると 上手く動かない … rain build + Generative
AI
• Opusで解決だ! ◦ わたしが追加しました rain build + Generative AI https://github.com/aws-cloudformation/rain/pull/374
まとめ • RainはCFnユーザ(SAM/CDK含む) 必須のツールである ◦ 悩んだら導入するくらいで良い • いまだに機能開発されて、まだまだ成長している • 2024年もRainを使ってこ
◦ https://github.com/aws-cloudformation/rain