リンター ルール - what-if ショートサーキット
このルールは、ランタイム値がモジュールにパラメーターとして渡されるタイミングを検出し、それを使用してリソース ID (パラメーターを使用してモジュール内の 1 つ以上のリソースの名前、subscriptionId、resourceGroup、条件、スコープ、または apiVersion を決定する場合など) を検出し、what-if ショートサーキットの可能性にフラグを設定します。
Note
このルールは既定ではオフになっています。有効にするには、bicepconfig.json でレベルを変更します。
リンター ルールのコード
ルール設定をカスタマイズするには、Bicep 構成ファイルで次の値を使用します。
what-if-short-circuiting
解決策
この規則では、モジュール内のリソース ID を決定するために使用されるランタイム値がチェックされます。 Bicep コードが what-if ショートサーキットを引き起こす可能性がある場合は、アラートが表示されます。 次の例では、 appServiceOutputs と appServiceTests は、ランタイム値をパラメーターとしてモジュールに渡し、リソースに名前を付けるときに使用するため、what-if ショートサーキットのフラグが設定されます。
main.bicep
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: 'storageAccountName'
location: 'eastus'
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
}
module appServiceModule 'modules/appService.bicep' = {
name: 'appService2'
params: {
appServiceName: 'test'
}
}
module appServiceOutputs 'modules/appService.bicep' = {
name: 'appService3'
params: {
appServiceName: appServiceModule.outputs.outputName
}
}
module appServiceTest 'modules/appService.bicep' = {
name:'test3'
params: {
appServiceName: storageAccount.properties.accessTier
}
}
modules/appService.bicep
param appServiceName string
resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
name: appServiceName
location: 'eastus'
properties: {
httpsOnly: true
}
}
output outputName string = 'outputName'
この問題を回避するには、リソース ID の決定に使用される値にデプロイ時定数を使用します。
次のステップ
リンターの詳細については、「Bicep リンターの使用方法」を参照してください。