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
350
異次元の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
苦いビールを避ける冴えたやり方
watany
2
150
こんなにあるの? 最近のIPAトレンドを ざっくりまとめてみた
watany
3
610
消費者庁のページから学ぶ アウトプットでの比較で荒れない方法
watany
0
110
Deep Dive into Lambda Response Streaming
watany
1
63
”AWS CDKを選定しなかった理由”から見るCDKの現在地
watany
4
2.3k
新常識! Javascript×AWS Lambdaがアツい!!
watany
3
390
Adaptor, Helmet, SSG
watany
0
260
祝10周年! AWS Lambdaのトレンドを 5分で見る
watany
2
240
なぜAWS向けのFrameworkに携わり続けるのか? ~クラウド時代のOSS活動~
watany
3
980
Other Decks in Technology
See All in Technology
AIチャットボット開発への生成AI活用
ryomrt
0
170
ドメイン名の終活について - JPAAWG 7th -
mikit
33
20k
SREが投資するAIOps ~ペアーズにおけるLLM for Developerへの取り組み~
takumiogawa
1
210
【Pycon mini 東海 2024】Google Colaboratoryで試すVLM
kazuhitotakahashi
2
500
TypeScriptの次なる大進化なるか!? 条件型を返り値とする関数の型推論
uhyo
2
1.6k
スクラム成熟度セルフチェックツールを作って得た学びとその活用法
coincheck_recruit
1
140
適材適所の技術選定 〜GraphQL・REST API・tRPC〜 / Optimal Technology Selection
kakehashi
1
400
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
2
600
Terraform CI/CD パイプラインにおける AWS CodeCommit の代替手段
hiyanger
1
240
100 名超が参加した日経グループ横断の競技型 AWS 学習イベント「Nikkei Group AWS GameDay」の紹介/mediajaws202411
nikkei_engineer_recruiting
1
170
Adopting Jetpack Compose in Your Existing Project - GDG DevFest Bangkok 2024
akexorcist
0
110
サイバーセキュリティと認知バイアス:対策の隙を埋める心理学的アプローチ
shumei_ito
0
380
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Why Our Code Smells
bkeepers
PRO
334
57k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Scaling GitHub
holman
458
140k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
Producing Creativity
orderedlist
PRO
341
39k
The Invisible Side of Design
smashingmag
298
50k
The Cult of Friendly URLs
andyhume
78
6k
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