확장 리소스 정의
확장 리소스는 항상 다른 Azure 리소스에 연결됩니다. 확장 리소스는 추가 기능을 사용하여 리소스의 동작을 확장합니다.
다음은 일반적인 확장 리소스의 예입니다.
속성 | 리소스 유형 |
---|---|
역할 할당 | Microsoft.Authorization/roleAssignments |
정책 할당 | Microsoft.Authorization/policyAssignments |
잠금 | Microsoft.Authorization/locks |
진단 설정 | Microsoft.Insights/diagnosticSettings |
Azure 리소스를 삭제하거나 수정하지 못하게 차단하는 데 사용되는 잠금을 예로 들어 알아보겠습니다. 잠금을 단독으로 배포할 수는 없습니다. 잠금은 항상 다른 리소스 위에 배포해야 합니다.
참고
이 단원의 명령은 개념을 설명하기 위해 표시된 것입니다. 명령을 아직 실행하지 마세요. 여기에서 학습하는 내용을 곧 연습할 예정입니다.
확장 리소스는 어떻게 정의할까요?
Bicep에서는 일반 리소스와 거의 동일한 방식으로 확장 리소스를 정의합니다. 그러나 scope
속성을 추가하여 Bicep 파일의 다른 곳에 정의된 다른 리소스에 리소스를 연결해야 한다고 Bicep에 알립니다. 리소스의 기호 이름을 사용하여 이러한 리소스를 참조합니다. 예를 들어, 이전에 만든 Azure Cosmos DB 계정의 정의는 다음과 같습니다.
resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2024-05-15' = {
name: cosmosDBAccountName
location: location
properties: {
// ...
}
}
다른 사람이 Azure Cosmos DB 계정을 삭제하지 못하도록 리소스 잠금을 추가하겠습니다.
resource lockResource 'Microsoft.Authorization/locks@2020-05-01' = {
scope: cosmosDBAccount
name: 'DontDelete'
properties: {
level: 'CanNotDelete'
notes: 'Prevents deletion of the toy data Cosmos DB account.'
}
}
이 예제에서는 Azure Cosmos DB 계정의 기호 이름과 함께 scope
속성을 사용합니다. 이 속성 집합 설정은 Bicep에게 리소스 잠금을 Azure Cosmos DB 계정에 배포하도록 지시하며, 이는 해당 리소스를 더 이상 삭제할 수 없음을 의미합니다.
확장 리소스 ID
확장 리소스의 ID는 다른 리소스와 약간 다릅니다. 부모 리소스 ID, 구분 기호 /providers/
및 확장 리소스 ID로 구성됩니다.
앞에서 언급한 Azure Cosmos DB 계정을 배포했고 계정 이름은 toyrnd
라고 가정해 보겠습니다. 잠금의 리소스 ID는 다음과 같습니다.
/subscriptions/A123b4567c-1234-1a2b-2b1a-1234abc12345/resourceGroups/ToyDevelopment/providers/Microsoft.DocumentDB/databaseAccounts/toyrnd/providers/Microsoft.Authorization/locks/DontDelete
시각적으로 표현하면 다음과 같습니다.
일반 리소스 ID로 시작하여 /providers/
및 다른 리소스 종류와 이름을 추가하는 리소스 ID가 표시되는 경우 현재 확장 리소스 ID를 보고 있는 것입니다.