サーバレスのサムネイル

サーバレス

Netlifyで「Build exceeded maximum allowed runtime」となった時の対処方法

公開日: 2021.3.4

Netlifyで「Build exceeded maximum allowed runtime」となってビルドに失敗した時の対処方法をまとめました。

編集ノート: SERVERSUSでは、パートナーリンクからコミッションを得ています。コミッションが記事の意見や、サービスの評価に影響を与えることはありません。

「Build exceeded maximum allowed runtime」はどういう状態か?

Netlifyでエラーが起こっていないのにビルドに失敗すると、「Build exceeded maximum allowed runtime」というログで終わっていることがあります。これは直訳すると「ビルドが最大許容ランタイムを超えた」という意味ですが、つまりはビルドの作業がNetlifyのbuild robotの処理能力を超えてしまっている時に起こるようです。

中小規模のブログ程度なら遭遇することはあまりませんが、中規模以上のブログなどを静的サイトジェネレータで出力すると、このようなエラーに遭遇しやすくなります。

Netlifyではビルドを担当するbuild robotのスペックをユーザーは指定できないので、このままでは永久にサイトを公開できない状態になります。

対処方法

ビルド処理を軽くする

ビルドのどの段階で「Build exceeded maximum allowed runtime」というエラーが出ているのかにもよりますが、概ねサイトの生成時の負荷が原因ですので、ビルドを軽くするのが優先です。

あまり使っていないプラグインを外したり、複雑な処理を行なっているところを見直したりして、なるべく処理を軽くするように心がけます。

それでも、サイトの構成によっては処理を軽くするのにも限界があるので、その場合は、別の方法で対処します。

ローカルでビルド、デプロイする

Netlifyは、ローカルのコマンドラインからビルド&デプロイを処理できる「Netlify Cli」というツールが提供しています。

Get started with Netlify CLI

通常、Netlifyでは、

  1. レポジトリにプッシュ
  2. Netlifyがレポジトリの変更を検知
  3. Netlifyが自動でビルド&デプロイ

という流れですが、Netlify CLIであれば、ビルド済みのデータをいきなりデプロイすることが可能です。

具体的な設定方法は公式のドキュメントに譲りますが、

netlify deploy --dir=dist/ –prod

このコマンドだけで、本番にデプロイできます。

「dir」はカレントディレクトリから見た公開ディレクトリの場所、「–prod」はいきなり本番環境にデプロイする際の引数です。「–prod」がなければ、一旦ステージング用の仮URLで公開されるので、確認したらNetlifyの管理画面から「publish」ボタンを押せば公開されます。

ローカルでビルド、デプロイするデメリットとしては、毎回コマンドを打つ手間があるくらいですが、この辺りもコマンドを登録しておけば簡略化できるので、アイデア次第ではそこまで手間になりません。

例えば、Node.jsのプロジェクトなら、package.jsonに下記のようなスクリプトを登録しておけば、一発でビルド&デプロイができます。

{
  "name": "Node Project",
  "private": true,
  "scripts": {
    "depoy": "node build && netlify deploy --dir=dist/ –prod"
  },

Netlifyで「Build exceeded maximum allowed runtime」となった時の対処方法を見てきました。

小規模サイトを運営しているときは滅多に見ないエラーですが、ある程度の規模のサイトになってくると、意外と「エラーがないのにビルドに失敗する」というシーンに遭遇します。

Netlifyでは代替方法が提供されているので、そちらを使ってみてください。


価格は記載がある場合を除き、すべて税込みです。

関連キーワード

サーバレスの新着記事