今回は、このWebサイトを AWS Amplify を利用して実装したことについてお話しします。

結論から言うと、「個人開発や小規模な静的サイトなら、Amplify一択」と言えるほど、簡単かつセキュアに公開できました。

AWSでのWebサイト構築を検討している方の参考になれば幸いです。

主な利用サービス: AWS Amplify, Amazon Cognito

① なぜAmplifyを選んだのか?

AWSでWebサイトを公開しようとした場合、通常は以下のような選択肢が挙がるかと思います。

  • EC2(Webサーバを自分で立てる)
  • S3 + CloudFront(S3で静的ホスティングし、CDNで配信)
  • S3のみ(静的ウェブサイトホスティング)

etc.

しかし、私の今回の要件は以下の通りでした。

  • 低コストで運用したい
  • インフラの維持・管理を楽にしたい
  • 独自ドメインをSSL/TLS(https)で配信したい
  • セキュリティは高く保ちたい

これらを最もシンプルに満たすのが AWS Amplify でした。

「S3静的ホスティング」はもう古い?

実は最近、AWSのマネジメントコンソールでS3の「静的ウェブサイトホスティング」設定画面を見ると、以下のような推奨メッセージが表示されるようになっています。

S3バケットでの静的ウェブサイトホスティング画面

「静的ウェブサイトホスティングには AWS Amplify を使用することをお勧めします」

S3単体ではHTTPS化が手間だったり、CI/CD(自動デプロイ)の構築が必要だったりしますが、Amplifyならそれらが標準装備されています。

「AWSのベストプラクティスは、シンプル・イズ・ベスト」。不用意に複雑な構成にせず、推奨されているAmplifyを利用するのが最適解だと判断しました。

② AWS Amplifyについて

Amplifyをご存じない方のために、少し解説します。

▼公式サイト
https://aws.amazon.com/jp/amplify/

サービス概要

AWS Amplifyは、Webアプリケーションやモバイルアプリを「開発・構築・デプロイ・ホスティング」するための統合ツールセットです。
特に「Amplify Hosting」という機能を使えば、GitHubなどのリポジトリと連携するだけで、コードの変更を検知して自動的にビルド・公開(CI/CD)まで行ってくれます。

コスト

Amplify Hosting(静的サイト)の料金体系は非常にシンプルで安価です。

  • ビルド料金: 1分あたり $0.01
  • ストレージ料金: 1GBあたり $0.023 / 月
  • データ転送量: 1GBあたり $0.15

個人サイト程度であれば、アクセスが爆発しない限り、月額数十円〜数百円、あるいはAWSの無料利用枠(最初の12ヶ月)の範囲内で収まることがほとんどです。

セキュリティ

マネージドサービスであるため、OSのパッチ当てなどのサーバー管理は不要です。
また、標準でSSL/TLS証明書が発行・更新されるため、何もしなくてもサイトはHTTPS化されます。さらに、AWS WAF(Web Application Firewall)との統合もワンクリックで可能で、SQLインジェクションなどの攻撃からサイトを守ることができます。

③ 実装の流れ

実装は驚くほど簡単です。画面ポチポチで進めるだけで、インフラ構築が完了します。

  1. ソースコードを管理: GitHubのリポジトリにWebサイトのコードをアップロード。
  2. Amplifyと接続: AWSコンソールで対象のリポジトリ(ブランチ)を選択。
  3. ビルド設定: 自動生成される設定を確認して「保存してデプロイ」。
  4. カスタムドメイン設定: 取得した独自ドメインを入力。
  5. DNS設定: 提示されたCNAMEレコードをDNSサーバに登録。

ある程度知識がある方なら、1時間もかからずに公開まで辿り着けると思います。(DNSの反映待ち時間を除けば実作業は数分です)

Gitにプッシュしたら勝手にサイトが更新されるので、個人サイトの運用としては助かります。

まとめ

いかがでしたでしょうか?
今回は触れませんでしたが、このサイトの管理者ページへのログイン認証には Amazon Cognito を使用しており、Amplifyと連携させることで簡単に実装できました。

Amplifyは便利ですが、従量課金のため「DDoS攻撃などでアクセスが急増したら料金が怖い」という懸念があります。
また、Amplifyには「一時停止」ボタンがなく、アプリを「削除」するか動かし続けるかの二択になりがちです。

そこで私は、「予算を超えそうになったら自動でサイトを非公開にする」仕組みを導入しようかなと思っていました。

  1. AWS Budgets で予算超過を監視
  2. アラートが出たら Amazon SNS へ通知
  3. SNSをトリガーに AWS Lambda が起動
  4. LambdaがAmplifyの設定を書き換え、サイト全体にBasic認証(パスワード制限)をかける

これにより、万が一の攻撃時でも、サイトを削除することなく、自動的に外部からのアクセス(データ転送)を遮断して課金を止めることができます。

当初は「CloudFront + S3 + API Gateway + Lambdaで最強の構成を作るぞ!」と意気込んでいましたが、個人サイトにはAmplifyが機能・コスト・手軽さのバランスにおいて最適解でした。

これからWebサイトを作る方は、ぜひAmplifyを選択肢に入れてみてください!


▼もしよろしければSNSのフォローもお願いします!