サーバーレスのシステムにてDynamoDBへのアクセスには、GraphQLを使用します。
GraphQLは、AWS AppSyncサービスを用います。
AppSyncの紹介サイトでは、以下の様な紹介がされています。
AWS AppSync は、サーバーレスの GraphQL および Pub/Sub API を作成し、単一のエンドポイントを通じて安全にデータの照会、更新、公開を行うことで、アプリケーションの開発を簡素化します。
AWS Appsyncサービス紹介サイト から引用
単一のエンドポイン、アプリケーションの開発を簡素化 と記載さていますが、実際に使用してみると、非常に簡単にセキュアなDynamoDBへのアクセスが可能となります。
テーブルの設定などは、schema.graphql というファイルに定義を行い、Amplify pushによって、IFに関するコードやシステム側の設定を行う事が出来ます。
私が感じているメリットとしては、以下の通りです。
- 必要な構成を指定し、抽出条件を設定するだけで、欲しい情報が取得できる
- テーブルを結合した場合の取り扱いが分かりやすい。間違えにくい。
結果はkey-value形式。 - アクセス権限もテーブルごとに記述することで細かく設定できる。
- テーブル間の結合は、indexを利用。双方向で結合を指定できる。
- データ取得の内容や機能を指定できる。
- GraphQLのIFを利用して、Lambda関数の実行も可能です。
一方、RDBでは当たり前ですが、オートカウントの様な機能が無いため、連続したユニークな番号が必要な場合は、アトミックカウントの機能を作り込む必要があります(こちらは後日記事としてUPします)
RDBのようにデータベース側での設定をする必要が無く、schema.graphql の内容を見ればテーブル構成を確認できる点も気に入っています。
DynamoDBを使ったシステムの構築をする際にGraphQLを使われてみてはいかがでしょうか?
GraphQLについては、幅広い機能を持っていますので、今後も投稿していきます
(本記事にたいする質問やお問合せ・IT改善のご相談はこちら)