ジョブのサイズ超過に関するエラーを解決する

この記事では、JobSizeExceededException および DeploymentJobSizeExceededException エラーを解決する方法について説明します。 ジョブのサイズ超過エラーは、Bicep ファイルまたは Azure Resource Manager テンプレート (ARM テンプレート) をデプロイするときに発生する可能性があります。

症状

テンプレートをデプロイするときに、デプロイが制限を超えたことを示すエラーが表示されます。

原因

このエラーは、許可されている制限をデプロイが超えたときに発生します。 通常、このエラーは、テンプレートまたはデプロイを実行するジョブのいずれかが大きすぎる場合に表示されます。

デプロイ ジョブは 1 MB を超えてはなりません。これには、要求に関するメタデータも含まれます。 大きいテンプレートの場合、メタデータとテンプレートが組み合わされると、ジョブで許容されるサイズを超える可能性があります。

テンプレートは 4 MB を超えることはできず、各リソース定義は 1 MB を超えることはできません。 この制限は、ループを使用して多数のインスタンスを作成するリソース定義用に拡張された後の、テンプレートの最終的な状態に適用されます。 最後の状態には、変数およびパラメーターの解決済みの値も含まれます。

テンプレートのその他の制限は次のとおりです。

  • パラメーター 256 個
  • 変数 256 個
  • リソース (コピー数を含む) 800 個
  • 出力値 64 個
  • テンプレート式内で 24,576 文字

解決策 1: 依存関係を慎重に使用する

リソースが別のリソースをそのシンボリック名で参照するときに作成される暗黙的な依存関係を使用します。 ほとんどのデプロイでは、dependsOn を使用して明示的な依存関係を作成する必要はありません。

解決策 2: テンプレートを簡略化する

ファイルで多くの異なるリソースの種類をデプロイする場合は、それをモジュールに分割することを検討してください。 リソースの種類を論理グループに分割し、グループごとにモジュールを追加します。 たとえば、多数のネットワーク リソースをデプロイする必要がある場合、それらのリソースをモジュールに移動できます。

他のリソースを暗黙的な依存関係として設定し、モジュールの出力から値を取得できます。

解決策 3: 名前のサイズを小さくする

parametersvariablesoutputs に使用する名前の長さを短くしてください。 これらの値がループで繰り返されると、長い名前は何度も増殖します。