どうもこんにちは。
今回はSaas on AWS 2023に参加してserverless workshopに参加してきたので、備忘録としてメモします。
Saas on AWSとは?
Saas on AWSとは、Saasシステムを武器にして会社を経営している方や、開発しているエンジニアの方の話を聞くことができるイベントです。
その傍では、いくつかのワークショップが開催されています。
ワークショップについて
今回のイベントでは、以下の3つのワークショップが用意されていました。
- Saas Boost Workshop
- Saas Serverless Workshop
- Saas AuthN/Z Workshop
今回は2つ目の「Saas Serverless Workshop」に参加してきました。
ワークショップの流れ
ワークショップは、簡単なマニュアルが配布され、それを見ながら自分で開発を進めていきます。
具体的な手順をメモしていきます。
STEP1:使用するサービスの簡単な使い方
STEP1で使用したのは以下の4つです。
- Cloud9:VScodeのようなIDE(統合開発環境)
- API Gateway:APIの開発
- DynamoDB:NoSQLの使用を目的としたデータベース
- CloudWatch:APIやDBのログを閲覧
STEP1ではそれぞれの使い方を簡単に学びました。
STEP2:簡単なSaasアプリケーションの開発
1. アーキテクチャの確認
今回のワークショップで作成するアーキテクチャを確認しました。
(公開しない方が良さそうなので、簡易的な図を作成しました。)
なんとなくですが、ユーザが操作したらAPI経由で処理が行われるんだなっていうのがわかりました。
2. API Gateway、DynanoDBで使用する関数の追加
cloud9上で指定されたファイルの指定された関数にコードを書きました。
ただし、これは「コピペ」です。
追加したコードによって、APIを使用してDynamoDBからコードを取得できるようです。
3. Cognitoで使用する関数の追加
cloud9上で指定されたファイルの指定された関数にコードを書きました。
もちろん、これも「コピペ」です。
追加したコードによって、Cognitoへユーザーの登録ができるようです。
4. 登録した情報をDBからデータを持ってくる時に使用する関数の追加
cloud9上で指定されたファイルの指定された関数にコードを書きました。
やっぱり、これも「コピペ」です。
追加したコードによって、登録した「テナント」の管理者の登録、閲覧表示をすることができるようです。
5. デプロイ
AWS側で用意されたshファイルを使用して、アプリケーションのデプロイを行いました。
デプロイが完了すると、アプリケーションにアクセスできます。
6. 実際に動かしてみる
デプロイをしたら実際にデータの登録ができるか、閲覧ができるかなどの確認を行いました。
7. Cognitoの確認
Cognitoとは、AWS Cognitoというユーザーなどの認証情報を管理できるサービスです。
ここではアプリケーション上で登録したデータが登録されていることを確認しました。
手順3で追加したコードによってCognitoにデータを保存できているのでしょうか。
8. DynamoDBの確認
DynamoDBに登録したデータが保存されていることを確認しました。
どこのコードでDynamoDBに保存していたのかは確認が必要です。
STEP3
1. API Gatewayで使用するコードを追加
API Gateway Lambda Authorizerで使用するコードを追加しました。
すごく難しく感じましたが、やっていることは簡単で
- 関数からAPIを呼び出す
- APIからLambdaのコードを呼び出す
- LambdaコードでCognitoの認証トークンを検証する
- 認証に必要なデータを取得する
の流れを作るコードを完成させた模様です。
2. アクセスの認証に必要なコードを追加
手順1の続きの流れを完成させるためのコードを追加しました。
- 取得した認証データを使用してアクセスを認証する
3. ロギングとメトリクス収集を一元化するコードを追加
ログを記録するコードを追加している模様です。
4. DynamoDBのデータと他のデータを紐付けるためのコードを追加
DynamoDBのデータを他のテナントデータの紐付けを行なっている模様です。
5. デプロイ実行
AWS側で用意されたshファイルを使用して、アプリケーションのデプロイを行いました。
デプロイが完了すると、アプリケーションにアクセスできます。
6. 実際に動かしてみる
デプロイをしたら実際にデータの登録ができるか、閲覧ができるかなどの確認を行いました。
7. DynamoDBの確認
DynamoDBに登録したプロダクトと注文が保存されているかを確認しました。
ここまでやってアプリケーションの大枠は完成しました。
STEPは7まであったのですが、セッションを聞きたかったのでSTEP3まで実施して終了しました。
まとめ
今回のワークショップで理解できたこととしては、以下のこととなります。
- サーバーを使用せずとも、CloudFormationを使用してアプリケーションを構築することができる
- Cognitoを使用することで容易にユーザー認証の仕組みを完成させることができる
STEP3までしかできなかったのが原因だと思いますが、DynamoDBやAPI Gatewayへの理解は深められなかったなぁという印象です。
ただ、自分の中では AWSサービスを使用した良い経験になりました。
機会があったらサーバーレスのシステムを構築して、API Gatewayなどを使用して外部サービスと連携できるようなシステムを制作してみたいです!
以上