できること
Amplify HostingはBasic認証をコンソールのUIから設定でき、ブランチ単位でオン/オフが切り替えられます。この機能でブランチ全体にユーザー名・パスワードをかけることは可能で、設定自体は2〜3分で完了します。エンジニアがAWSコンソールにアクセスできれば、追加のコードを書かずに最低限のアクセス制限を設けられます。
Amplify Console内の「アクセスコントロール」ではIPアドレス制限の設定も可能で、特定のオフィスのIPからのみアクセスを許可する設定ができます。社内LANからのアクセスに限定したい場合は、オフィスの固定IPをホワイトリストに追加するだけで対応できます。
- 相手がログインなしで開ける状態か確認する
- PCとスマホで最低1回ずつ表示を確認する
- 内部情報・個人情報・不要な外部送信が残っていないか見る
- レビュー期限と修正時の差し替え方を決めておく
できないこと
Amplify HostingのBasic認証は単一のユーザー名・パスワードペアしか設定できず、複数のレビュワーに個別のパスワードを発行することができません。「A社のBさんにはこのパスワード、C社のDさんには別のパスワード」という管理が必要な場合、Basic認証では要件を満たせません。
閲覧ログの記録もAmplify Hosting標準機能では提供されていません。CloudFrontのアクセスログをS3に保存する設定を有効にすれば技術的には取得可能ですが、ログの確認にはS3やAthenaへのアクセス権が必要で、プロジェクトマネージャーが手軽に「誰がいつ見たか」を確認できる状態になりません。
認証と期限の違い
認証の欠落を補うAWSネイティブの方法として、Lambda@EdgeでCognito認証を追加する構成があります。これによりメール認証・グループベースの権限管理・JWTトークンの有効期限制御が実現しますが、Lambda@EdgeはCloudFrontのエッジロケーションで動作するため、デプロイに10〜30分かかることがあり、設定変更のフィードバックループが遅くなります。
期限管理の補完として、EventBridgeスケジューラーにAmplifyブランチの削除APIを定期実行させる方法があります。`aws amplify delete-branch`コマンドをLambdaから実行するよう設定すれば、指定日時にレビューブランチを自動削除できます。ただしこの設定自体のテストと運用が追加のメンテナンス負荷になります。
- 誰でも見てよい: URL共有のみでもよいが、検索除外は確認する
- 特定の相手だけ: パスワードまたはメール認証を使う
- 会社内だけ: 会社ドメイン認証を検討する
- 短期レビュー: 期限を設定して古いURLを残さない
差し替え・レビュー運用
「Amplify Hosting + 追加実装」で認証・期限を補う場合、Cognito User Pool・Lambda@Edge・EventBridgeの3サービスにわたる設定が必要になり、インフラとしての複雑度が増します。この複雑さは将来の担当者交代時にメンテナンスコストとして顕在化するため、「レビュー用途のために本番インフラを複雑化するかどうか」を費用対効果で判断することが重要です。
レビュー特化の外部サービスで補完する場合、Amplifyは本番デプロイ専用のまま維持し、レビュー共有だけ別サービスに委ねます。チームの運用ルールは「本番マージ前にビルド成果物をレビューサービスにアップロードする」という1ステップだけになり、AWSの設定変更を伴わないため、担当者が変わっても引き継ぎが容易です。
- 確認してほしい観点を3つ以内に絞る
- 期限と返信先を明記する
- 修正後も同じURLで見られるか伝える
- 最終版と途中版が混ざらないようタイトルを付ける
向いているケース早見表
AWS側で認証・期限を追加実装するのが向いているのは、すでにCognitoをユーザー認証に使っており、同じユーザーベースでレビュー権限も管理したいケースです。既存のCognito設定を拡張するだけで済み、新たなサービスを契約する必要がありません。
外部の認証付き共有サービスで補完するのが向いているのは、レビュワーがCognitoユーザープールに登録されていない外部の人(クライアント・発注担当者・審査機関)で、都度ユーザー登録の手続きを挟む余裕がないケースです。URLとパスワードだけで即座に閲覧できる体験の方が、外部関係者にとっての摩擦が少なくなります。
よくある質問
Amplify HostingのBasic認証の設定はterraformやCDKで管理できますか?
Terraform(aws_amplify_app + aws_amplify_branchリソース)とAWS CDK(@aws-cdk/aws-amplify-alpha)の両方でBasic認証設定を管理できます。パスワードはSecrets Managerから参照する形にするとハードコードを避けられます。
Amplify HostingとCognito + Lambda@Edgeの組み合わせで認証を実装した場合、月額コストの目安はどのくらいですか?
小規模なレビュー用途(月100リクエスト以下)ではLambda@Edgeの実行コストは月数円〜数十円程度です。Cognitoは月間アクティブユーザー50,000人まで無料枠があるため、通常のレビュー用途では追加費用はほぼ発生しません。
Amplify Hostingの既存プロジェクトに認証を後から追加する際、既存のCloudFront distributionに変更を加えることになりますか?
Amplify HostingはAmplifyが管理するCloudFront distributionを使います。Lambda@Edgeを追加する場合、このdistributionに対してAmplify外から変更を加える形になり、Amplifyの管理外の変更がAmplifyの再デプロイで上書きされるリスクがあります。設計前にAmplifyサポートへの確認を推奨します。