管理人Kのひとりごと

デジモノレビューやプログラミングや写真など

Amplifyホスティングで1枚物のHTMLを配信する

1枚物のHTMLをAmplifyホスティングでサクッと配信した際のメモです。

Amplify & Amplifiホスティングとは

Amplifyは、モバイルアプリやWebアプリの作成、デプロイ、ホスティングを行うためのツールやサービスの総称。
その中で、Amplifyホスティングは、WebアプリのCI/CDを行えるサービス。
Amplifyホスティングのページでは、React, Angular、Vue、Next.jsをサポートする旨書いてあるが、1枚物のHTMLでもOK。
CI/CDに加え、

  • CDN
  • HTTPS通信
  • Basic認証
  • WAF

等もサポートしており、静的ページを手軽に、そしてセキュアかつスケーラブルに配信するのにうってつけです。

Amplifyホスティング利用手順

前提

1. GitHubにパブリックリポジトリを作成し、下記HTMLファイルをプッシュ済みであること。
2. AWSアカウントを開設済みで、Ampliyに関する権限を持つこと(横着してFullAccess権限でやりました)

配信対象のHTMLファイル

高い買い物するとき、1年使うから、1日いくらだな、って計算しませんか?
そんな計算をできるWebページを作りました。

手順

1. https://ap-northeast-1.console.aws.amazon.com/amplify/にアクセスし、「アプリケーションをデプロイ」を押下

2.「新しいアプリを作成」を押下

3. Gitプロバイダーとして「GitHub」を選択

4. 緑のボタン(作成したいリージョンにより異なる)を押下し、AmplifyがGitHubアカウントにアクセスする許可を与える

5. 今回は特定のリポジトリに対して許可を与えるため、「Only select repositories」を選択して、特定のリポジトリに対してのみアクセス権を付与する

6. GitHubのアカウント認証をPassKeyを用いて行う(GitHubアカウントのPassKey設定をしている場合)

7. リポジトリおよびブランチを指定の上、「次へ」を押下(モノレポの場合、「私のアプリケーションはモノレポです」にチェックの上、今回のルートディレクトリとなるディレクトリを指定)

8. アプリケーション名他、ビルド設定を行う。今回は単純なHTMLにつき、アプリケーションの名前以外は空欄で、「次へ」を押下

9. 確認画面が表示されるため、確認の上、「保存してデプロイ」を押下
[デプロイされる

10. デプロイ後、URLが発行されるため、発行されたURLにアクセス

11. HTTPS対応されています

Amplifyホスティングの機能+GitHubを利用して、CI/CDしてみる

やりたいこと

1. 本番用の「main」ブランチと、開発用の「dev」ブランチを作る
2. まずは「dev」ブランチで資産を更新する
3. 「dev」ブランチの内容も配信するが、Basic認証をかけて閲覧可能者を限定する
4. 「dev」ブランチの内容がOKであれば、「main」ブランチにマージする(ビルドが走るはず)
5. 「main」側にも変更内容が反映される

やってみる(事前設定)

事前設定1. 「dev」ブランチ作成&Amplifyに追加

GitHubで「dev」ブランチを作成する

Amplifyホスティング側で、devブランチを追加する



自動的にデプロイされる

事前設定2. 「dev」ブランチにbasic認証設定実施

「dev」ブランチに対し、ユーザ名、パスワードを設定

「dev」ブランチアクセス時にはBasic認証ダイアログが表示される

CI/CDやってみる

「dev」ブランチの資材を編集し、プッシュする(今回は文言、背景色を変更) → 自動的にビルド・デプロイが走る

dev側のみ変更が反映される

GitHubでdev→mainのマージを行う

main側のビルド・デプロイが走る

main側にも変更が反映された

感想

HTML書くのに注力でき、AWS周りの設定がほとんど必要なくHTML配信環境ができたのが驚きでした。一時的にWebページを公開したいときなどに好適ではないでしょうか。ただ、設定できる内容には制限があるので、いろいろ設定したい、という場合には他のサービスを利用した方が良いかもしれません。

参考にしました

1. 1枚物HTMLですが、Vue.js使ってみたので書き方を参考にしました
www.webcreatorbox.com

2. S3でHTTPS対応した静的Webページ配信したいなーと探していたところ以下の記事を見つけたため、参考にして実施しました
dev.classmethod.jp