Name:
interface
Value:
Amplify has re-imagined the way frontend developers build fullstack applications. Develop and deploy without the hassle.

フロントエンドチームとバックエンドチームを分離する

フロントエンドチームとバックエンドチームが独立したリポジトリを維持している場合があります。Amplify Gen 2 では、バックエンドのみのコードを含むリポジトリをデプロイできるため、フロントエンドチームとバックエンドチームは相互に独立して運用できます。

バックエンドアプリをデプロイする

  1. mkdir backend-app && cd backend-app && npm create amplify@latest を実行してバックエンドのみの Amplify プロジェクトをセットアップします。コードを選択した Git プロバイダーにコミットします。

  2. 新しいコンソールで backend-app を接続します。Amplify コンソールに移動して、Create new app を選択します。

  3. リポジトリを接続すると、自動検出されるフレームワークは Amplify のみであることに注意してください。

Amplify コンソールの App Settings セクションのスクリーンショット。Auto-detected frameworks の下に Amplify Deploy が表示されています

  1. Save and deploy を選択すると、バックエンドプロジェクトがビルドされます。

Amplify コンソールの Overview ページのスクリーンショット。メインブランチのデプロイメントが表示されています

フロントエンドアプリをデプロイする

  1. それでは、フロントエンドアプリをセットアップしてデプロイされたバックエンドに接続しましょう。
Terminal
npm create next-app@14 -- multi-repo-example --typescript --eslint --no-app --no-src-dir --no-tailwind --import-alias '@/*'
  1. Amplify の依存関係をインストールします。
Terminal
cd multi-repo-example
npm add @aws-amplify/backend-cli aws-amplify @aws-amplify/ui-react
  1. デプロイされたバックエンドに接続するために、以下のコマンドを実行します。バックエンドアプリケーションの App ID を見つけるには、Amplify コンソールに移動して backend-app を選択します。Overview ページで、App ID はプロジェクト名の下に表示されます。
Terminal
npx ampx generate outputs --branch main --app-id <your-backend-app-id>

これにより、プロジェクトのルートにバックエンドに関するすべての情報を含む amplify_outputs.json ファイルが生成されます。

amplify_outputs.json ファイルが強調表示されたプロジェクトフォルダの内容のスクリーンショット
  1. フロントエンドがバックエンドに接続できることを検証するために、Authenticator ログインフォームをアプリに追加します。
pages/_app.tsx
import { withAuthenticator } from '@aws-amplify/ui-react';
import { Amplify } from 'aws-amplify';
import outputs from '@/amplify_outputs.json';
import '@aws-amplify/ui-react/styles.css';
import '@/styles/globals.css';
import type { AppProps } from 'next/app';
// configure the Amplify client library with the configuration generated by `ampx sandbox`
Amplify.configure(outputs);
function App({ Component, pageProps }: AppProps) {
return <Component {...pageProps} />;
}
export default withAuthenticator(App);
  1. リポジトリに amplify.yml ビルドスペックも追加しましょう。
version: 1
backend:
phases:
build:
commands:
- npm ci --cache .npm --prefer-offline
- npx ampx generate outputs --branch main --app-id BACKEND-APPID
frontend:
phases:
build:
commands:
- npm run build
artifacts:
baseDirectory: .next
files:
- '**/*'
cache:
paths:
- .next/cache/**/*
- .npm/**/*
- node_modules/**/*
  1. それでは、アプリをデプロイしましょう。Amplify コンソールで Create new app を選択します。デフォルト設定でリポジトリを接続します。ビルドが出力を生成し、フロントエンドをデプロイしていないことが表示されます。アプリが正常に機能していることを確認します。

Amplify コンソールの Deployments ページのスクリーンショット。アプリのビルドが表示されています

バックエンドの更新でフロントエンドビルドをトリガーする

理想的なシナリオは、バックエンドコードに変更があるたびに、フロントエンドが自動的にバックエンドから最新の更新を取得することです。

  1. Amplify コンソールを使用して受信 webhookを作成します。

  2. multi-repo-example アプリに移動し、Hosting > Build settingsCreate webhook を選択します。webhook の名前を指定し、受信 webhook リクエストでビルドするターゲットブランチを選択します。

Amplify コンソールの Build settings ページのスクリーンショット。受信 webhook 機能が表示されています

  1. 次に、webhook を選択し、multi-repo-example アプリのビルドをトリガーするために使用される curl コマンドをコピーします。

Amplify コンソールの Incoming webhooks ページのスクリーンショット。新しく作成された webhook が表示されています

  1. 次に、backend-app のビルド設定を更新して、バックエンドが変更されるたびにフロントエンドビルドをトリガーする curl コマンドを含めます。
amplify.yml
version: 1
backend:
phases:
build:
commands:
- npm ci --cache .npm --prefer-offline
- npx ampx pipeline-deploy --branch $AWS_BRANCH --app-id $AWS_APP_ID
frontend:
phases:
build:
commands:
- mkdir ./dist && touch ./dist/index.html
- curl -X POST -d {} "https://webhooks.amplify.ca-central-1.amazonaws.com/prod/webhooks?id=WEBHOOK-ID&token=TOKEN&operation=startbuild" -H "Content-Type:application/json"
artifacts:
baseDirectory: dist
files:
- '**/*'
cache:
paths:
- node_modules/**/*