[AWSハンズオン]「はじめてのサーバレス」をやってみた

API GatewayやCognito、Amplifyが何もわからん方でも大丈夫です
2023.06.15

こんにちは、洲崎です。
AWSハンズオンの「はじめてのサーバレス」をやってみたのですが、ボリュームが多くやってよかったのでご紹介します。

「はじめてのサーバレス」とは

「はじめてのサーバレス」は、誰もが知る亀田さんがGithubで公開しているハンズオンです。

最終更新日が2021/11なので少し古めですが、一部気をつければ完走することができます。
GithubにあるScenario.pdfServerlesshandson.zipを使って進めていきます。

step-by-stepで下記サービスの構築方法を学ぶことができます。

  • AWS Cloud9
  • AWS Lambda
  • Amazon DynamoDB
  • AWS API Gateway
  • Amazon Cognito
  • AWS Amplify

上記サービスを今まで触ったことがなくとも、設定方法が丁寧に記載されているので大丈夫です。
実際に私はAWS API Gateway、Amazon Cognito、AWS Amplifyを触ったことがなかったのですが、スムーズに構築することができました。

ハンズオンの構成

ハンズオンは2つのラボで構成されています。

  • 準備
    • AWS サービス: AWS Cloud9
  • ラボ1:サーバーレスアプリケーションを step-by-step で構築する
    • AWS サービス: Amazon DynamoDB、AWS Lambda、Amazon API Gateway、Amazon Cognito
  • ラボ2:Amplify を使ってサーバーレスアプリケーションを構築する
    • AWS サービス: AWS Amplify、Amazon DynamoDB、AWS Lambda、Amazon API Gateway、Amazon Cognito

実際やってみてかかった時間は4時間ほどでした。
細かな手順はハンズオンの中にあるので、各章ごとにコメントをあげていきます。

各章の感想やコメント

準備

ハンズオンで利用するCloud9を構築しました。
Cloud9はクラウド上で利用できるIDE(統合開発環境)です。
ローカル端末に縛られることなく、同じ開発環境を複数メンバーで同時編集可能です。
AWSのハンズオンでもローカルの依存がない為、スムーズに実行できるようにCloud9を利用するケースがあります。

基本的にハンズオンの流れで進めていけば、Cloud9の環境を構築することができました。
1つ注意点があり、Cloud9の構築でパブリックサブネットを利用する場合はパブリックIPv4アドレスの自動割り当てが必要です。
マネジメントコンソールの流れに沿ってデフォルトで進めていくとコケると思うので、その際はパブリックIPアドレスを自動割り当てができてるかを確認してみてください。

それ以外は比較的スムーズに準備することができました。

ラボ1:サーバーレスアプリケーションをstep-by-stepで構築する

この章では、API Gateway→Lambda→DynamoDB経由で、DynamoDBテーブルの項目を参照したり書き込むハンズオンでした。
ラボの中で利用するLambdaはNode.js 16.xのランタイムを選択するとスムーズにいきます。
事前にDynamoDBに用意されているLambdaを利用してデータを書き込んで、API GatewayのGetメソッドで参照します。
また、API GatewayのPOSTメソッドでDynamoDBのテーブルに新しい項目を書き込みます。
DynamoDBのテーブルを見ながら動作を確認できたので分かりやすかったです。
事前にWebのサンプルページに組み込み、WebブラウザでもGetメソッド・Postメソッドを体験することができたのもよかったです。

CognitoはユーザープールとIDプールを作成し、それもWebのサンプルページに組み込みました。
Cognitoのユーザーのアクティベート方法や、認証できている場合・できていない場合を体系的に学ぶことができました。

ラボ2:Amplifyを使ってサーバーレスアプリ ケーションを構築する

ラボ2ではAmplifyを中心に、ラボ1でやった「GET メソッド」や「POST メソッド」を体験しました。
Amplifyは2023/6現在、下記サービスが展開されています。

  • Amplify Studio (ビジュアルインターフェイス)
  • Amplify CLI (コマンドラインインターフェイス)
  • Amplify Libraries (オープンソースクライアントライブラリ)
  • Amplify UI Components (オープンソースデザインシステム)
  • Amplify Web Hosting (マネージド CI/CD とホスティング)

その中で、今回のラボではAmplify CLIAmplify LibrariesAmplify Web Hostingを利用しました。

Amplify CLIは文字通り、CLI(今回はCloud9のターミナル上)で対話形式で設定しました。
内容をy/n、もしくは選択式で進めていくので、コードの記述など必要なく設定しやすいなと感じました。
また、対話形式の中でAPI Gatawayや、Lambda関数、IAMロール(Lambda実行ロール)、DynamoDBテーブルを作成することができました。

1点、Amplifyの前の準備ですが、Cloud9のディスクを拡張する必要があります。
Cloud9はVPC内のEC2とEBSで構成されている為、ディスクサイズの拡張=EBSのボリュームサイズを変更、という形になります。
Cloud9上でシェルスクリプトを実行しますが、上手くいかないケースがあります。(GithubのREADMEにも記載があります)
上手くいかなかった場合はドキュメントを見るか、下記ブログを参照ください。(私はブログを参照してうまくいきました)

Amplify Libraryのインストールや、Cognitoとの連携、Amplify Consoleによるホスティング(CloudFront不要)などを学べます。
ここら辺も内容はボリューミーですが、Webのサンプルページを除いて、完全未経験でしたが基本的にボタンぽちぽちで設定できました。
ハンズオン当時はなさそうでしたが、今はAmplify Studioもあるので合わせて参考にしてもよさそうです。

最後に

「はじめてのサーバレス」という題目のみ見てやってみたのですが、正直想像以上でした。
初心者の方でもできるようになっていて、かつ内容も盛りだくさんでした。
今までAPI GatewayやCognito、Amplifyなど触ってこなかった方はまずはこのハンズオンをやってみてください。

ではまた!コンサルティング部の洲崎でした。