AWS Amplify
# AWS Amplify
https://d1.awsstatic.com/webinars/jp/pdf/services/20200520_AWSBlackBelt_Amplify_A.pdf
## AWS Amplify とは
- Web フロントエンド 、モバイルアプリの開発を加速させるために作られたプラットフォーム
- AWS を用いたサーバーレスなバックエンドの構築をするためのCLIやバックエンドと接続するためのクライアントライブラリ、Web サイトのホスティングの仕組みを持つ
- Amplify CLIを用いることで、他のAWSサービスとの連携部分を含めて操作、連携が可能
- Amplify で解決されること
- Amplify Framework と呼ばれる、バックエンドに直感的なインターフェースで接続できるライブラリ
## Amplify を使ったアプリケーション開発
- 準備
- Amplify CLI を用いたバックエンドの構築
- npm でAmplify Framework をインストールする
- Amplify CLI で作成された設定ファイルを読み込むと利用できる
- Amplify Framework を用いたアプリケーションの実装
- Analytics
- ユーザーのセッションや属性などの計測
- API
- REST/GraphQL API の利用
- データソースに利用できるもの
- Amazon DynamoDB
- Amazon Elasticsearch Service
- Amazon Aurora Serverless
- AWS Lambda
- REST API
- スキーマ設定を schema.graphql に記述しておく
- Authentication
- 認証APIと pre-build UI component
- Amazon Cognito との統合
- アプリケーションに統合・認可・フェデレーション機能を簡単に実装可能
- 認証用のUIコンポーネントが提供されており、UIタグを配置するだけで、サインイン、サインアップ、パスワード復旧機能が実装されたコンポーネントを実装可能
- Storage
- Static content のシンプルな管理
- Interactions
- Deep Learning を利用したBot
- PubSub
- リアルタイムなデータのやり取り
- Notification
- キャンペーンや分析機能を持ったプッシュ通知
- Predictions
- AI/ML コンテンツの組み込み
- テキスト翻訳、文字読み上げ、Object Detection、文章のネガポジ判定といった機能が簡単に実装できる
- 対応するAWSサービス
- XR
- AR/VR コンテンツの組み込み
- アプリケーションのデプロイ
## 直近のアップデート
- Amplify Datastore
- 概要
- デバイス側のストレージエンジン
- オンライン・オフラインを気にすることなく実装可能
- 3種類の競合検知のオプション
- Auto Merge
- データの競合を検知すると自動的にマージを試みる
- Optimistic Concurrency
- データの競合を検知した場合、マージを実施せずクライアントからのリクエストを拒否する
- Custom Lambda
- データの競合を検知した際に独自に定義したAWS Lambda を起動する
- Amplify Datastore API
- 更新
- 削除
- 参照
- 購読
- Amplify iOS / Amplify Android(2020.05.27にGA https://aws.amazon.com/jp/about-aws/whats-new/2020/05/announcing-general-availability-amplify-ios-android-authentication-data-ai-ml-support/)
## よくあるケース
- 複数の環境(prod, stagingなど)を利用したい
- Amplify Console を利用した複数環境のデプロイ
- Multiple Environment による環境構築と接続先の切り替え
- Branch とバックエンドを紐づけることで、環境ごとのCI/CDパイプラインの構築が可能
- Amplify CLI に対応していないバックエンドの構築
- 任意のCloudFormation テンプレートをカスタムカテゴリとして定義できる
## 雑感
AWSのWebフロントエンド 、モバイルアプリの開発を加速させるプラットフォーム。連携部分や、モバイル特有の部分をAmplify が行ってくれることで、価値のある部分に集中することができる。
複数環境の構築やそれを利用したテストまではカバーされている。対応していない部分はCloudFormation を記述することでカスタムカテゴリとして利用できるようになるみたいだが、用法用量は守ったほうが良さそう。