다음을 통해 공유


Linter 규칙 - 모듈 위치 매개 변수에 명시적 값 사용

이 규칙은 리소스 위치에 사용되는 모듈 매개 변수를 찾고 실수로 기본값이 예기치 않은 값으로 설정될 수 있습니다.

Linter 규칙 코드

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

explicit-values-for-loc-params

솔루션

모듈을 사용할 때 기본값이 있는 위치 관련 매개 변수에는 명시적 값이 할당되어야 합니다. 위치 관련 매개 변수에는 resourceGroup().location 또는 deployment().location을 참조하는 기본값이 있는 매개 변수와 리소스의 위치 속성에서 참조하는 매개 변수가 포함됩니다.

기본적으로 리소스 그룹 또는 배포 위치로 설정되는 매개 변수는 bicep 파일이 기본 배포 템플릿으로 사용될 때 편리합니다. 그러나 이러한 기본값을 모듈에서 사용하는 경우 기본 템플릿의 리소스가 리소스 그룹과 동일한 지역에 있지 않은 경우 예기치 않은 동작이 발생할 수 있습니다.

예제

다음 예제는 이 테스트에 실패합니다. 모듈m1의 매개 변수 location 에는 명시적 값이 할당되지 않으므로 module1.bicep지정된 대로 기본값resourceGroup().location으로 지정됩니다. 그러나 리소스 그룹 위치를 사용하는 것은 의도한 동작이 아닐 수 있습니다. main.bicep의 다른 리소스가 리소스 그룹의 위치와 다른 위치에 만들어질 수 있기 때문입니다.

main.bicep:

param location string = 'eastus'

module m1 'module1.bicep' = {
 name: 'm1'
}

resource storageaccount 'Microsoft.Storage/storageAccounts@2024-03-01' = {
  name: 'storageaccount'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

module1.bicep:

param location string = resourceGroup().location

resource stg 'Microsoft.Storage/storageAccounts@2024-03-01' = {
  name: 'stg'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Premium_LRS'
  }
}

모듈의 location 속성 값을 명시적으로 전달하여 오류를 수정할 수 있습니다.

main.bicep:

param location string = 'eastus'

module m1 'module1.bicep' = {
  name: 'm1'
  params: {
   location: location // An explicit value will override the default value specified in module1.bicep
  }
}

resource storageaccount 'Microsoft.Storage/storageAccounts@2024-03-01' = {
  name: 'storageaccount'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

다음 단계

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