

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amplify への Next.js SSR アプリケーションのデプロイ
<a name="deploy-nextjs-app"></a>

デフォルトでは、Amplify は Next.js バージョン 12 から 15 をサポートする Amplify ホスティングのコンピューティングサービスを使用して新しい SSR アプリケーションをデプロイします。Amplify ホスティングコンピューティングは、SSR アプリケーションのデプロイに必要なリソースを完全に管理します。2022 年 11 月 17 日より以前にデプロイした Amplify アカウントの SSR アプリは、クラシック (Next.js 11 のみ) の SSR プロバイダーを使用しています。

クラシック (Next.js 11 のみ) SSR を使用するアプリをAmplify ホスティングコンピューティングSSR プロバイダーに移行することを強く推奨します。Amplify は自動移行を行いません。更新を完了するには、アプリを手動で移行してから新しいビルドを開始する必要があります。手順については、「[Next.js 11 SSR アプリをAmplify ホスティングコンピューティングに移行する](update-app-nextjs-version.md)」を参照してください。

以下の手順で新しい Next.js SSR アプリをデプロイします。

**Amplify ホスティングコンピューティングSSR プロバイダーを使用して SSR アプリを Amplify にデプロイするには**

1. にサインイン AWS マネジメントコンソール し、[Amplify コンソール](https://console.aws.amazon.com/amplify/)を開きます。

1. **[すべてのアプリ]** ページで、**[アプリの新規作成]** を選択します。

1. **[Amplify で構築を開始]** ページで、自分の Git リポジトリプロバイダーを選択し、**[次へ]** を選択します。

1. **[リポジトリブランチを追加]** ページで、次の操作を行います。

   1. 「**最近更新されたリポジトリ**」リストで、接続するリポジトリの名前を選択します。

   1. **ブランチリストで**、接続するリポジトリブランチの名前を選択します。

   1. **[次へ]**をクリックします。

1. アプリには、、お客様に代わって他のサービスを呼び出すときに Amplify が引き受ける IAM サービス ロールが必要です。Amplify ホスティングコンピューティングにサービスロールを自動的に作成させることも、作成したロールを指定することもできます。
   + Amplify が自動的にロールを作成してアプリにアタッチできるようにするには:

     1. **[新しいサービスロールの作成と使用]** を選択します。
   + 以前に作成したサービスロールをアタッチするには:

     1. **[既存のサービスロールを使用する]** を選択します。

     1. リストから使用するロールを選択します。

1. [**次へ**] を選択します。

1. **[レビュー]**ページで、**[保存してデプロイ] **を選択します。

## パッケージ.json ファイルの設定
<a name="package.json-settings"></a>

Next.js アプリをデプロイすると、Amplify は `package.json` ファイル内のアプリのビルドスクリプトを調べて、アプリの種類を判断します。

Next.js アプリのビルドスクリプトの例を次に示します。ビルドスクリプトは`"next build"`、アプリがSSGページとSSRページの両方をサポートしていることを示しています。このビルドスクリプトは、Next.js 14 以降の SSG 専用アプリケーションにも使用されます。

```
"scripts": {
  "dev": "next dev",
  "build": "next build",
  "start": "next start"
},
```

Next.js 13 以前の SSG アプリのビルドスクリプトの例を次に示します。ビルドスクリプトは`"next build && next export"`、アプリが SSG ページのみをサポートしていることを示しています。

```
"scripts": {
  "dev": "next dev",
  "build": "next build && next export",
  "start": "next start"
},
```

## Next.js SSR アプリケーション用の Amplify のビルド設定
<a name="build-setting-detection"></a>

アプリの `package.json` ファイルを検査すると、Amplify はアプリのビルド設定をチェックします。ビルド設定は、Amplify コンソールまたはリポジトリのルートにある`amplify.yml`ファイルに保存できます。詳細については、「[Amplify アプリケーションのビルド設定の構成](build-settings.md)」を参照してください。

Amplify が Next.js SSR アプリをデプロイしていることを検出し、`amplify.yml`ファイルが存在しない場合、アプリのビルドスペックが生成され、`baseDirectory`が`.next`に設定されます。ファイルが存在するアプリをデプロイする場合、`amplify.yml`ファイル内のビルド設定はコンソールのビルド設定よりも優先されます。そのため、ファイル内の`baseDirectory`は手動で`.next`に設定する必要があります。

以下は、`baseDirectory`が`.next`に設定されているアプリのビルド設定の例です。これは、ビルドアーティファクトが SSG ページと SSR ページをサポートする Next.js アプリ用であることを示しています。

```
version: 1
frontend:
  phases:
    preBuild:
      commands:
        - npm ci
    build:
      commands:
        - npm run build
  artifacts:
    baseDirectory: .next
    files:
      - '**/*'
  cache:
    paths:
      - node_modules/**/*
```

## Next.js 13 以前の SSG アプリケーション用の Amplify のビルド設定
<a name="build-setting-detection-ssg-13"></a>

Amplify が Next.js 13 以前の SSG アプリをデプロイしていることを検出すると、そのアプリのビルド使用が生成され、`baseDirectory` が `out` に設定されます。ファイルが存在するアプリをデプロイする場合は、`amplify.yml`ファイル内で`baseDirectory`を手動で`out`に設定する必要があります。`out` ディレクトリは、エクスポートされた静的アセットを保存するために Next.js が作成するデフォルトのフォルダです。アプリのビルド仕様設定を構成するときは、アプリの設定と一致するように `baseDirectory` フォルダの名前を変更します。

次の例が示すのは、`baseDirectory` を `out` に設定することで、ビルドアーティファクトが SSG ページのみをサポートする Next.js 13 以前のアプリケーション用であることを示すアプリのビルド設定です。

```
version: 1
frontend:
  phases:
    preBuild:
      commands:
        - npm ci
    build:
      commands:
        - npm run build
  artifacts:
    baseDirectory: out
    files:
      - '**/*'
  cache:
    paths:
      - node_modules/**/*
```

## Next.js 14 以降の SSG アプリケーション向けの Amplify ビルド設定
<a name="build-setting-detection-ssg-14"></a>

Next.js バージョン 14 では、静的エクスポートを有効にするために、`next export` コマンドは非推奨になり、`next.config.js` ファイルで `output: 'export'` に置き換えられました。Next.js 14 SSG 専用アプリケーションをコンソールにデプロイする場合、Amplify はアプリの buildspec を生成し、`baseDirectory` を `.next` に設定します。ファイルが存在するアプリをデプロイする場合は、`amplify.yml`ファイル内で`baseDirectory`を手動で`.next`に設定する必要があります。これは、SSG ページと SSR ページの両方をサポートする Next.js `WEB_COMPUTE` アプリケーションで Amplify が使用するのと同じ `baseDirectory` 設定です。

以下は、`baseDirectory` が `.next` に設定された Next.js 14 SSG 専用アプリケーションのビルド設定の例です。

```
version: 1
frontend:
  phases:
    preBuild:
      commands:
        - npm ci
    build:
      commands:
        - npm run build
  artifacts:
    baseDirectory: .next
    files:
      - '**/*'
  cache:
    paths:
      - node_modules/**/*
```