こんにちは。
掲題の件のフローを実装したく、頑張りました。(唐突)
なぜ上記を実装したかったか
- サーバレスで安くアプリケーションを構築したかったから
- DynamoDBへのアクセスはAppSyncを利用してなるべく簡単にしたかったから
- Amplifyを利用してスピーディに実装したかったから
アプリの全体像
なんでAPI GatewayとLambdaがいるの?クライアントからAppSyncたたけばいいじゃない?
- Lambdaが便利だから
- 複数のアプリから簡単に同じDynamoDBにアクセスしたかったから
1つ目の理由について、クライアントからAppSyncにリクエストする設計だと、DynamoDBとのやり取り以外の処理(Cognitoへのユーザー登録、メール送信などなど)をしたい場合に別個に実装しないとならず手間になってしまうので、柔軟に処理をできるようにしました。
2つ目の理由について、「アプリの全体像」で記載しているように管理者と利用者でアプリを分ける必要がありました。
元々はそれぞれのアプリでAppSyncを利用することを考えていましたが、そうするとアプリごとにDynamoBDのテーブルができてしまい、同じデータにアクセスできない事象が発生しました。
こちらの記事にあるようにResolverの追加などで同じDynamoDBにアクセス可能ではありますが、今後も修正が発生する可能性が高く、手を入れやすいように構築したいと考え、このようになりました。
実装してみた
次回以降の記事にて、Amplify cliのコマンド等実行してデモ的に構築してみたいと思います。
Part2 フロントエンド + API Gateway + Lambda
Part3 AppSync + DynamoDB
Part4 上記1と2の繋ぎこみ