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
1
800
異次元の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
まだ間に合う! 2025年のhono/ssg事情
watany
3
800
AIのメモリー
watany
13
1.6k
AIエージェントが書くのなら直接CloudFormationを書かせればいいじゃないですか何故AWS CDKを使う必要があるのさ
watany
21
8.8k
Coding Agentに値札を付けろ
watany
3
960
Vibe Codingをせずに Clineを使っている
watany
19
7.8k
ミリしらMCP勉強会
watany
4
1.1k
RemovalPoliciesのことを知ろう!
watany
2
240
エンジニアに許された特別な時間の終わり
watany
103
210k
AI Agent時代なのでAWSのLLMs.txtが欲しい!
watany
4
1.3k
Other Decks in Technology
See All in Technology
ブラウザ拡張のセキュリティの話 / Browser Extension Security
flatt_security
0
200
現地速報!Microsoft Ignite 2025 M365 Copilotアップデートレポート
kasada
2
1.8k
Datadog LLM Observabilityで実現するLLMOps実践事例 / practical-llm-observability-with-datadog
k6s4i53rx
0
180
IPv6-mostly field report from RubyKaigi 2026
sorah
0
210
グローバルなコンパウンド戦略を支えるモジュラーモノリスとドメイン駆動設計
kawauso
3
9.7k
Digital omtanke på Internetdagarna 2025
axbom
PRO
0
130
学術的根拠から読み解くNotebookLMの音声活用法
shukob
0
490
その意思決定、まだ続けるんですか? ~痛みを超えて未来を作る、AI時代の撤退とピボットの技術~
applism118
42
24k
mablでリグレッションテストをデイリー実行するまで #mablExperience
bengo4com
0
410
SRE視点で振り返るメルカリのアーキテクチャ変遷と普遍的な考え
foostan
2
2.2k
プロダクト負債と歩む持続可能なサービスを育てるための挑戦
sansantech
PRO
1
1.1k
クラウドネイティブ時代の 開発プロセス再設計 〜速さと品質を両立するには〜
moritamasami
0
120
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Designing Experiences People Love
moore
142
24k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
118
20k
Designing for humans not robots
tammielis
254
26k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
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