@@ -114,6 +114,14 @@ param authClientId string?
114114@description ('Client secret for registered application in Entra for use with app authentication.' )
115115param authClientSecret string ?
116116
117+ @description ('Optional: Existing Log Analytics Workspace Resource ID' )
118+ param existingLogAnalyticsWorkspaceId string = ''
119+
120+ var useExistingLogAnalytics = !empty (existingLogAnalyticsWorkspaceId )
121+ var existingLawSubscription = useExistingLogAnalytics ? split (existingLogAnalyticsWorkspaceId , '/' )[2 ] : ''
122+ var existingLawResourceGroup = useExistingLogAnalytics ? split (existingLogAnalyticsWorkspaceId , '/' )[4 ] : ''
123+ var existingLawName = useExistingLogAnalytics ? split (existingLogAnalyticsWorkspaceId , '/' )[8 ] : ''
124+
117125var defaultTags = {
118126 'azd-env-name' : name
119127}
@@ -134,7 +142,12 @@ module appIdentity 'br/public:avm/res/managed-identity/user-assigned-identity:0.
134142 }
135143}
136144
137- module logAnalyticsWorkspace 'br/public:avm/res/operational-insights/workspace:0.11.0' = {
145+ resource existingLogAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' existing = if (useExistingLogAnalytics ) {
146+ name : existingLawName
147+ scope : resourceGroup (existingLawSubscription , existingLawResourceGroup )
148+ }
149+
150+ module logAnalyticsWorkspace 'br/public:avm/res/operational-insights/workspace:0.11.0' = if (!useExistingLogAnalytics ) {
138151 name : take ('${name }-log-analytics-deployment' , 64 )
139152 params : {
140153 name : toLower ('log-${name }' )
@@ -145,13 +158,15 @@ module logAnalyticsWorkspace 'br/public:avm/res/operational-insights/workspace:0
145158 }
146159}
147160
161+ var logAnalyticsWorkspaceResourceId = useExistingLogAnalytics ? existingLogAnalyticsWorkspace .id : logAnalyticsWorkspace .outputs .resourceId
162+
148163module applicationInsights 'br/public:avm/res/insights/component:0.6.0' = {
149164 name : take ('${name }-app-insights-deployment' , 64 )
150165 params : {
151166 name : toLower ('appi-${name }' )
152167 location : location
153168 tags : allTags
154- workspaceResourceId : logAnalyticsWorkspace . outputs . resourceId
169+ workspaceResourceId : logAnalyticsWorkspaceResourceId
155170 }
156171}
157172
@@ -160,7 +175,7 @@ module network 'modules/virtualNetwork.bicep' = if (networkIsolation) {
160175 params : {
161176 resourceToken : resourceToken
162177 allowedIpAddress : allowedIpAddress
163- logAnalyticsWorkspaceId : logAnalyticsWorkspace . outputs . resourceId
178+ logAnalyticsWorkspaceId : logAnalyticsWorkspaceResourceId
164179 location : location
165180 tags : allTags
166181 }
@@ -174,7 +189,7 @@ module keyvault 'modules/keyvault.bicep' = {
174189 networkIsolation : networkIsolation
175190 virtualNetworkResourceId : networkIsolation ? network .outputs .resourceId : ''
176191 virtualNetworkSubnetResourceId : networkIsolation ? network .outputs .defaultSubnetResourceId : ''
177- logAnalyticsWorkspaceResourceId : logAnalyticsWorkspace . outputs . resourceId
192+ logAnalyticsWorkspaceResourceId : logAnalyticsWorkspaceResourceId
178193 roleAssignments : concat (empty (userObjectId ) ? [] : [
179194 {
180195 principalId : userObjectId
@@ -206,7 +221,7 @@ module containerRegistry 'modules/containerRegistry.bicep' = if (acrEnabled) {
206221 networkIsolation : networkIsolation
207222 virtualNetworkResourceId : networkIsolation ? network .outputs .resourceId : ''
208223 virtualNetworkSubnetResourceId : networkIsolation ? network .outputs .defaultSubnetResourceId : ''
209- logAnalyticsWorkspaceResourceId : logAnalyticsWorkspace . outputs . resourceId
224+ logAnalyticsWorkspaceResourceId : logAnalyticsWorkspaceResourceId
210225 tags : allTags
211226 }
212227}
@@ -219,7 +234,7 @@ module storageAccount 'modules/storageAccount.bicep' = {
219234 networkIsolation : networkIsolation
220235 virtualNetworkResourceId : networkIsolation ? network .outputs .resourceId : ''
221236 virtualNetworkSubnetResourceId : networkIsolation ? network .outputs .defaultSubnetResourceId : ''
222- logAnalyticsWorkspaceResourceId : logAnalyticsWorkspace . outputs . resourceId
237+ logAnalyticsWorkspaceResourceId : logAnalyticsWorkspaceResourceId
223238 roleAssignments : concat (empty (userObjectId ) ? [] : [
224239 {
225240 principalId : userObjectId
@@ -254,7 +269,7 @@ module cognitiveServices 'modules/cognitive-services/main.bicep' = {
254269 virtualNetworkResourceId : networkIsolation ? network .outputs .resourceId : ''
255270 virtualNetworkSubnetResourceId : networkIsolation ? network .outputs .defaultSubnetResourceId : ''
256271 principalIds : deploySampleApp ? [appIdentity .outputs .principalId ] : []
257- logAnalyticsWorkspaceResourceId : logAnalyticsWorkspace . outputs . resourceId
272+ logAnalyticsWorkspaceResourceId : logAnalyticsWorkspaceResourceId
258273 aiModelDeployments : [
259274 for model in [aiEmbeddingModelDeployment , aiGPTModelDeployment ]: {
260275 name : empty (model .?name ) ? model .modelName : model .?name
@@ -303,7 +318,7 @@ module aiSearch 'modules/aisearch.bicep' = if (searchEnabled) {
303318 networkIsolation : networkIsolation
304319 virtualNetworkResourceId : networkIsolation ? network .outputs .resourceId : ''
305320 virtualNetworkSubnetResourceId : networkIsolation ? network .outputs .defaultSubnetResourceId : ''
306- logAnalyticsWorkspaceResourceId : logAnalyticsWorkspace . outputs . resourceId
321+ logAnalyticsWorkspaceResourceId : logAnalyticsWorkspaceResourceId
307322 roleAssignments : union (empty (userObjectId ) ? [] : [
308323 {
309324 principalId : userObjectId
@@ -354,9 +369,10 @@ module virtualMachine './modules/virtualMachine.bicep' = if (networkIsolation)
354369 enableAcceleratedNetworking : true
355370 enableMicrosoftEntraIdAuth : true
356371 userObjectId : userObjectId
357- workspaceId : logAnalyticsWorkspace . outputs . resourceId
372+ workspaceId : logAnalyticsWorkspaceResourceId
358373 location : location
359374 tags : allTags
375+ dcrLocation : useExistingLogAnalytics ? existingLogAnalyticsWorkspace .location : logAnalyticsWorkspace .outputs .location
360376 }
361377 dependsOn : networkIsolation ? [storageAccount ] : []
362378}
@@ -370,7 +386,7 @@ module apim 'modules/apim.bicep' = if (apiManagementEnabled) {
370386 publisherName : '${name } API Management'
371387 sku : 'Developer'
372388 networkIsolation : networkIsolation
373- logAnalyticsWorkspaceResourceId : logAnalyticsWorkspace . outputs . resourceId
389+ logAnalyticsWorkspaceResourceId : logAnalyticsWorkspaceResourceId
374390 virtualNetworkResourceId : networkIsolation ? network .outputs .resourceId : ''
375391 virtualNetworkSubnetResourceId : networkIsolation ? network .outputs .defaultSubnetResourceId : ''
376392 tags : allTags
@@ -385,7 +401,7 @@ module cosmosDb 'modules/cosmosDb.bicep' = if (cosmosDbEnabled) {
385401 networkIsolation : networkIsolation
386402 virtualNetworkResourceId : networkIsolation ? network .outputs .resourceId : ''
387403 virtualNetworkSubnetResourceId : networkIsolation ? network .outputs .defaultSubnetResourceId : ''
388- logAnalyticsWorkspaceResourceId : logAnalyticsWorkspace . outputs . resourceId
404+ logAnalyticsWorkspaceResourceId : logAnalyticsWorkspaceResourceId
389405 databases : cosmosDatabases
390406 sqlRoleAssignmentsPrincipalIds : deploySampleApp ? [appIdentity .outputs .principalId ] : []
391407 tags : allTags
@@ -415,7 +431,7 @@ module appService 'modules/appservice.bicep' = if (deploySampleApp) {
415431 userAssignedIdentityName : appIdentity .outputs .name
416432 appInsightsName : applicationInsights .outputs .name
417433 keyVaultName : keyvault .outputs .name
418- logAnalyticsWorkspaceResourceId : logAnalyticsWorkspace . outputs . resourceId
434+ logAnalyticsWorkspaceResourceId : logAnalyticsWorkspaceResourceId
419435 skuName : 'B3'
420436 skuCapacity : 1
421437 imagePath : 'sampleappaoaichatgpt.azurecr.io/sample-app-aoai-chatgpt'
@@ -475,7 +491,7 @@ output AZURE_VM_RESOURCE_ID string = networkIsolation ? virtualMachine.outputs.i
475491output AZURE_VM_USERNAME string = servicesUsername
476492output AZURE_APP_INSIGHTS_NAME string = applicationInsights .outputs .name
477493output AZURE_CONTAINER_REGISTRY_NAME string = acrEnabled ? containerRegistry .outputs .name : ''
478- output AZURE_LOG_ANALYTICS_WORKSPACE_NAME string = logAnalyticsWorkspace .outputs .name
494+ output AZURE_LOG_ANALYTICS_WORKSPACE_NAME string = useExistingLogAnalytics ? existingLogAnalyticsWorkspace . name : logAnalyticsWorkspace .outputs .name
479495output AZURE_STORAGE_ACCOUNT_NAME string = storageAccount .outputs .storageName
480496output AZURE_API_MANAGEMENT_NAME string = apiManagementEnabled ? apim .outputs .name : ''
481497output AZURE_VIRTUAL_NETWORK_NAME string = networkIsolation ? network .outputs .name : ''
0 commit comments