ビルド設定の構成 - AWS Amplify

ビルド設定の構成

Amplify コンソールでは、リポジトリの package.json ファイルを検査することによって、フロントエンドのフレームワークと、関連するビルド設定が自動的に検出されます。次のオプションがあります。

  • Amplify コンソールでビルド設定を保存する - Amplify コンソールを使用してビルド設定を自動検出および保存することで、Amplify コンソールからアクセスできるようになります。これらの設定は、リポジトリに YML ファイルがある場合を除き、すべてのブランチに適用されます。

  • ビルド設定をリポジトリに保存する - amplify.yml ファイルをダウンロードして、リポジトリのルート (または monorepo のアプリフォルダのルート) に追加します。

これらの設定を Amplify コンソールで設定するには、[アプリ設定 > ビルド設定] を選択します。これらのビルド設定は、アプリケーション内のすべてのブランチに適用されます。ただし、リポジトリに YML ファイルが保存されているブランチは除きます。

YML 仕様の構文

YML ビルド仕様には、Amplify コンソールでビルドの実行に使用される一連のビルドコマンドと関連設定が含まれます。YML の構成は次のとおりです。

version: 1.0 env: variables: key: value backend: phases: preBuild: commands: - *enter command* build: commands: - *enter command* postBuild: commands: - *enter command* frontend: phases: preBuild: commands: - cd react-app - npm ci build: commands: - npm run build artifacts: files: - location - location discard-paths: yes baseDirectory: location cache: paths: - path - path customHeaders: - pattern: 'file-pattern' headers: - key: 'custom-header-name' value: 'custom-header-value' - key: 'custom-header-name' value: 'custom-header-value'
  • version - Amplify コンソールの YML バージョン番号を表します。

  • env - 環境変数をこのセクションに追加します。また、環境変数はコンソールを使用して追加することもできます。

  • backend - Amplify CLI コマンドを実行して、バックエンドのプロビジョン、Lambda 関数の更新、または継続的なデプロイの一環としての GraphQL スキーマの更新を行います。フロントエンドでバックエンドをデプロイする方法について説明します。

  • frontend - フロントエンドのビルドコマンドを実行します。

  • フロントエンドとバックエンドにはいずれも、ビルドの各シーケンス中に実行されるコマンドを表す 3 つのフェーズがあります。
    • preBuild - preBuild スクリプトは、実際のビルドの開始前、依存関係のインストール後に実行されます。

    • build - お客様のビルドコマンド。

    • postBuild - ビルド後のスクリプトはビルド完了後に実行されるため、必要なすべてのアーティファクトを出力ディレクトリにコピーしました。

  • artifacts>base-directory - ビルドアーティファクトが存在するディレクトリ。

  • artifacts>files - デプロイするアーティファクトからファイルを指定します。**/* は、すべてのファイルを含めることを意味します。

  • customHeaders - デプロイされたファイルに設定されたカスタムヘッダールール。「カスタムヘッダー」を参照してください。

ブランチ固有のビルド設定

bash シェルスクリプトを使用してブランチ固有のビルドを設定できます。たとえば、次のスクリプトは、ブランチ名が master の場合はシステム環境変数 $AWS_BRANCH を使用し、ブランチ名が dev の場合は別のコマンドセットを実行します。

frontend: phases: build: commands: - if [ "${AWS_BRANCH}" = "master" ]; then echo "master branch"; fi - if [ "${AWS_BRANCH}" = "dev" ]; then echo "dev branch"; fi

monorepos の場合、ユーザーは、ビルドを実行するためのフォルダに cd を実行することを考える場合があります。cd コマンドを実行すると、cd コマンドがビルドのすべてのステージに適用されるため、各フェーズでコマンドを再度実行する必要はありません。

version: 1.0 env: variables: key: value frontend: phases: preBuild: commands: - cd react-app - npm ci build: commands: - npm run build

フロントエンドでバックエンドをデプロイする

amplifyPush はバックエンドのデプロイを支援するヘルパースクリプトです。以下のビルド設定によって、現在のブランチにデプロイする上で適切なバックエンド環境が自動的に判別されます。

version: 1.0 env: variables: key: value backend: phases: build: commands: - amplifyPush --simple

出力フォルダの設定

次のビルド設定は、出力ディレクトリをパブリックフォルダに設定します。

frontend: phases: commands: build: - yarn run build artifacts: baseDirectory: public

ビルドの一部としてパッケージをインストールする

ビルド中にパッケージをインストールするには、npm または yarn を使用できます。

frontend: phases: build: commands: - npm install -g pkg-foo - pkg-foo deploy - yarn run build artifacts: baseDirectory: public

プライベート npm レジストリを使用する

プライベートレジストリへのリファレンスは、ビルド設定で追加するか、環境変数として追加することができます。

build: phases: preBuild: commands: - npm config set <key> <value> - npm config set registry https://registry.npmjs.org - npm config set always-auth true - npm config set email hello@amplifyapp.com - yarn install

OS パッケージのインストール

OS パッケージをインストールして、不足している依存関係を入手します。

build: phases: preBuild: commands: - yum install -y <package>

ビルドごとのキーと値のストレージ

envCache はビルド時にキーと値のストレージを提供します。envCache に保存された値はビルド中にのみ変更でき、次回のビルドで再利用できます。envCache を使用することで、デプロイされた環境に情報を保存し、それを連続したビルドでビルドコンテナを利用できるようにします。envCache に保存されている値とは異なり、ビルド中に環境変数を変更しても、将来のビルドには反映されません。

使用例:

envCache --set <key> <value> envCache --get <key>

自動ビルドを無効にする

コードのコミットごとに自動ビルドを無効にするように Amplify コンソールを設定できます。セットアップするには、[App settings] > [General] を選択し、接続されているすべてのブランチがあるセクションまでスクロールします。ブランチを選択し、[Action] > [Disable auto build] を選択します。さらにそのブランチにコミットしても、新しいビルドは作成されません。