AWS Amplify
フロントエンド開発者が認証・API・ストレージなどのバックエンド機能を最小限のコードで構築・デプロイできるフルスタック開発プラットフォーム
概要
AWS Amplify は、Web アプリケーションやモバイルアプリケーションのフルスタック開発を加速するプラットフォームです。Amplify Gen 2 では TypeScript でバックエンドリソース (認証、データ、ストレージ、関数) を定義し、Git プッシュだけでフロントエンドとバックエンドを同時にデプロイできます。React、Next.js、Vue、Angular、Flutter などの主要フレームワークに対応し、Cognito による認証、AppSync による GraphQL API、S3 によるファイルストレージが数行のコードで統合できます。Amplify Hosting は CI/CD パイプライン付きの静的サイト・SSR ホスティングを提供します。
Gen 2 のコードファースト定義と CDK 基盤
Amplify Gen 2 は CDK をベースとしたバックエンド定義を採用しています。amplify/auth/resource.ts で Cognito の認証設定、amplify/data/resource.ts で AppSync のスキーマとアクセスルール、amplify/storage/resource.ts で S3 バケットの設定を TypeScript で記述します。これらは内部的に CDK コンストラクトに変換され、CloudFormation 経由でデプロイされます。Gen 1 との最大の違いは、CLI のウィザード形式から TypeScript によるコードファースト定義に移行した点で、バックエンドの設定がバージョン管理可能になり、チーム開発での再現性が大幅に向上しました。サンドボックス環境 (npx ampx sandbox) を使えば、開発者ごとに独立したバックエンド環境を即座に構築でき、本番環境に影響を与えずに開発・テストが行えます。BaaS としては Google Firebase が比較対象に挙がりますが、Amplify は AWS エコシステム全体 (Cognito の SAML/OIDC フェデレーション、DynamoDB、Aurora など) にアクセスできるため、エンタープライズ要件への拡張性で優位に立ちます。
Hosting の CI/CD とプレビュー環境
Amplify Hosting は GitHub リポジトリと連携し、プルリクエストごとにプレビュー環境を自動生成する機能を備えています。フロントエンドのビルドとバックエンドのデプロイが 1 つのパイプラインで完結するため、コードレビューの段階で実際に動作する環境を確認でき、チーム開発のフィードバックサイクルが大幅に短縮されます。Hosting は静的サイト (React、Vue、Angular) だけでなく、Next.js の SSR (Server-Side Rendering) にも対応しており、CloudFront 経由でグローバルに配信されます。カスタムドメインの設定と SSL 証明書の自動発行も組み込まれているため、本番環境のセットアップに追加の作業はほとんど必要ありません。Web アプリ開発の書籍 (Amazon) も参考になります。
Amplify の限界と CDK への卒業判断
Amplify の最も効果的な活用は、MVP (Minimum Viable Product) の高速構築です。スタートアップや新規プロジェクトで、認証付きの Web アプリケーションを 1 日で立ち上げるようなケースに最適です。しかし、Amplify が生成するバックエンドリソースは内部的に CloudFormation スタックで管理されるため、Amplify の枠組みを超えたカスタマイズが必要になる場面が出てきます。VPC 内のリソースとの統合、複雑な IAM ポリシー、マルチリージョン構成などが求められた場合、CDK のオーバーライド機能で対応するか、Amplify から卒業して純粋な CDK プロジェクトに移行する判断が求められます。移行の目安として、バックエンドのオーバーライドが 3 箇所以上に増えた時点で CDK への移行を検討するのが実務的な基準です。Amplify で構築した Cognito ユーザープールや DynamoDB テーブルは CDK でインポートできるため、データを失わずに段階的な移行が可能です。