AWS Amplifyで独自ドメインホスティング環境を構築してみた

![img](https://day-journal.com/memo/images/try-083_01.png)

### AWS Amplifyで独自ドメインホスティング環境を構築してみました :tada:  

<br>

以前の記事内容をAWS Amplifyで実現する方法をためしてみました！

https://qiita.com/dayjournal/items/945613577b3056ec4f71

<br>

今回は3パターンの独自ドメインホスティング環境を構築します。

#### 構築の流れ

1. AWSコンソールから構築する独自ドメインホスティング環境
   - [Amplify ConsoleでGitHubを利用した公開](https://qiita.com/dayjournal/items/57cb0a8232d11c6c99af#amplify-console%E3%81%A7github%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9F%E5%85%AC%E9%96%8B)
   - [Amplify Consoleで独自ドメイン設定](https://qiita.com/dayjournal/items/57cb0a8232d11c6c99af#amplify-console%E3%81%A7%E7%8B%AC%E8%87%AA%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E8%A8%AD%E5%AE%9A)
2. Amplify CLIから構築する独自ドメインホスティング環境
   - [Amplify ConsoleでGitHubを利用した公開(Amplify CLI)](https://qiita.com/dayjournal/items/57cb0a8232d11c6c99af#amplify-console%E3%81%A7github%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9F%E5%85%AC%E9%96%8Bamplify-cli)
   - [Amplify Consoleで独自ドメイン設定](https://qiita.com/dayjournal/items/57cb0a8232d11c6c99af#amplify-console%E3%81%A7%E7%8B%AC%E8%87%AA%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E8%A8%AD%E5%AE%9A-1)
3. Amplify CLIから構築する独自ドメインカスタムホスティング環境
   - [カスタム公開(Amplify CLI)](https://qiita.com/dayjournal/items/57cb0a8232d11c6c99af#%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E5%85%AC%E9%96%8Bamplify-cli)

# AWSコンソールから構築する独自ドメインホスティング環境

はじめに、AWSコンソールからAmplify Consoleを利用し独自ドメインホスティング環境を構築します。

今回のホスティング環境では、GitHubと連携した自動ビルド&デプロイがされる仕組みになっています。また、コンソール上には表示されませんが、内部的にはAmazon S3とAmazon CloudFrontを利用してデプロイをしているようです。また、AWS WAFについては追加で設定できないようです。

## Amplify ConsoleでGitHubを利用した公開

Amplify ConsoleでGitHubを利用した公開をする方法です。

事前準備

- GitHubでリポジトリ作成とコード反映まで  
- 今回はサンプルとしてVue.jsのプロジェクトを追加  

![img](https://day-journal.com/memo/images/aws-amplify-014_01.png)

AWSコンソール → AWS Amplifyをクリック。
![img](https://day-journal.com/memo/images/aws-amplify-007_01.png)

Amplify Hostingの「使用を開始する」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-007_02.png)

「GitHub」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-014_02.png)

GitHubの認証画面が表示されるので「Authorize」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-014_03.png)

事前準備していた対象リポジトリとブランチを選択 → 「次へ」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-014_04.png)

任意のアプリケーション名設定 → 「次へ」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-014_05.png)

「保存してデプロイ」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-014_06.png)

自動デプロイが終わるとAWSコンソールでURLが発行されるのでアクセスします。
![img](https://day-journal.com/memo/images/aws-amplify-014_07.png)

デプロイしたWebSiteが表示されます。

<br>

## Amplify Consoleで独自ドメイン設定

Amplify Consoleで独自ドメイン設定をする方法です。  

事前準備

- Amazon Route 53による独自ドメインの取得  
  [Amazon Route 53 #001 - 独自ドメイン購入登録](https://day-journal.com/memo/amazon-route53-001)

![img](https://day-journal.com/memo/images/amazon-route53-001_08.png)

「ドメイン管理」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-013_01.png)

「ドメインを追加」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-013_02.png)

対象ドメインを選択 → 「ドメインを設定」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-013_03.png)

対象ドメインとブランチを確認 → 「保存」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-013_04.png)

設定完了後に独自ドメインにアクセスします。
![img](https://day-journal.com/memo/images/aws-amplify-013_05.png)


独自ドメインでWebSiteが表示されます。
![img](https://day-journal.com/memo/images/aws-amplify-013_06.png)

<br>

# Amplify CLIから構築する独自ドメインホスティング環境

次に、Amplify CLIからAmplify Consoleを利用し独自ドメインホスティングを構築します。

「Amplify ConsoleでGitHubを利用した公開」と同一構成のホスティング環境になります。

## Amplify ConsoleでGitHubを利用した公開(Amplify CLI)

Amplify CLIによるAmplify ConsoleでGitHubを利用した公開をする方法です。

事前準備

- AWS Amplifyの環境構築。  
  [AWS Amplify #002 - 環境構築 [Vue.jsバージョン]](https://day-journal.com/memo/aws-amplify-002)

実行環境

- node v16.10.0
- npm v7.24.0

ホスティング環境を設定します。実行時に「Hosting with Amplify Console」と「Continuous deployment (Git-based deployments)」を選択します。

```shell
amplify add hosting
```
![img](https://day-journal.com/memo/images/aws-amplify-015_01.png)

AWSコンソールが自動で表示されるので「GitHub」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-015_02.png)

GitHubの認証画面が表示されるので「Authorize」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-014_03.png)

事前準備していた対象リポジトリとブランチを選択 → 「次へ」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-015_03.png)

対象アプリケーションと環境を選択。既存のロールが無い場合は「新しいロールを作成」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-015_04.png)

エンティティタイプは「AWSのサービス」を選択。ユースケースは「Amplify」を選択 → 「次へ」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-015_05.png)

「次へ」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-015_06.png)

任意のロール名を設定 → 「ロールを作成」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-015_07.png)

作成したロールを選択 → 「次へ」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-015_08.png)

「保存してデプロイ」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-015_09.png)

AWSコンソールの設定完了後、コマンドに戻りEnterを実行。
![img](https://day-journal.com/memo/images/aws-amplify-015_10.png)

自動デプロイが終わるとAWSコンソールでURLが発行されるのでアクセスします。
![img](https://day-journal.com/memo/images/aws-amplify-015_11.png)

デプロイしたWebSiteが表示されます。

<br>

## Amplify Consoleで独自ドメイン設定

Amplify Consoleで独自ドメイン設定をする方法です。  

事前準備

- Amazon Route 53による独自ドメインの取得  
  [Amazon Route 53 #001 - 独自ドメイン購入登録](https://day-journal.com/memo/amazon-route53-001)

![img](https://day-journal.com/memo/images/amazon-route53-001_08.png)

「ドメイン管理」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-013_01.png)

「ドメインを追加」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-013_02.png)

対象ドメインを選択 → 「ドメインを設定」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-013_03.png)

対象ドメインとブランチを確認 → 「保存」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-013_04.png)

設定完了後に独自ドメインにアクセスします。
![img](https://day-journal.com/memo/images/aws-amplify-013_05.png)

独自ドメインでWebSiteが表示されます。

<br>

## Amplify CLIから構築する独自ドメインカスタムホスティング環境

最後に、Amplify CLIから直接Amazon CloudFrontとAmazon S3を利用し独自ドメインホスティング環境を構築します。

## カスタム公開(Amplify CLI)

Amplify CLIによるカスタム公開をする方法です。  

事前準備

- AWS Amplifyの環境構築。  
  [AWS Amplify #002 - 環境構築 [Vue.jsバージョン]](https://day-journal.com/memo/aws-amplify-002)

実行環境

- node v16.10.0
- npm v7.24.0

ホスティング環境を設定します。実行時に「Amazon CloudFront and S3」を選択します。

```shell
amplify add hosting
```

![img](https://day-journal.com/memo/images/aws-amplify-012_01.png)

![img](https://day-journal.com/memo/images/aws-amplify-012_02.png)

設定確認をします。

```shell
amplify status
```

![img](https://day-journal.com/memo/images/aws-amplify-012_03.png)

アプリケーションを自動でビルドしクラウドにデプロイします。

```shell
amplify publish
```

![img](https://day-journal.com/memo/images/aws-amplify-012_04.png)

AWS Amplify Consoleにはデプロイされていないのを確認します。
![img](https://day-journal.com/memo/images/aws-amplify-012_05.png)

Amazon S3に自動でデプロイされているのを確認します。
![img](https://day-journal.com/memo/images/aws-amplify-012_06.png)

Amazon CloudFrontに自動でデプロイされているのを確認します。作成されたURLにアクセスします。
![img](https://day-journal.com/memo/images/aws-amplify-012_07.png)

デプロイしたURLにアクセスしても、リージョンによってはすぐには表示できません。「[Amplify Docs - Hosting](https://docs.amplify.aws/cli/hosting/hosting/#amazon-s3-and-amazon-cloudfront)」によると24時間後までには表示されるらしいです。すぐに表示したいかたは下記設定で表示可能です。  
![img](https://day-journal.com/memo/images/aws-amplify-012_08.png)

オリジン → 対象のオリジン選択 → 「編集」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-012_09.png)

同一のオリジンドメインを再選択(ドメインにリージョンが追加される) → 「変更を保存」をクリック。
![img](https://day-journal.com/memo/images/aws-amplify-012_10.png)

デプロイしたWebSiteが表示されます。

カスタム公開で、独自ドメイン設定やAWS WAFを利用したい場合は下記記事を参考に追加で設定。または、プロジェクト内のAWS CloudFormationの設定ファイルを編集。  

https://qiita.com/dayjournal/items/945613577b3056ec4f71

<br>

AWS Amplifyを利用することで、独自ドメインホスティング環境のさまざまな構築やGitHubと連携した自動ビルド&デプロイが可能です :bulb: 

今後は、AWS CloudFormationやAWS CDK等で、各サービス構成をどの範囲まで定義できるかも試していければと思います。

<br>

AWS Amplifyについて、他にも記事を書いています。よろしければぜひ :bow:
<a href="https://day-journal.com/memo/tags/AWS-Amplify" target="_blank">tags - AWS Amplify</a>

やってみたシリーズ :grinning:
<a href="https://day-journal.com/memo/tags/Try" target="_blank">tags - Try</a>

https://qiita.com/dayjournal/items/945613577b3056ec4f71

https://qiita.com/dayjournal/items/c6e4ca20887a093560a0

https://qiita.com/dayjournal/items/47ec90a12447dc458cca

https://qiita.com/dayjournal/items/7989da7374050c5d09b1

https://qiita.com/dayjournal/items/c827a17917127bff3906

<br>
<br>

<a href="https://dayjournal.booth.pm" target="_blank"><img src="https://day-journal.com/memo/images/etc/book.png" alt="book"></a>