Linter 규칙 - 가상 단락

이 규칙은 런타임 값이 모듈에 매개 변수로 전달되는 경우를 감지하고, 이를 사용하여 리소스 ID(예: 매개 변수를 사용하여 모듈 내 하나 이상의 리소스의 이름, subscriptionId, resourceGroup, 조건, 범위 또는 apiVersion을 결정하는 경우)를 확인하고 잠재적인 가상 단락에 플래그를 지정합니다.

참고 항목

이 규칙은 기본적으로 꺼져 있습니다. bicepconfig.json의 수준을 변경하여 사용하도록 설정합니다.

Linter 규칙 코드

Bicep 구성 파일의 다음 값을 사용하여 규칙 설정을 사용자 지정합니다.

what-if-short-circuiting

솔루션

이 규칙은 모듈 내에서 리소스 ID를 확인하는 데 사용되는 런타임 값을 확인합니다. Bicep 코드로 인해 what-if 단락이 발생할 수 있는지 경고합니다. 아래 예제에서 appServiceOutputs 및 appServiceTests는 런타임 값을 매개 변수로 모듈에 전달하므로 가상 단락에 대해 플래그가 지정되며, 리소스 이름을 지정할 때 사용합니다.

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를 확인하는 데 사용되는 값에 배포 시간 상수를 사용합니다.

다음 단계

Linter에 관한 자세한 내용은 Bicep Linter 사용을 참조하세요.