AWS Amplify
フルスタックの Web・モバイルアプリを素早く構築・デプロイできる開発プラットフォーム
何ができるか
AWS Amplify は、フルスタックの Web アプリケーションやモバイルアプリケーションを素早く構築・デプロイするための開発プラットフォームです。認証、API、ストレージ、ホスティングなど、アプリケーションに必要なバックエンド機能を数分で追加でき、フロントエンドの開発に集中できます。Git リポジトリと連携した CI/CD パイプラインが自動構築され、コードをプッシュするだけで本番環境にデプロイされます。React、Next.js、Vue、Angular、Flutter など主要なフレームワークに対応しています。
どのような場面で使うか
React や Next.js で構築した Web アプリケーションのホスティングとデプロイ、Cognito を使ったユーザー認証の追加、AppSync による GraphQL API の構築、S3 を使ったファイルアップロード機能の実装、モバイルアプリのバックエンド構築など、フロントエンド開発者が AWS のバックエンドサービスを活用したい場面で利用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
レストランの開業支援サービスに例えるとわかりやすいでしょう。料理 (フロントエンド) に集中したいシェフのために、厨房設備 (バックエンド)、予約システム (認証)、食材の仕入れ (API)、店舗の内装 (ホスティング) をパッケージで提供してくれます。メニューを決めるだけで、お店がオープンできる仕組みです。
Amplify とは
AWS Amplify は、フロントエンド開発者が AWS のバックエンドサービスを簡単に活用するための開発プラットフォームです。Amplify Hosting (旧 Amplify Console) は静的サイトや SSR アプリケーションのホスティングと CI/CD を提供し、Amplify Backend (旧 Amplify Studio) は認証、API、ストレージなどのバックエンドリソースをコードで定義・デプロイする機能を提供します。AWS の複雑なインフラ設定を抽象化し、フロントエンド開発者にとって馴染みのある開発体験を実現します。
Amplify Hosting
Amplify Hosting は、Web アプリケーションのホスティングと CI/CD を提供します。GitHub、GitLab、Bitbucket、CodeCommit のリポジトリを接続すると、ブランチごとに独立した環境が自動構築されます。プルリクエストのプレビュー環境も自動生成され、レビュー時に実際の動作を確認できます。Next.js の SSR (サーバーサイドレンダリング) や ISR (インクリメンタル静的再生成) にも対応しており、CloudFront による CDN 配信が自動的に設定されます。カスタムドメインの設定と SSL 証明書の自動発行も標準機能です。
バックエンド機能
Amplify Backend では、TypeScript でバックエンドリソースを定義します。認証 (Cognito)、API (AppSync GraphQL / API Gateway REST)、ストレージ (S3)、データベース (DynamoDB) などを、Amplify のライブラリを使って数行のコードで追加できます。定義したリソースは CloudFormation で管理され、環境ごとに独立したバックエンドが自動構築されます。フロントエンドからは Amplify のクライアントライブラリを使って、認証フローやデータの CRUD 操作を簡潔に実装できます。
料金体系
Amplify Hosting の料金はビルド時間とホスティングのデータ転送量に基づきます。ビルドは 1 分あたり 0.01 USD、ホスティングは 1 GB あたり 0.15 USD です。無料枠として月間 1,000 ビルド分と 15 GB のホスティングが提供されます。バックエンドリソース (Cognito、AppSync、DynamoDB など) の料金は各サービスの料金体系に従います。小規模な個人プロジェクトであれば、無料枠の範囲内で運用可能です。
注意点
- Amplify が抽象化するバックエンドリソースの設定をカスタマイズしたい場合、CDK のオーバーライド機能を使って CloudFormation レベルで調整できる
- SSR アプリケーションのホスティングでは Lambda@Edge が使用されるため、コールドスタートによるレイテンシ増加が発生する場合がある
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。