다음을 통해 공유


Linter 규칙 - 매개 변수 기본값 외부에 위치 표현식 없음

이 규칙은 매개 변수 기본값 외부에서 사용된 resourceGroup().location 또는 deployment().location을 찾습니다.

Linter 규칙 코드

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

no-loc-expr-outside-params

솔루션

resourceGroup().locationdeployment().location은 매개 변수의 기본값으로만 사용해야 합니다.

템플릿 사용자는 리소스를 만들 수 있는 지역에 대한 액세스가 제한될 수 있습니다. resourceGroup().location 또는 deployment().location 식은 리소스 그룹 또는 배포가 사용자가 액세스할 수 없는 지역에서 만들어진 경우 사용자를 차단하여 템플릿을 사용하지 못하게 할 수 있습니다.

리소스의 위치를 설정하려면 템플릿에 location이라는 문자열 매개 변수가 있어야 한다는 것이 모범 사례입니다. 템플릿의 다른 곳에서 이러한 함수를 사용하는 대신 location 매개 변수를 resourceGroup().location 또는 deployment().location으로 기본 설정하면 템플릿 사용자가 편리할 때 기본값을 사용할 수 있지만 필요할 때 다른 위치를 지정할 수도 있습니다.

resource storageaccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  location: resourceGroup().location
}

기본값이 resourceGroup().locationlocation 속성을 만들고 이 새 매개 변수를 대신 사용하여 오류를 수정할 수 있습니다.

param location string = resourceGroup().location

resource storageaccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  location: location
}

다음 예는 locationresourceGroup().location을 사용하지만 매개 변수가 아니기 때문에 이 테스트에 실패합니다.

  var location = resourceGroup().location

변수를 매개 변수로 변환하여 오류를 수정할 수 있습니다.

  param location string  = resourceGroup().location

Azure PowerShell을 사용하여 구독, 관리 그룹 또는 테넌트에 배포하는 경우 location 이외의 매개 변수 이름을 사용해야 합니다. New-AzDeployment, New-AzManagementGroupDeploymentNew-AzTenantDeployment 명령에는 location이라는 매개 변수가 있습니다. 이 명령 매개 변수는 Bicep 파일의 매개 변수와 충돌합니다. rgLocation과 같은 이름을 사용하여 이 충돌을 방지할 수 있습니다.

New-AzResourceGroupDeployment에는 location이라는 이름이 지정된 매개 변수가 없으므로 리소스 그룹에 배포할 때 매개 변수 이름에 location을 사용할 수 있습니다.

다음 단계

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