次の方法で共有


クイックスタート: Bicep ファイルのデプロイのトラブルシューティング

このクイック スタートでは、Bicep ファイルのデプロイ エラーのトラブルシューティング方法について説明します。 エラーを含むファイルを作成し、エラーを修正する方法について説明します。

デプロイに関するエラーには 3 種類あります。

  • 検証エラー は、デプロイが開始される前に発生し、ファイル内の構文エラーが原因で発生します。 これらのエラーは、Visual Studio Code などのコード エディターで特定できます。
  • プレフライト検証エラー は、デプロイ コマンドが実行されていてもリソースがデプロイされていない場合に発生します。 これらのエラーは、デプロイを開始しなくても検出されます。 たとえば、パラメーターの値が正しくない場合は、プレフライト検証でエラーが検出されます。
  • デプロイ エラー はデプロイ プロセス中に発生し、Azure 環境でのデプロイの進行状況を評価することによってのみ見つけることができます。

どの種類のエラーでも、デプロイのトラブルシューティングに使用できるエラー コードが出力されます。 検証とプレフライトのエラーはアクティビティ ログに表示されますが、デプロイ履歴には表示されません。 構文エラーがある Bicep ファイルは JSON にコンパイルされず、アクティビティ ログに表示されません。

[前提条件]

このクイックスタートを実行するには、次のものが必要です。

エラーを含む Bicep ファイルを作成する

次の Bicep ファイルをコピーし、ローカルに保存します。 このファイルを使用して、検証エラー、プレフライト エラー、デプロイ エラーのトラブルシューティングを行います。 このクイック スタートでは、 troubleshoot.bicep ファイルに名前を付けたものの、任意の名前を付けることができることを前提としています。

@description('SKU for the storage account')
@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
parameter storageAccountType string = 'Standard_LRS'

@description('Prefix for storage name.')
param prefixName string

var storageAccountName = '${prefixName}${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
  name: storageAccountName
  location: resourceGroup().location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

resource existingVNet 'Microsoft.Network/virtualNetworks@2021-03-01' existing = {
  name: 'doesnotexist'
}

output storageAccountName string = storageAccountName
output vnetResult object = existingVNet

検証エラーを修正する

Visual Studio Code でファイルを開きます。 Visual Studio Code で構文エラーが識別されていることがわかります。 最初のパラメーター宣言は、エラーを示す赤い波線でマークされます。

Bicep ファイルの構文エラーが赤い波線で強調表示された Visual Studio Code のスクリーンショット。

エラーでマークされた行は次のとおりです。

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
parameter storageAccountType string = 'Standard_LRS'

parameterの上にマウス ポインターを置くと、エラー メッセージが表示されます。

Bicep ファイルの構文エラーの上にマウス ポインターを置くと、Visual Studio Code に表示される詳細なエラー メッセージのスクリーンショット。

メッセージの状態: この宣言型は認識されません。パラメーター、変数、リソース、または出力宣言を指定します。 このファイルをデプロイしようとすると、デプロイ コマンドから同じエラー メッセージが表示されます。

パラメーター宣言のドキュメントを見ると、キーワードが実際にparamことがわかります。 その構文を変更すると、検証エラーは消えます。 @allowedデコレーターもエラーとしてマークされましたが、そのエラーはパラメーター宣言を変更することでも解決されます。 デコレーターの後にパラメーター宣言が必要なため、デコレーターはエラーとしてマークされました。 宣言が正しくない場合、この条件は当てはまらなかった。

その固定行は次の通りです。

param storageAccountType string = 'Standard_LRS'

プレフライト エラーを修正する

検証エラーを修正したので、次にファイルをデプロイします。 ただし、プレフライト エラーを表示するには、不適切なパラメーター値を指定します。

az group create --name troubleshootRG --location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.bicep \
  --parameters prefixName=longNamewith!!Charactersthatarenotallowed

Azure Resource Manager では、ストレージ アカウントの名前に許可されていない文字が含まれていると判断されます。 デプロイは試されません。

プレフライト検証に失敗したことを示すエラー メッセージが表示されます。 また、ストレージ アカウント名の長さは 3 ~ 24 文字で、数字と小文字のみを使用する必要があるというメッセージも表示されます。 指定したプレフィックスがその要件を満たしませんでした。 このエラー コードの詳細については、「 ストレージ アカウント名のエラーを解決する」を参照してください。

エラーはプレフライトでキャッチされたため、履歴にデプロイは存在しません。

Bicep ファイルのデプロイが表示されていない Azure portal のデプロイ履歴セクションのスクリーンショット。

ただし、失敗したデプロイはアクティビティ ログに存在します。

Bicep ファイルのデプロイのプレフライト検証エラーが表示されている Azure portal のアクティビティ ログのスクリーンショット。

ログ エントリの詳細を開いて、エラー メッセージを表示できます。

デプロイ エラーを修正する

ファイルをもう一度デプロイし、名前プレフィックス パラメーターに使用できる値を指定します。

az group create --name troubleshootRG --location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.bicep \
  --parameters prefixName=stg

デプロイは開始されますが、仮想ネットワークが見つからなかったというメッセージで失敗します。 通常は、リソースへの参照を変更することで、このエラーを修正します。 このクイック スタートでは、参照を削除します。 このエラー コードの詳細については、「 リソースが見つからないエラーを解決する」を参照してください。

ポータルの履歴にデプロイが表示されていることに気づいてください。

Bicep ファイルのデプロイに失敗したことを示す Azure portal のデプロイ履歴セクションのスクリーンショット。

デプロイ履歴のエントリを開いて、エラーの詳細を取得できます。 このエラーはアクティビティ ログにも存在します。

Bicep ファイルは、リソース グループに存在しない仮想ネットワークの参照を試みます。 既存の仮想ネットワークへの参照を削除して、エラーを修正します。

@description('SKU for the storage account')
@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
param storageAccountType string = 'Standard_LRS'

@description('Prefix for storage name.')
param prefixName string

var storageAccountName = '${prefixName}${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
  name: storageAccountName
  location: resourceGroup().location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

output storageAccountName string = storageAccountName

エラーなしでその Bicep ファイルをデプロイできます。

リソースをクリーンアップする

Azure リソースが必要なくなったときは、リソース グループを削除します。 Cloud Shell またはポータルからリソース グループを削除できます。

az group delete --name troubleshootRG

ポータルでリソース グループを削除するには、このステップに従います。

  1. Azure portal で、検索ボックスに 「リソース グループ 」と入力します。
  2. [ 名前でフィルター] フィールドに、リソース グループ名を入力します。
  3. リソース グループ名を選択します。
  4. [ リソース グループの削除] を選択します
  5. 削除を確定するには、リソース グループ名を入力し、[ 削除] を選択します。

次のステップ

このクイック スタートでは、Bicep ファイルのデプロイ エラーをトラブルシューティングする方法について説明しました。