背景・目的
以前、NuxtやVue.js、Amplifyを試してみました。(詳細は、下記の記事を参照。)
今回は、Nuxtにより作成したアプリケーションを、Amplifyのホスティングサービスで動かしてみます
まとめ
下記に特徴をまとめます。
特徴 | 説明 |
---|---|
Amplify Zero-Config Providers | AWS Amplify との統合は設定なしで可能 |
Amplify ビルド設定の構成 | Amplifyホスティングを使用してアプリケーションをデプロイすると、pakcage.jsonファイルを検査する 検査時に、フロントエンドフレームワークと関連するビルド設定が自動的に検出される |
Nitro | すべてを備えたウェブサーバを構築し、必要なものをすべて揃えて好きな場所へデプロイできる |
概要
Amplify
Zero-Config Providers
下記の記事を基に整理します。
Integration with AWS Amplify is possible with zero configuration, learn more.
- AWS Amplify との統合は設定なしで可能
ビルド設定の構成
下記をドキュメントを基に整理します。
Amplify ホスティングを使用してアプリをデプロイすると、リポジトリ内の package.json ファイルを検査することで、フロントエンドフレームワークと関連するビルド設定が自動的に検出されます。アプリのビルド設定を保存するには、次のオプションがあります。
- Amplify コンソールでビルド設定を保存する - Amplify コンソールを使用してビルド設定を自動検出および保存することで、Amplify コンソールからアクセスできるようになります。リポジトリに amplify.yml ファイルが保存されている場合を除き、Amplify はこれらの設定をすべてのブランチに適用します。
- ビルド設定をリポジトリに保存する - amplify.yml ファイルをダウンロードして、リポジトリのルートに追加します。
Amplify コンソールでアプリのビルド設定を編集するには、「ホスティング」を選択し、ナビゲーションペインでビルド設定を選択します。ビルド設定は、アプリ内のすべてのブランチに適用されます。ただし、リポジトリに amplify.yml ファイルが保存されたブランチを除きます。
- Amplifyホスティングを使用してアプリケーションをデプロイすると、pakcage.jsonファイルを検査する
- 検査時に、フロントエンドフレームワークと関連するビルド設定が自動的に検出される
- アプリのビルド設定は、下記のオプションがある
- Amplifyコンソールでビルド設定を保存する
- コンソールを使用してビルド設定を自動検出、保存することで、コンソールからアクセス可能
- ビルド設定をリポジトリに設定する
- amplify.ymlファイルをダウンロードし、リポジトリのルートに追加
- Amplifyコンソールでビルド設定を保存する
Nitro
Next Generation Server Toolkitということで、すべてを備えたウェブサーバを構築し、必要なものをすべて揃えて好きな場所へデプロイするとのことです。下記を基に概要を整理します。
下記に特徴を記載します。
- Rapid Development
- 設定ゼロのホットモジュール
- Deploy Anywhere
- 追加の設定なしで、同一コードを任意のデプロイメントプロバイダーにデプロイできる
- Portable and Compact
- 出力サイズは1MB未満
- Filesystem Routing
- サーバとAPIルーターを自動で登録する
- Minimal Design
- 最小限のオーバヘッドであらゆるソリューションに適合する最小限の設計
- Code-Splitting
- 早いサーバ起動時間と応答のために、非同期チャンクローディング
- TypeScript
- TypeScriptのサポートに加えて、便利な機能も備わっている
- Storage Layer
- マルチドライバーとPFに依存しない、ストレージシステム
- Cache API
- キャッシュAPIがビルドインされている
- Hackable
- プラグインフックを使用してカスタマイズできる
- Auto Imports
- 自動的にインポートする
- Backward Compatible
- レガシーnpmパッケ時、CommonJS、Node.jsモジュールを使用できる
Zero-Config Provider
次に下記の記事も参考にします。
When deploying to production using CI/CD, Nitro tries to automatically detect the provider environment and set the right one without any additional configuration required. Currently, the providers below can be auto-detected with zero config.
- CI/CDでプロダクションデプロイ時に、Nitroは、自動でプロバイダー環境の検知と、追加で構成を必要とせずに適切な構成をセットする
- 2024/8時点では、下記の環境をZeero-Configで自動検出する
- AWS Amplify
- Azure
- CloudFlare
- Netlify
- Stormkit
- Vercel
- Zeabur
実践
前提
以前、下記でPushしたリポジトリを基にしています。
デプロイ
下記を基に試してみます。
-
AWSにサインインし、Amplifyに移動します
-
「新しいアプリを作成」をクリックします
-
下記を入力し、「次へ」をクリックします
-
ちなみに、amplify.yamlでは、yarnのinstallと、run buildが実行されていますので、下記のように書き換えます
-
確認画面では、問題なければ「デプロイ」をクリックします(しばらく待ちます)
-
デプロイ完了後に、「デプロイされたURLにアクセス」をクリックします
その他
失敗したポイント
- 下記でエラーになりました。
.amplify-hostng
が存在しない2024-08-11T04:45:57.995Z [INFO]: ## Build completed successfully 37 2024-08-11T04:45:58.003Z [ERROR]: !!! CustomerError: Artifact directory doesn't exist: .amplify-hosting
-
amplify.yml
では下記のようになっており、ビルド済みのベースディレクトリがみあたらないのですねversion: 1 frontend: phases: preBuild: commands: - 'yarn install' build: commands: - 'yarn run build' artifacts: baseDirectory: .amplify-hosting files: - '**/*'
- 下記のように書き換えました。nuxtの静的ビルドは、generateの実行と、dist以下にファイルが作成されるので、distに変更してます
version: 1 frontend: phases: preBuild: commands: - 'yarn install' build: commands: - 'yarn build' - 'yarn generate' artifacts: baseDirectory: dist files: - '**/*'
考察
今回、GitHubにあげたNuxtフレームワークアプリケーションを、Amplifyのホスティングサービスにロードしました。
次回以降は、OAuth0と連携を試してみたいと思います。
参考