JAWS-UG 初心者支部で、ハンズオン講師をやってみました!
「AWS LambdaとServerless Advent Calendar 2022」の20日目の担当ブログです。
(19日目は 福井さん 、明日、21日目は中山さんの担当回です! )
ひょんな事から、初心者向けの AWS Lambda の CI/CD 構築ハンズオンの資料を作成し、JAWS-UG 初心者支部でハンズオン講師をすることになったので、そちらのご紹介と簡単な補足記事を。
きっかけ
JAWS-UG 秋田 から流れてきたツイートがきっかけでした。
ちょうど、CodeBuild あたりで、あれこれ試していた、というタイミングでもあって、なんとなくコメントを残してみると
「初心者向けのハンズオンが欲しい!!!」
という、スライドが出てきたみたいなので、「じゃあ、やったろうやないかい!」ってことで、作ってみました。
作ったもの
今回構築したものは、GitHub Pages で公開しています。
おかしいところが、あったら左下のボタンからGitHub の Issue に飛んだりはできます。要望があったら次につながるかもかも?
https://miura-bd.github.io/lambda-ci-cd-handson/#0
2022年12月15日に開催されたJAWS-UG 初心者支部で、実際にハンズオン勉強会を実施しました。
https://jawsug-bgnr.connpass.com/event/267203/
初心者向けってことで、、、
自分のところの環境だと、GItHub に Serverless Framework を monorepo でまとめてて、ディレクトリ毎にプロジェクトを CodeBuild 側に用意して、IDE はVisual Studio Code で。って構成なのですが、これだと、初心者の方向けの構成としては、なかなかハードルが高いのではないか、ということになりまして、、
初心者支部の運営の方々といろいろ相談していく中で、「すべてAWSに寄せる」という形で、ハンズオン資料を構成してみました。

リポジトリは CodeCommit
フレームワークは AWS SAM
CI/CD は CodeBuild と CodePipeline
IDE は Cloud9
という構成で、ハンズオン構成を考えてみました。
実際構築するなんとなくの全体像はこんな感じ

CodeBuild を1つのプロジェクトで複数環境を賄うのは、全てのパターンでハマるわけではないのですが、CodePileline からの CodeBuild の環境変数の上書き機能を知って欲しかったので、入れてみました。
「Lambad の構築環境って、なんも用意してないなー」って方は、ぜひ、本当に最小限で、テストもへったくれも入っていませんが、基本となるベースの部分に関しての最低限の構築は体験できる構成になっていますので、ぜひお試しいただければと思います。
ハンズオンの資料を作ってみて
制限時間90分、前提知識が無しでもとりあえず完走できるレベル。という条件でいろいろ考えつつ、初心者支部の運営のみなさんのフィードバックをいただきながら(本当に感謝です)直前までいろいろ調整して資料の作成を行いました。GIt の説明とか、SAM の説明とかをガッツリ省略してしまったので、この辺りで、次に発展させようとするときにちょっとハードル高いかもしれまっせん。
AWS SAM
SAM の何がいいって、マスコットキャラクターのリスが可愛い。

基本的には、CloudFormation の拡張として捉えつつ、詳しくはドキュメントや Blackbelt あたりを見ていただければ、使い方がわかると思います。
(今回作成したハンズオンでは、主題から離れてしまうので、細かいところをガッツリ省略しています。sam init
すら触れていません。この辺りは、ぜひ、単体でお試しの上、組み込んでいただければと。)
sam pipeline
っていう、今回のハンズオンなんだったの?ってコマンドもあったりしますw
反省
まぁ、re:Invent でひたすら遊んでしまったので、資料作成がギリギリになってしまって、初心者支部の運営の皆さんには本当にご迷惑をかけてしまいました。
ドライランして上で、細かい修正点の洗い出しなど、本当にありがとうございました。おかげさまで、資料の精度はだいぶ向上したんじゃないかと!!
アンケートを見る限り(ご回答ありがとうございました!運営のモチベーションになるので何卒ほかのところでも)とりあえず、完走できた方が多そうな感じだったので、よかったです。
まぁ、あと、re:Invent で発表されていた CodeCatalyst さんがこの辺りの開発環境をまるっと担ってくれるサービスで、ちょっと触ってみた感触では、だいぶいい感じに見えてので、来年の今頃には、この資料が腐っている気がしてなりません笑
https://zenn.dev/shigeru_oda/articles/ce1a6bac21f0270e6612
初心者支部のおださんのブログ貼っておきます。
資料の作成で使ったツール
初心者支部の運営で、AWS Samurai 2019 の同期で、JAWS DAYSでハンズオンも担当されいた、だけださんから、教えてもらった CLaaT を使ってみました。
https://zenn.dev/taketakekaho/articles/6e9483bc984243
こちらのブログでは、Google Docs での構築方法が紹介されていますが、私は「Gitで管理できた方がいい気がする!」と markdown で書いてみましたが、画像を入れるところが苦痛でした笑
良きサーバーレス ライフを!
いまだに、VPCの内側だったり、インスタンスって概念のあるサービスには資格勉強以外で手を出したことがないですが、それでも普通にサービスを作れているので、最小限の勉強で、最大の効果をすためにはサーバーレス構成はかなりいいと思います!
複雑な処理が必要になってきたら、Step Functions があります!!
サーバーレス盛り上げていきまっしょい!