🎉

AWS Amplifyにサイトを公開する

2023/09/18に公開

ゴール

WEBサイトを作成(今回はAngular)し、Amplify上に自動デプロイする。

前提

開発環境(Windows)の設定は完了済みとします。
AWSアカは作成済みとします。
CodeCommitのGit認証情報も予め作成済みとします。

手順

1.Amplify CLIのインストール

https://zenn.dev/nekoxile/articles/df6f7e5d511da3

2.Gitの準備

ソースコードを管理するGitリポジトリを作成します。
AWS Code Commitを利用します。

Gitリポジトリの作成

aws codecommit create-repository --repository-name amplify-test --repository-description "Amplifyテストリポジトリ" --region ap-northeast-1

実行に成功した場合に返却される下記値を使ってクローンを作成します。
後で利用します。

"cloneUrlHttp": "https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/amplify-test"

3.公開するサイトを作成する

WEBに公開するためのサイトを作成します。
今回は簡単なデモ用の作成に留めます。

①Angularプロジェクトを作成します。

以下のコマンドを使用します。
ng new プロジェクト名

ng new amplify-test

今回の設定値は以下の通りです。

②作成したAngularプロジェクトに移動します。

cd amplify-test

③ローカルでテストサーバを起動しアプリケーションを実行]

npm start

ブラウザから以下のURLにアクセスします。
http://localhost:4200/

正常に実行できた場合、以下が表示されます。

4.Amplifyプロジェクトの設定

以下のコマンドでAmplifyプロジェクトの初期設定を行います。

amplify init

今回の設定値は以下の通りです。

これでAmplifyスタックの作成が始まり、Amplifyプロジェクトが作成されます。
※Amplifyコンソールでアプリにsampleappが登録されたことを確認できます。

4.サイトをホスティングする

Amplify Web Hosting を使ってサイトのホスティングと自動デプロイする

作成したアプリケーションをGitリポジトリに接続します。

git remote add origin https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/amplify-sample

Git リポジトリにプッシュする

メインブランチにプッシュします。

git add .
git commit -m "first"
git push origin main

必要であれば、開発環境用のdevブランチを作成します。

git checkout -b dev
git push origin dev

ここまででGitの準備は完了。

Amplifyのコンソール画面での設定

Amplifyのコンソール画面にアクセスし、今回作成したamplifysampleを選択します。
Hosting environmentsタブを選択し、AWS CodeCommitを選択、「ブランチを接続」を選択します。

作成したリポジトリを選択します。
ブランチはdevを選択します。
次へを選択します。

このブランチで使用するバックエンドを選択します。
新しいロールを作成を選択します。

※ロール名「amplifyconsole-backend-role-test」とし、ポリシーにAdministratorAccessを追加します。

作成したロールを選択し、次へを選択します。

保存してデプロイを選択します。

正常に終了した場合、devブランチに自動デプロイされます。

devブランチのURLを選択し、デプロイされていることを確認します。

コードの修正を行い、リポジトリにPUSHをすれば、自動デプロイによりAmplifyHosting上に反映されます。

git add .
git commit -m "XX修正"
git push origin dev

問題

新規にプロジェクトを作成した場合、うまく動作するが、
既存のサイトをAmplifyに自動デプロイできない。
よって、以下の方法で仮対応

以下のコマンドを実行します。
静的コンテンツ用のS3の設定を行います。

amplify add hosting

結果は以下のようになります。

> amplify add hosting
? Select the plugin module to execute ...  (Use arrow keys or type to filter)
❯ Hosting with Amplify Console (Managed hosting with custom domains, Continuous deployment)
  Amazon CloudFront and S3

Amazon CloudFront and S3を選択します。

結果は以下のようになります。

√ Select the plugin module to execute · Amazon CloudFront and S3
√ hosting bucket name · xxxxx-hostingbucket
Static webhosting is disabled for the hosting bucket when CloudFront Distribution is enabled.
You can now publish your app using the following command:
Command: amplify publish

以下のコマンドを実行します。
S3上に静的コンテンツをアップロードします。

amplify publish

無事にCloudfront上にサイトが公開されました。

参考
https://qiita.com/poruruba/items/0030a40f148369c4130d

Discussion