S3の静的サイトホスティングしたいならAWS Amplify ホスティングを使ってね、とAWSさんが言っているので紹介してみる

# はじめに

AWS Amplify ホスティングをお勧めするというのは、AWS公式からアナウンスされています

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/WebsiteHosting.html

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372042/026e210f-ce0c-48cd-9165-34c66cb64967.png)

AWSコンソール上でも書かれています

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372042/a7ae2877-85b4-4888-94f8-ddf7a12565b7.png)

つまりAWS Amplify ホスティングを使うのが良いのは間違いなさそうです。

でも、意外とS3の静的サイトホスティングで引っかかる記事がなさそうなので、簡単に紹介します

# この記事はこんな方にお勧め

- S3を使うと簡単に静的サイトホスティングできるって聞いたけど、どうやればいいかわからない
  - ネット調べてもいろんな記事がでてきて困る
  - それっぽい記事を開いたら5、6年前の記事で全然参考にならない

# おすすめしない方

- とりあえず静的サイトホスティングではなく、細かく制御したい方
  - Amplifyはある程度のところまではオールインワンでやってくれますが、細かいところはできない OR できるけど面倒です
- CloudFromtやS3をしっかり触ってみたい方  

# 料金

とりあえずやりたいニーズなら、ほぼAWS 無料利用枠で収まるでしょう

https://aws.amazon.com/jp/amplify/pricing/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372042/ad656af4-204e-44b8-8c81-143bd49b4db9.png)
  

# 実際にやってみる

では早速作ってみましょう。

前提として、すでに以下の対応はされているものとします
- 静的サイトホスティングをしたいページ自体はすでに存在している
- githubでリポジトリ管理がされている
  - 自分がオーナーであるリポジトリである必要があります

今回は、最近訳あって[udonarium](https://udonarium.app/)の個人鯖を作ることがあったので、そのケースで紹介します。事前にリポジトリのforkをしています。

https://github.com/TK11235/udonarium


AWSコンソールへログイン ➡ AWS Amplifyにアクセスする

検索欄から調べるのがおすすめ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372042/89d7f820-3c95-4d4e-8ffc-1197c6b6a1ee.png)

↓のような画面がでるので、「アプリケーションをデプロイ」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372042/87661a3d-49c6-4734-a25a-cb66eaa0d867.png)

次の画面で、githubを選択して「次へ」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372042/90887595-c6e2-4106-a4c2-09d6b1c8c37a.png)

githubへのログインを求められるので対応する。その後「次へ」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372042/90da9884-12d9-46e8-9638-751ea40e2576.png)

githubからデプロイするリポジトリを選択する画面になりますが、事前にAWS Amlify appをgithub側にインストールしておく必要があります。
ポップアップウィンドウでインストールを促されるので、自分のアカウントを選択してください

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372042/dc4025be-ca2a-4bdf-b238-639b8cb998d4.png)

AWS Amlify appに付与する権限と、リポジトリを選択します。付与すると困るリポジトリがある場合は`Only select repository`を選択しましょう。

今回はAll repositoryを選択して、「Intall & Authorize」をクリックします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372042/9b40bc4d-426d-4b86-9608-7a5b66e66afc.png)

するとAmlifyコンソール上でリポジトリとブランチが選択できるようになるので、デプロイしたいものを選択して「次へ」をクリックしてください


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372042/786c5fd6-1a0e-42fd-b1b1-457ac5985560.png)

アプリケーション名・ビルドの設定を入力します。これらの情報はリポジトリから自動で決めてくれますので、確認をして必要に応じて変更してください。
今回は記載されているビルドコマンドと出力ディレクトリであっているのでそのまま進めます。

ここでパスワードも設定が可能です。設定をしておくことをお勧めします

詳細設定を開くと、以下の内容を設定できます。
- ビルドするイメージ
- 環境変数
- Cookieの設定
- ライブパッケージの更新
- サーバーサイドレンダリング (SSR) のデプロイ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372042/8845654f-d76b-4205-809b-7ff1591ff714.png)

最後に確認画面が出るので、「保存してデプロイ」をクリックしてください

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372042/eeef7102-40a3-4527-909f-128d2093085c.png)

デプロイ処理が始まりますので青色の「デプロイ」が「デプロイ済み」になるまで待ちましょう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372042/c11d47e2-051b-4344-8d26-842a262551a0.png)



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372042/747d4872-fcb3-4d2e-b894-c736751cbd0b.png)


デプロイ済みになったら、構築されたサイトにアクセスしてみましょう。右上の「デプロイされたURLにアクセス」をクリックしてください

今回はパスワードを設定しているため、アクセス時に入力を要求されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372042/8f9043e1-831c-4899-a859-9f3f4cf8d32a.png)

パスワード認証が完了後、デプロイされたページが表示されます。

https://udonarium.app/ と同じページが表示されていますね

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372042/4bee4818-f50b-4158-b422-ae49e008716c.png)

これでデプロイは完了です。めっちゃ簡単です。

このあとさらに本番利用に向けて進める場合は、Amlifyコンソール画面での、「本番環境に移行」の指示に書かれているように、カスタムドメインの追加、ファイアウォール保護の有効化、開発ブランチのデプロイなどを設定していくとよいでしょう


# AWS Amplify ホスティングを使うメリット

この説明だけでも、AWS Amplifyの良さは感じてもらえると思いますが、それ以外のメリットもまとめると

- リポジトリを修正したら自動でデプロイしてくれる
  - CI/CD も自動でやってくれます
- ブランチごとにデプロイしてくれる
  - pushした時点でデプロイしてくれるのでトピックブランチでの動作確認も簡単
- パスワード認証を簡単に設定できる
  - ベーシック認証ですが、とりあえずならそれで充分なことも多い
- 環境変数や、シークレットも設定できる
- ファイアウォール機能で、アクセス保護・IP制御・リージョン制御が可能
  - AWS WAFとの統合機能であり、最低料金15$ + WAFの料金がかかるため利用には注意
  - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372042/0547eda2-7a3a-46ac-973c-3e9d1a3f3795.png)
- 上記がシンプルなUIで簡単に設定できる

特に最近のアップデートでファイアーウォール機能がリリースされたことにより、本番環境としての運用までAmlifyのみで実施することが可能になってきたと思います。

詳しくはこちらの記事を参考にしてください。既存WAFとの関連付けも可能のようです

https://dev.classmethod.jp/articles/amplify-waf-ga/


# そのほか機能紹介

ビルドの処理はamplify.ymlを編集することで変更可能です

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372042/6834d7a3-fc2a-40ab-8435-5c2ce19436fb.png)

アクセスコントロール管理でパスワード設定が可能です。ブランチごとにユーザー・パスワードを分けることが可能です

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372042/28a17cc7-3ba0-4585-b82d-8cb47731e797.png)

IAMロールも設定可能です。これによって、サイト上でAWSリソースへのアクセスも可能＋適切な権限管理が可能です

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372042/27aa4f81-f60e-40aa-8a71-91089e60415a.png)

# まとめ

今回は、初めて触る人向けに、デプロイ方法を記載してみました。

S3の静的サイトホスティングの時にAWS Amplifyを使うのが良いらしいが、いざ使おうとすると記事が少なくて不安だった方なども、この記事を通して一度触ってみてはいかがでしょうか。

あらかじめ知っていた方や、すでにS3+CloudFrontで静的サイトホスティングしている方も、昔よりもかなり機能も充実してきたので、改めて触ってみて必要に応じて採用してみてもよいのではないでしょうか。