こんちには!
前回の Aws サミットでは大々的に AWS Amplify が挙げられていました。わたしたちも非常に多くの案件で採用事例のある画期的なフレームワークです。
本記事では AWS Amplify をご紹介します。
一言で言えば、「バックエンド構築からフロントエンド開発までカバーするオールインワンの開発フレームワーク」です。
まず、わたしたちが案件で実用してきた所感から、魅力的なところをご紹介します。
どれも素晴らしい特徴ですが、目玉なのは「認証と認可の提供」ではないでしょうか。開発プロジェクトで最も複雑化しやすいのは認証と認可の仕組みは、グループ権限や個人データへのアクセス権限など考えることが盛り沢山です。
そんな複雑化しやすい認証周りを AWS Amplfiy ではシンプルに実現可能です。
例えば、EC サイトでの商品作成と購入を考えてみましょう。
管理者は商品情報を作成し、カスタマーは商品情報を読み込み表示します。
一般的な EC サイトでは、カスタマーが商品情報を更新することはまずありません。(商品に対するコメントなどは追加更新あり得ると考えます)
ここで必要になる認可(権限)は下記になります。
これを、管理者ユーザー及びカスタマーに対してそれぞれ設定する実装が必要です。Laravel などのフレームワークを用いて構築すればある程度楽はできますが、自前で実装が必要な部分はまだまだ多いですね。
AWS Amplify では、認証・認可に必要な AWS のインフラを対話式の CLI による自動構築提供してくれる上に、SDK による認証ハンドリングまで提供してくれています。
NuxtJS などの場合には、Middleware に Amplify の認証チェックを1行仕込むだけで、簡単に認証状態を確認することが可能です。
AWS Amplify の認証・認可では、下記の図のような AWS アーキテクチャーを提供してくれています。
繰り返しになりますが、この AWS インフラを、対話式の CLI の質問に答えるだけで、構築することが可能です。( SNS 認証で必要な認証アプリ作成、アクセストークン設定は別途取得作業が必要になることがあります)
AWS Amplify が自動構築する認証に関するバックエンドの構成は、AWS の提唱する Cognito を用いた AWS サービスの認証・認可のベストプラクティスを用いるので、スケーラブルでかつ将来的な保守運用も安心です。
レコード単位のアクセス制御は実装しようとすると面倒なもので、実現しようとするなら ORM に Middleware をかませるなどを検討しないといけません。
Amplifyでは、スキーマ定義の「Owner Authorization」機能を用いて実現可能です。
type Post @model @auth(rules: [{allow: owner}]) {
id: ID!
title: String!
}
type Post
@model
@auth(
rules: [
{allow: owner, ownerField: "owner", operations: [create, update, delete, read]},
])
{
id: ID!
title: String!
owner: String
}
@auth
ディレクティブで、owner
フィールドに設定されている ID を検証し、ログインしているユーザーが操作可能なレコードか否かを検証することが可能です。
これを応用すると、「ログインしているユーザのプロフィールの更新はログインしているユーザのみ行える」という仕様があっという間に実現可能です。このようなセキュリティの仕組みも、Amplify の魅力的なところだと感じますね。
まだまだ紹介したいことは盛りだくさんですが、徐々にブログを通じてお伝えしたいと思います。
AWS Amplify の利点としては、わたし達も採用事例の多い GraphQL を容易に扱えるということもあり、今後目が離せないフレームワークです。
AWS Amplify、GraphQL に関する開発はお気軽にご相談ください。
スモールスタート開発支援、サーバーレス・NoSQLのことなら
ラーゲイトまでご相談ください
低コスト、サーバーレスの
モダナイズ開発をご検討なら
下請け対応可能
Sler企業様からの依頼も歓迎