Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Hibiya.Tech #5 異次元のCloudFormation 拡張コマンド~Rain~ 2024-05-24
Slide 2
Slide 2 text
自己紹介 渡邉 洋平(watany) ● NTTテクノクロス株式会社 ● JAWS-UG東京 運営 ● Japan AWS Top Engineer 2023
Slide 3
Slide 3 text
CloudFormation運用をめぐる状況は厳しく ● AWS CDKでラップして使う ● AWS SAM派の人はわかる ● 素で使うのは負け ※個人の見解です
Slide 4
Slide 4 text
Rainがいるぜ
Slide 5
Slide 5 text
Rain ● CloudFormation(以下CFn)のテンプレート、スタックを管理するCLIツール ● 公式RepositoryでOSSの形で提供されている ● 現状も開発が継続されている(重要) https://github.com/aws-cloudformation/rain
Slide 6
Slide 6 text
CFnそのままだと何が困るか CFnの見直し理由 1. Templateを書きづらい ● SupersetのCDKやSAMで解決する? ● とはいえ既存資材がCFnのことはある。 ● 生成AIの支援があれば、CFnで十分作れることも 2. Stackを運用しづらい ● CDKやSAMでもよいが、この点ならRainで解決できる つまり、CFn運用へのペインを解決したいだけならRainが役に立つ
Slide 7
Slide 7 text
Rainの実例 CFnテンプレートのCRUD操作を例に紹介します 1. Create 2. Read 3. Update 4. Delete
Slide 8
Slide 8 text
1. Create
Slide 9
Slide 9 text
1.Create with AWS CLI ● 作ったら非同期でStackIdだけが返却される。 ○ 今の状態は? 失敗したら?
Slide 10
Slide 10 text
1.Create with Rain ● 変更セットを表示し、y/nでデプロイ前確認がある ● デプロイ中の状況をコンソールに出力される ● 不正なテンプレートなら、ロールバックまでを表示
Slide 11
Slide 11 text
1.Create with Rain ● OKテイク
Slide 12
Slide 12 text
2. Read
Slide 13
Slide 13 text
2.Read with AWS CLI ● Stackの状況(StackName/StackStatus)を知りたい ○ CLIの場合はjqを組み合わせると便利
Slide 14
Slide 14 text
2.Read with Rain ● rainは同等の操作が簡単 ● 「rain ls 」でスタックの状況確認 ○ 「rain ls」でRegion内のスタック一覧、「rain ls -a」で全Region
Slide 15
Slide 15 text
2.Read with Rain ● 「rain cat 」でスタックの詳細確認
Slide 16
Slide 16 text
3. Update
Slide 17
Slide 17 text
3.Update with AWS CLI ● Createと別のコマンド、Createと同じ問題 ● > 作ったら非同期でStackIdだけが返却される。 ○ > 今の状態は? 失敗したら?
Slide 18
Slide 18 text
3.Update with Rain ● Createと同じ`rain deploy`でUpdate可能!(CDK相当)
Slide 19
Slide 19 text
4. Delete
Slide 20
Slide 20 text
4.Delete with AWS CLI ● Deleteすると結果が標準出力されない(?!) ○ 今の状態は? 失敗したら?
Slide 21
Slide 21 text
4.Delete with Rain ● rain rm で「スタックの状態」「削除状況」「削除成否」を表示 ○ 驚き最小限の挙動
Slide 22
Slide 22 text
いかがでしたか? ● ここまでのまとめ ○ CloudFormation APIの非同期性をRainが吸収してくれる ○ コマンドも直観的。Linuxユーザなら扱いやすい。 ● 想定問答 ○ これってAWS CDK CLIでも同様なのでは? ■ はい。ただ、他にも色々できます。 ■ CDKユーザも以降の機能のためにrainを入れた方がいいです。
Slide 23
Slide 23 text
5. CRUD以外にできること
Slide 24
Slide 24 text
Build
Slide 25
Slide 25 text
rain build ● CFnテンプレートのひな型を作るためのコマンド ● 例: うろ覚えでAPIDestinationを作る場合、 ○ 公式ドキュメント無しでも「--list」で探して……
Slide 26
Slide 26 text
rain build ● rain buildの引数に入れると、ひな型が出てくる!
Slide 27
Slide 27 text
rain build ● -b(bare)を指定すると、必要最小限のひな型に
Slide 28
Slide 28 text
Logs
Slide 29
Slide 29 text
rain logs ● Stackのイベントを人間が読みやすい形式にスッと出せる。 ○ 「aws cloudformation describe-stack-events」はevent毎に10行くらいあるので読みづ らい。 ○ マネジメントコンソールで見たい理由の半分 (私見)が解決
Slide 30
Slide 30 text
rain logs ● CREATE_FAILEDの経緯も抜粋して表示。 ○ logs –allで全表示できる
Slide 31
Slide 31 text
Tree
Slide 32
Slide 32 text
rain tree ● CFn Templateの構造を表示してくれる
Slide 33
Slide 33 text
rain tree ● dot形式も対応しているので、認知負荷をさらに減らせる
Slide 34
Slide 34 text
いかがでしたか? (2回目) ● ここまでのまとめ ○ RainはCRUD操作だけでなく、CFn Stackの運用に役立つ機能をCUIで提供。 ○ 慣れるとGUでの参照より、CloudShell+Rainが快適になる! ● この辺の詳しい解説はカックさんの Blogも詳しい https://kakakakakku.hatenablog.com/entry/2023/05/05/110658
Slide 35
Slide 35 text
6. も~っと!CRUD以外にできること
Slide 36
Slide 36 text
Stackset
Slide 37
Slide 37 text
rain stackset ● rain stackset でStackSetのCRUD操作が可能に! ○ こちらの素のAWS CLI叩くの不便なのでありがたい。。。
Slide 38
Slide 38 text
Forecast
Slide 39
Slide 39 text
rain forecast (Experimental) ● 実際のStack作成前に、失敗を予測する機能 ○ Not Linter (rain fmtはTemplateのFormatter) ● 例:作成するBucket名被りを事前にチェック
Slide 40
Slide 40 text
● 現状は開発中。ロードマップの例 ○ EIP制限のチェック ○ EC2 Instance Typeが指定したAZで利用可能か? ○ VPC FlowlogsのFormatエラー ○ etc… ● ロードマップはGithub ○ https://github.com/aws-cloudformation/rain/tree/main/internal/cmd/forecast rain forecast (Experimental)
Slide 41
Slide 41 text
Build + Claude3
Slide 42
Slide 42 text
● rain build…ひな型に値埋めてほしいな。 ● 生成AIってやつで何とかならんか? → なる。 ○ --model, --prompt で指定する。 rain build + Generative AI
Slide 43
Slide 43 text
● こういうのが作れる ○ ちなみにHaikuで作ると 上手く動かない … rain build + Generative AI
Slide 44
Slide 44 text
● Opusで解決だ! ○ わたしが追加しました rain build + Generative AI https://github.com/aws-cloudformation/rain/pull/374
Slide 45
Slide 45 text
まとめ ● RainはCFnユーザ(SAM/CDK含む) 必須のツールである ○ 悩んだら導入するくらいで良い ● いまだに機能開発されて、まだまだ成長している ● 2024年もRainを使ってこ ○ https://github.com/aws-cloudformation/rain