Cloud Service
AWS Amplify
フロントエンドやフルスタックの Web・モバイルアプリを素早く構築・ホスティングできるマネージド基盤。
- 1.認証やデータなどのバックエンドをコードで定義し、数分でプロビジョニングできる。
- 2.Git 連携で push のたびにビルド・デプロイされる継続的デプロイのホスティングを提供。
- 3.裏側で Cognito や AppSync など既存 AWS サービスを束ね、運用負荷を下げる。
解決する課題
Web・モバイルアプリを公開するには、認証基盤、API、データベース、配信用ホスティング、CI/CD など多くの部品を自分で組み上げる必要があります。個々のサービスを正しく接続・設定する作業はフロントエンド中心の開発者にとって負担が大きく、本来注力したい画面や機能の開発から時間を奪います。
AWS Amplify はこの組み立て作業を肩代わりします。
- 認証やデータといったバックエンド機能を宣言的に定義し、必要な AWS リソースを自動で用意する
- Git リポジトリと連携し、push のたびに自動でビルド・デプロイするホスティングを提供する
- フロントエンドのコードからバックエンドを呼び出すライブラリを用意し、接続コードを書く手間を減らす
結果として、少人数やフロントエンド中心のチームでも、スケーラブルなフルスタックアプリを短期間で立ち上げられます。
主要概念と用語
- Amplify Hosting: Git 連携の継続的デプロイ、CDN 配信、プレビュー環境などを提供する静的・SSR 対応のホスティング機能
- バックエンド定義: 認証やデータなどのバックエンド構成をコードで宣言する仕組み。定義をもとに必要な AWS リソースが生成される
- Amplify ライブラリ: フロントエンド(JavaScript や各モバイル向け)からバックエンドを呼び出すためのクライアント SDK
- Amplify CLI / コンソール: バックエンドの作成・更新やアプリ管理を行うコマンドラインツールおよび管理画面
- 環境(ブランチ): 開発・検証・本番などをブランチ単位で分け、それぞれ独立したバックエンドとホスティングを持たせる単位
- プルリクエストプレビュー: ブランチやプルリクエストごとに一時的な確認用 URL を自動生成する機能
仕様・制限・クォータ
- 主要なフロントエンドフレームワークや、静的サイトおよびサーバーサイドレンダリング(SSR)構成のホスティングに対応する
- ビルドはマネージド環境で実行され、ビルド設定はリポジトリ内の設定ファイルで管理できる
- アプリ数、ブランチ数、同時ビルド数、ビルド時間などには**アカウント単位の上限(クォータ)**があり、多くは引き上げ申請が可能
- ビルドの最大実行時間やアーティファクトサイズなどにも上限があるため、大規模ビルドでは分割や最適化を検討する
- 具体的な上限値はリージョンや時期により変わり得るため、設計時は最新の公式ドキュメントで確認する
Amplify はホスティング(フロント配信)とバックエンド構築の両方をカバーします。どちらか一方だけ使うことも可能で、ホスティングのみ利用するケースも一般的です。
内部の仕組み
Amplify 自体が新しいランタイムを持つわけではなく、既存の AWS マネージドサービスを束ねるオーケストレーション層として動作します。バックエンド定義を解釈し、対応する AWS リソースをプロビジョニングします。
- 認証は Amazon Cognito、データ API は AWS AppSync(GraphQL)や API Gateway、データ保存は DynamoDB、ファイルは Amazon S3 といった形で、機能ごとに適切なサービスへマッピングされる
- ホスティングでは、ビルドしたフロントエンド資産を配信用ストレージに配置し、Amazon CloudFront などの CDN を通じて世界中に配信する
- リソースの生成・更新は内部的に AWS CloudFormation などのインフラ定義として表現され、構成の再現性と一括管理を担保する
このため、Amplify で作ったバックエンドの実体は、それぞれの個別サービスのコンソールからも確認・調整できます。
設計パターン / ベストプラクティス
- 環境をブランチで分離する: 本番・検証・開発をそれぞれ独立したブランチと環境に対応させ、変更を本番へ安全に昇格させる
- プレビュー環境でレビューする: プルリクエストごとの一時 URL を使い、マージ前に実際の画面で動作確認する
- バックエンド定義をコードで管理する: 構成をリポジトリに含めて履歴を残し、レビューと再現を可能にする
- 複雑な要件は個別サービスへ移行する: Amplify の抽象化で足りない高度な制御が必要になったら、生成された個別サービス(AppSync や Cognito など)を直接調整する
Amplify は標準的な構成を素早く作るのが得意です。きわめて特殊なネットワーク構成や細かなリソース制御が要件の中心になる場合は、最初から個別サービスや汎用の IaC で組む方が見通しが良いことがあります。
運用・監視
- ビルドとデプロイの履歴・ログは Amplify のコンソールから確認でき、失敗時の原因追跡に使う
- 配信側のアクセス傾向やエラーは、CDN やバックエンド各サービスの Amazon CloudWatch メトリクス・ログで把握する
- デプロイに問題があった場合は、**以前の成功したビルドへ素早く戻す(ロールバック)**運用を基本とする
- カスタムドメインや HTTPS 証明書の管理もコンソールから行え、独自ドメインでの公開を簡単にする
コスト
課金は主に「ホスティング(ビルド時間・配信データ転送・ストレージ)」と「バックエンドが利用する個別サービスの従量課金」に分かれます。
- ビルドの実行時間や、配信したデータ転送量、保存容量に応じて費用が発生する
- 認証・データ・ストレージなどのバックエンドは、裏で動く Cognito・AppSync・DynamoDB・S3 などのそれぞれの料金が加算される
- 小規模な利用には無料利用枠が用意される場合があるが、内容は変動し得るため最新情報を確認する
Amplify の請求は「Amplify の料金」だけで完結せず、束ねている各サービスの利用料も合算で見ると実態を把握しやすくなります。
セキュリティ
- 認証・認可は Amazon Cognito を基盤とし、ユーザープールやソーシャルログイン、トークン管理を利用できる
- データ API には認可ルールを定義でき、ユーザーやグループ単位でアクセス範囲を制御する
- リソース操作の権限は IAM で管理され、最小権限の原則を適用する
- 保存データの暗号化や転送時の TLS は、束ねている各サービスの仕組みをそのまま活用できる
クライアント側のコードに秘密情報(API シークレットや管理者権限の鍵)を埋め込むのは厳禁です。認可はバックエンド側の認可ルールと Cognito に委ね、フロントには必要最小限の情報だけを渡します。
Well-Architected の観点
- 運用上の優秀性: Git 連携の継続的デプロイ、ブランチ単位の環境分離、プレビュー環境により、変更を小さく安全に届けられる
- 信頼性: ホスティングは CDN を通じた配信で可用性を確保し、失敗時はロールバックで素早く復旧できる
- セキュリティ: Cognito と IAM、データ API の認可ルールで認証・認可を一貫して扱える
- コスト最適化: 従量課金が基本で、束ねる各サービスの利用状況を踏まえて無駄を見直せる
試験で問われるポイント
- 「フロントエンド開発者が認証付きアプリを最短で構築・ホスティング」→ AWS Amplify
- 「Git に push したら自動でビルド・デプロイしたい」→ Amplify Hosting の継続的デプロイ
- 認証は内部で Cognito、GraphQL API は AppSync にマッピングされる点を押さえる
- ブランチごとの環境分離とプルリクエストプレビューの用途を理解する
関連サービス・比較
同じくアプリのデプロイを簡単にする AWS Elastic Beanstalk とよく比較されます。Amplify はフロントエンド・フルスタック志向、Beanstalk はサーバーアプリのデプロイ自動化が中心です。
| 観点 | AWS Amplify | Elastic Beanstalk |
|---|---|---|
| 主な対象 | フロント・フルスタックの Web/モバイル | サーバーアプリ(多言語) |
| フロント配信 | 得意(CDN ホスティング込み) | 別途構成が必要 |
| バックエンド | 認証・データを宣言的に生成 | 実行環境の構築が中心 |
| 主な利用者像 | フロントエンド中心のチーム | サーバーアプリ開発者 |
ハンズオン / CLI例
# Amplify CLI のインストール(npm 経由)
npm install -g @aws-amplify/cli
# 対話的にプロファイルや認証情報を設定
amplify configure
# プロジェクトのルートで Amplify を初期化(環境やフレームワークを選択)
amplify init
# 認証機能をバックエンドに追加(内部で Cognito が構成される)
amplify add auth
# 定義した変更をクラウドへ反映(必要な AWS リソースを生成)
amplify push
AWS Service
AWS Amplifyを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
開発者ツール
比較で見る軸
クラウド: AWS / カテゴリ: 開発者ツール / 難易度: basic
導入後に効く点
Git 連携で push のたびにビルド・デプロイされる継続的デプロイのホスティングを提供。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- AWS
- カテゴリ
- 開発者ツール
- 難易度
- basic
- 関連資格
- DVA-C02
- 設計柱
- operational
判断チェックリスト
- 自社の用途が「開発者ツール / operational」に近いか確認する。
- 強みである「認証やデータなどのバックエンドをコードで定義し、数分でプロビジョニングできる。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。