AWSを楽しく学ぶ! AWSピタゴラ(ひとり)選手権

技術関連
clock

2021.11.30

SUMI

こんにちは、sumiです。
突然ですが、みなさんAWSの学習は楽しんでいますか?

11/20〜21に開催されました狂気の24時間のオンラインイベント、JAWS PANKRATION 2021 にて登壇してきましたので、わたしのセッション内容の補足がてら、AWSを楽しく学習するポイントについて書きたいと思います。

自己紹介

今更ですが Sumi といいます。オークンでは2年目社員で、情シスのお仕事をしています。業務ではあまり開発はしておらず、それほどAWS使っているわけではないのですが、AWSアカウントの管理や統制あたりをのんびり担当しています。

社外活動では AWS Startup Community のコアメンバーと、AWS Community Builder Program の Management & Governance + Migration Topicのメンバーをやってます。AWSのレベルは初心者です。

AWSの学習

AWSにはいろんな学習方法があります。公式のホワイトペーパーやBlackbeltといったドキュメントはもちろん、トレーニング、ハンズオン、ユーザーグループの開催する勉強会など自分に合った方法で学ぶことができます。これらの学習のためにかかるコストはほとんどありません。

AWSを理解する上ではドキュメントを読むだけではなかなかイメージしづらいところもあります。なので、「手を動かす」「自分で考える」というところはとても重要です。

そこで、私が今回おすすめしたいのが「AWSピタ◯ラ(ひとり)選手権」です。(ちょっと気持ち伏せ字にw)

AWSピ◯ゴラ選手権

これは、2021年3月に開催された "JAWS DAYS 2021" の中で行われた企画で、簡単なお題に対してできるだけ複雑なアーキテクチャを考えて発表するといった、AWSベースのゲームです。

このゲームでは、実装の必要はなく構成図を考えるだけなのですが、
「このサービスはどういった動きができるのか」
「これは何をトリガーに発火するのか」
「他になんか面白いサービスはないか」

といったことを調べていると、いつのまにか知らなかったサービスに出会えたり、幅広い知識を身につけることができます。

複数人でやると盛り上がりそうですし、一人でもブログや登壇という形でアウトプットするとなかなか楽しい遊びです。w

お題を設定して遊ぼう

今回自分に課したテーマは「AWS Organizations の管理アカウントからメンバーアカウントを作成する」といったものにしました。

私は、ちょうどAWSアカウントの作成を自動化したいなーと考える機会があったもので、ちようどいい題材かなと思ってこのテーマにしましたが、「S3にファイルをいれる」「DBにデータをいれる」といったシンプルな課題でもokです。

で、完成したアーキテクチャ図がこちらです。

この中でも特に推しなAWS Service が Step FunctionsEvent Bridge です。

AWS Step Functionsで連鎖! 連鎖!

まずAWS Step Functions。通称ステファン。(?)
これはサーバレスなワークフローを簡単にまとめてくれる超便利なサービスです。Step Functions ではLambda, DynamoDB, SNS, SQS など、様々なサーバレス向けのサービスとの連携がサポートされていて、ASL(Amazon States Language)と呼ばれる独自言語を使って対象のリソースを指定することで、そのリソースから値や状態を取得することができます。

2021年11月末の時点では、AWS Step FunctionsでサポートされるAWSサービスの数は200以上、AWS APIアクションの数を9,000以上に、AWS SDK ServiceIntegrations で拡張しているとのことです。

https://aws.amazon.com/jp/blogs/aws/now-aws-step-functions-supports-200-aws-services-to-enable-easier-workflow-automation/

なんとOrganizationsのCreateAccountを含むあらゆるアクションもここから呼び出せるなんて素晴らしいですね。

Lambda や EC2 なんかで処理をがっつり書くことももちろんできますが、今どきクールな方法とはいえません。業務フローに変更が生じた場合、わずかな変更のために複数の箇所の変更が必要になり、同じコードを何度も書き直すことになってしまいます。

なので、タスクごとにLambdaで処理をわけたり、AWS上のマネージドなサービスを活用してStep Functionsでワークフローとして管理すると、デバッグやメンテナンスも楽に管理することができるようになります。
タスクを分割して順に呼び出すもよし、並列処理させるもよしでなかなかおしゃれで最高のサービスです。

ただ、ちょっと…ASLの記述に慣れるまでにはもう少し時間がかかりそうです…

Event Bridge はトリガーにできるイベントがいっぱい!

Amazon EventBridge はイベントを使ってアプリケーションを接続してくれるサービスなんですが、これがまたトリガーとすることができるサービスが多くて最高なんです。AWSで発生するイベントはもちろん、パートナーSaaS(Auth0,Mackerel, Zendeskなど) から発生したイベントもトリガーにしてAWSサービスを起動させることができるハブ的なサービスです。
連携大好きな情シスな方にもかなり突き刺さるサービスではないでしょうか。

AWS SSOのアクションもStep Functions から呼び出せるようになったので、わざわざEventBridge を呼び出すなんて無駄じゃんって思いますが、今回はゲームなので…使ってみたかったということで…w

まぁとにかく、イベント駆動最高ですね!!

SQS + Power Automateでグループメールを発行

ここはAWSにあまり関係ない部分なので発表の中では割愛しましたが、個人的にはAWSとPowerPlatformの組み合わせも大好きです。

Power Automate (PA) を使って、Microsoft Formsからグループメールを作成&Excelに追記というフローは既にやってみたことがあったのですが、PAのコネクタを漁っていたところ、SQSにメッセージキューが入ったのをトリガーにフローを発動させることができるコネクタを発見し、構成図の中に突っ込んでみました。

フローとしては本当に簡単なもので、SQSから取得したデータをもとにAzureADグループを作成してしまおうというものです。新しく作成されたグループのメールでメンバーアカウントを作成し、さらにAADグループはoktaに連携されていますので、AWS Single Sign On(AWS SSO) に連携させてやろうというイメージです。

試してみたいサービスいろいろ

これは無駄に複雑な構成を考える遊びなので、もっと複雑にしてもよかったのですが、わたしのAWS力ではこれが限界でした…。これから精進してもっと複雑な構成を組み立てられるようになりたい所存です。

発表の中ではIoT Coreを理解することができなかったので除外しましたが、これを使うことができれば、ドミノ倒しをしてボタンを押してなんらかのサービスを起動させるといったようなリアルピタゴラ装置も作れるんじゃないかという非生産的なアイデアはよぎりました。
IoT系のサービスを使ったことがないので、作成依頼がきたらパトランプを光らせてみるなどといった、業務では役に立ちそうにないこともいつか挑戦してみたい気持ちです。

このゲームで除外すべきサービス

このゲームで遊ぶ上で、コストや可用性、リードタイムの​​理由で、特定のサービスを使用することは禁止するなどの制約は必要だなぁと思いました。
以下のサービスは使用禁止のルールにしても良いかもしれません。

  • Outposts
  • Ground Station
  • IoT GreenGrass
  • Marketplace
  • Support
  • Managed Services
  • Snowball

本当にできるのか実装してみる

このゲームでは実装の必要はありませんが、理解を深めるために実際にAWSサービスを触ってみることも大事です。

ということで StepFunctions デビューしてみました。

ビジュアルエディタのおかげでちょっと気持ち取り組みやすいですね。
私がwebエンジニアを離れて6年くらいになりますが、EC2やLambdaの中でゴリゴリやってた時代は終わったんだなぁと老害っぽい発言をしてみます。

このアーキテクチャにたどり着く以前、わたしはSlack からAWS Chatbotを経由してLambdaを起動させてAWSアカウントを自動作成する簡単なフローを作っていました。これはこれで学びがありました。

わたしのはじめてのアカウント作成自動化

イケてないのはおいといて、Slackへのレスポンスは3秒以内でなければいけないという制約があったり、LambdaからOrganizationsのAPIを呼び出すためにSTSが必要だったり、IAMロールの権限設定について悩んだり、CloudFormationの書き方を調べたりと、実際に触って壁にぶつかって解決していくことで学びは深まりました。

ピタ◯ラ改め、サーバレス自動化楽しい

ハンズオンが "特定のサービスやケースに対して深く理解をする" のに対して、ピ◯ゴラ選手権は "AWSにあるたくさんのサービスを広く知る" ことに特化した学習方法だと思いました。

ピタ◯ラ選手権を通じてサーバレス・アーキテクチャへの第一歩を踏み出したわけですが、なんだかパズルを組み立てるようでとても楽しかったです!

AWSに限らずですが「楽しい!」という気持ちは、学びを継続するためには欠かせないものです。楽しいと思ったことは「もっとやりたい」と思うものですし、楽しんでこそ学びは深まるのだと思います。オークンでも「楽しい!」という気持ちを大事にしているからこそ、意欲的なメンバーが揃っているのかもしれませんね。

とはいえ、「楽しい」を目的にはしてはいけません
特に実業務の場合は「何のために自動化をするのか」という目的を忘れずにアーキテクチャを考えることが求められます。しかし、知識がなければ目的を果たすために何もできませんので、知識という武器を身につけていくことが大事です。

わたしもこのゲームで学び得た知識を使って、実際にAWSアカウント作成業務におけるオペミスをなくすことを目的にサーバレス自動化を作ってみようと思ったので、出来上がったらまたブログで報告したいと思います。

では!

https://speakerdeck.com/sumi/lets-play-and-learn-by-chaining-the-launch-of-aws-services

カテゴリー

最新の記事

2023年に参加した初めてのホノルルマラソンを終えて

2024.1.5

2023年の振り返りと2024年の展望について

2024.1.4

会社で運動会をやったら予想以上に盛り上がった

2024.1.4

【仕事って何?】過去の自分が抱えていた疑問に対する、現在の自分からのアンサー

2023.12.25

オークン"らしい"YouTubeチャンネル運用

2023.12.25

CONTACT

お問い合わせはこちらから。