9 チャプター
74 課題

コース概要

AWS 応用コースのメインテーマは、サーバレスアーキテクチャです。

これまでの「AWS基礎コース」や「実践コース」、さらには「Kubernetes応用コース」では、コンテナ技術を中心に学んできましたが、本コースでは一転して、Lambda、API Gateway、Step Functionsといった、サーバレスの文脈で登場するサービスを本格的に扱っていきます。

従来のコンテナによるアプリケーション運用とは異なり、サーバレスには独自の設計思想が求められます。そのあたりについても、各チャプターで丁寧に解説していきます。

サーバレスはややとっつきにくく感じるかもしれませんが、しっかりと構築できれば、名前の通り低コスト、スケーラブルで非常に強力な構成を実現できます。

ぜひこのAWS応用コースを通じて、サーバレスの持つ威力や、実務での運用ノウハウをとことん習得し、楽しんでいただければと思います。

前半では、フルサーバレス構成によるAPI基盤を構築していきます。

サーバレスAPI構成

サーバレスAPI構成

API Gateway + Lambda構成

実践コースまではECSを使っていましたが、応用コースでは Lambda を使って API、非同期処理のワーカー、バッチ処理などを実現していきます。

Lambda を API として外部に公開するには、API Gateway というサービスを前段におきます。

API Gateway には「HTTP API」と「REST API」の2種類がありますが、より機能が豊富で構築の難易度も高い REST API を選んで進めていきます。

バッチ処理と非同期処理

バッチ処理については、これまでと同様に EventBridge Scheduler を使います。ただし、EventBridge Scheduler からLambda を起動する構成では、アプリケーション内部のインターフェースが少し異なるため、その点もソースコードを使って丁寧に解説していきます。

SQSを使った非同期処理も扱います。

ECSでは常時起動するワーカーがポーリングしていましたが、Lambdaではそのような構成はできません。そのため、SQSからのイベントによってLambdaが起動される「プッシュ型」のアーキテクチャで、非同期処理を実現します。

Cognitoによる認証基盤の構築

今回新たに、認証基盤の構築にも踏み込んでいきます。

API GatewayとCognito と連携することで、インフラレイヤーだけで完結する認証基盤を簡単に構築可能です。具体的には、Cognito を API Gateway のオーソライザーとして紐付け、IDトークンベースの認証を実現します。

ただし Cognito を使いこなすには、そもそも認証・認可の仕組みを理解しておくことが重要です。

「Cognitoが何をしているのか分からない…」という状態にならないよう、少しバックエンド寄りの内容になりますが、認証・認可の基本的な仕組みについても丁寧に解説する課題を用意しています。

RDS Proxyの導入

Lambda から RDS に直接接続する構成でも、小規模なアクセスであれば十分捌けます。

しかし、高負荷のワークロードにおいては Lambda のスケーラビリティに対して RDS のコネクション数が追いつかず、DBコネクション枯渇のような問題が発生しがちです。

これを解決すべく、RDS Proxy を間に挟むことで コネクションプーリングを実現し、安定したDB接続を維持できるようにします。

加えて、RDS Proxy を導入すると、LambdaからRDSへの接続にIAM 認証が使えるようになります。これにより、環境変数にパスワードを持たせることなく、安全にRDSへアクセスできる激アツな構成を実現できます。

WAFによるセキュリティ強化とアクセス制御

最後に、AWS WAF(Web Application Firewall)を導入して、API Gateway を保護します。WAFを使うことで、悪意のある攻撃からAPIを守るファイアウォール的な役割を果たすことができます。

また、WAFは単なるブロック機能だけでなく、アクセス制御エンジンとしての役割も果たします。

たとえば、カスタムルールで一部アクセスを制御する、社内メンバー以外にメンテナンス画面を表示する、など、ちょっとした Nginx のような振る舞いをさせることも可能です。

多くの企業では、WAFを単なるブロッカーとして利用していますが、Cloud Praticaでは、知る人ぞ知る玄人向けの使い方についても習得していただきます。

AWS 応用コース Step Functionsパート

後半では、Step Functions(ステップ・ファンクションズ)というサービスを深く扱っていきます。チャプターは「入門編」と「応用編」の2つに分かれており、それぞれ段階的に学べる構成になっています。

入門編

はじめに、Step Functions が設計の手札としていかに強力かという点に触れつつ、どのように活用すると効果的かを、僕自身の実例を交えて紹介していきます。

その上で、Step Functions 独自の文法や操作方法を、手を動かしながら実践的に学習していきます。

特に、Step Functions で使用する JSONata という便利な表現方法についても詳しく解説し、実際に以下のような基本的な動作をハンズオン形式で体験していきます。

・Step FunctionsからLambda、ECSタスクを起動 ・条件分岐(入力による分岐) ・並列実行(平行処理) ・並列ループ実行

Step Functions 入門編 グラフビュー

応用編

応用編ではメディア圧縮ワークフローを題材に、より実践的な構成に挑戦していきます。

たとえば、入力が画像であれば Lambda による圧縮処理、動画であれば ECS タスクを起動して処理、それらを並列で高速に捌く、といったワークフローを徐々に拡張を重ねていくハンズオン形式で習得してもらいます。

Step Functions は「なんとなく難しそう」と感じるエンジニアも多いですが、正しく使いこなせれば非常に強力な設計ツールになります。

この後半のチャプターを通じて、Step Functions をマスターし、今後の設計力・構成力の引き出しを一段と広げてもらえたら嬉しいです。

Step Functions 応用編 メディア圧縮ワークフロー

学習ポイント

  • API Gateway(REST API)+ Lambda によるサーバレスAPI構築
  • SQSを活用したプッシュ型の非同期処理アーキテクチャ
  • EventBridge Scheduler によるサーバレスバッチ処理
  • Cognito による認証基盤の構築(IDトークン / 認証・認可の基礎)
  • RDS Proxy + IAM認証によるパスワードレスなDB接続
  • AWS WAF によるセキュリティ強化とアクセス制御
  • Step Functions 入門(JSONata / 条件分岐 / 並列実行)
  • Step Functions 応用(メディア圧縮ワークフローの構築)
Ch.01 AWS 応用コースのオンボーディング
01 AWS 応用コースの全体像を把握する
02 AWS 応用コースで必要なAWSのコスト感を掴む
03 AWS 応用コースを学習する前に突破しておくべきコースについて
04 AWS 応用コースでのGitHubリポジトリの運用方法を知る
Ch.02 Lambda + RDS構成でSlack Metrics を構築する
01 APIの実行環境としてLambdaを選定するポイントまとめ
02 【動画】API Gateway × Lambda構成の全体像を把握する
03 Slack Metrics × Lambda の設計思想を読み解く
04 環境変数を格納するParameter Storeを作成する
05 Slack Metrics API用のLambdaの周辺リソースを作成する
06 Slack Metrics API用のLambdaを作成する
07 EventBridge Scheduler + Lambdaによりバッチ処理を行う
08 SQS + Lambda により非同期処理を行う
09 【動画】LambdaによるバックエンドのCI/CD戦略を知る
Ch.03 API GatewayによりAPIを公開する
01 API Gateway入門 - 実務でやりがちなLambda連携のアンチパターンを知る
02 API GatewayにてRESTタイプとHTTPタイプどちらを選べば良いか?
03 API GatewayをREST APIタイプで構築する
04 API Gatewayにてリソースとメソッドを作成する
05 API GatewayにSlack Metrics用のLambdaをプロキシ統合する
06 API Gatewayのデプロイ、ステージの作成を行う
07 API Gatewayをカスタムドメインで公開する
08 API Gatewayの関連リソースをTerraform化する
Ch.04 Cognitoにより認証を実現する
01 認証・認可を制する者がバックエンドを制す!OAuth 2.0 & OIDC集中講座
02 【動画】Cognitoにより認証を実現する全体像を知る
03 【動画】Cognito ユーザープール、アプリケーションクライアントを作成する
04 Cognito ユーザープールでカスタム属性を追加する
05 アプリケーションクライアントにて属性権限とスコープを設定する
06 【動画】Cognitoによる認証の中間動作確認を行う
07 API GatewayのオーソライザーとしてCognito ユーザープールを連携する
08 Cognito認証を含めて、Lambda APIの動作確認を行う
09 Cognito関連リソースをTerraform化する
10 【完全版】Cognitoを使って認証基盤を構築する時の2つの設計パターン
Ch.05 RDS Proxyにより商用レベルのアクセスを実現する
01 RDS Proxy入門
02 【動画】RDS Proxyを導入する全体像を把握する
03 RDS Proxy用のセキュリティグループ、IAMロール、Secrets Managerを作成する
04 RDS Proxyを作成する
05 【コードリーティング】DB接続をRDS Proxy経由に切り替える
06 【動画】API Gateway → Cognito → Lambda → RDS Proxy の動作確認を行う
07 RDS Proxy関連リソースをTerraform化する
08 【コスト削減】RDS Proxyをお掃除する
Ch.06 WAFにより堅牢なアプリケーションを構築する
01 WAFとは?
02 【動画】WAFのAWSマネージドルールを適用してSQLインジェクションをブロックする
03 WAFでブロック可能なパターンを知る
04 WAF カスタムルール特訓
05 WAFのカスタムレスポンスによりシステムメンテナンス画面を表示する
06 WAFを5年使い続けて蓄積した、絶対に知っておきたい運用ノウハウ
07 【動画】WAFの運用から考える、APIの前段にCloudFrontを挟むべきか問題
Ch.07 Step Functions 入門編
01 Step Functionsとは? ー 非機能要件突破の最後の切り札
02 Step Functions の使い所を知る ー 非機能要件突破の事例集
03 【動画】Hello Step Functions
04 【動画】変数と JSONata により状態間でデータを渡す
05 【動画】ステートマシンで作って学ぶ!JSONata実践トレーニング
06 【動画】Cloud PraticaアカウントのStep Functions定義を参考にする方法
07 【動画】Step FunctionsからLambdaを起動する
08 【動画】Step Functionsのデバッグのコツを知る
09 Step FunctionsからECSタスクを起動する
10 Choiceステートにより分岐処理を行う
11 Parallelステートを活用して並列化を図る
12 【動画】Mapステートにより並列ループ処理を行う
Ch.08 Step Functions 応用編
01 メディア圧縮ワークフローの全体像について把握する
02 メディア圧縮ワークフロー用のステートマシンを作成する
03 Lambdaにより画像圧縮処理を行う
04 ECSにより動画圧縮処理を行う
05 Choiceにより画像と動画の入力を識別して分岐処理を行う
06 Mapステートにより複数のメディアを並列に圧縮する
07 Mapステートにてエラーキャッチを行う
08 FormatステートでMapステートの出力を整える
09 メディア圧縮ワークフローの結果をSlackへ通知する
10 Step Functionsを起動する4つの手札を知る
11 S3アップロードをトリガーにLambdaからメディア圧縮ワークフローを開始する
12 【動画】Step FunctionのワークフローをTerraform化する
13 Step Functionsのまとめ
Ch.09 AWS 応用コース ラップアップ編
01 【任意】AWS 応用コースのAWS構成図を書いてみよう
02 AWS 応用コースの最終課題を提出する
03 AWS 応用コース突破後の学習ロードマップとお掃除について

コース突破者の声

Y.Y さん 受講完了

これまでECS中心の構成に慣れていたため、Lambdaのライフサイクルやコールドスタートを意識した設計は新鮮でした。特にRDS Proxy + IAM認証によるパスワードレスなDB接続は、コネクション枯渇問題を解決しつつセキュアな接続を実現できる点で、実務で即活用したい構成です。

K.H さん 受講完了

今回のコースもかなりボリューム感があって大変でしたが、凄く楽しかったです!

T.S さん 受講完了

API Gatewayは技術選定時にちょうどよい候補に上がったりするのですが、自分に知見がなく中々採用していませんでした。ただ、今回色々触ってみて結構使い所がわかりました。

M.K さん 受講完了

認証認可周りはこれまで実装する機会があまりなく、現在の参画先でもアプリチームの担当範囲になっていることが多い様子のため、今回応用コースで一通り経験でき、理解がとても深まりました。