@@ -34,6 +34,7 @@ param logAnalyticsWorkspaceConfiguration logAnalyticsWorkspaceConfigurationType
34
34
sku : 'PerGB2018'
35
35
tags : tags
36
36
dataRetentionInDays : 365
37
+ existingWorkspaceResourceId : ''
37
38
}
38
39
39
40
@description ('Optional. The configuration to apply for the Multi-Agent Custom Automation Engine Application Insights resource.' )
@@ -255,7 +256,10 @@ resource avmTelemetry 'Microsoft.Resources/deployments@2024-03-01' = if (enableT
255
256
// Log Analytics configuration defaults
256
257
var logAnalyticsWorkspaceEnabled = logAnalyticsWorkspaceConfiguration .?enabled ?? true
257
258
var logAnalyticsWorkspaceResourceName = logAnalyticsWorkspaceConfiguration .?name ?? 'log-${solutionPrefix }'
258
- module logAnalyticsWorkspace 'br/public:avm/res/operational-insights/workspace:0.11.2' = if (logAnalyticsWorkspaceEnabled ) {
259
+ var existingWorkspaceResourceId = logAnalyticsWorkspaceConfiguration .?existingWorkspaceResourceId ?? ''
260
+ var useExistingWorkspace = existingWorkspaceResourceId != ''
261
+
262
+ module logAnalyticsWorkspace 'br/public:avm/res/operational-insights/workspace:0.11.2' = if (logAnalyticsWorkspaceEnabled && !useExistingWorkspace ) {
259
263
name : take ('avm.res.operational-insights.workspace.${logAnalyticsWorkspaceResourceName }' , 64 )
260
264
params : {
261
265
name : logAnalyticsWorkspaceResourceName
@@ -268,6 +272,8 @@ module logAnalyticsWorkspace 'br/public:avm/res/operational-insights/workspace:0
268
272
}
269
273
}
270
274
275
+ var logAnalyticsWorkspaceId = useExistingWorkspace ? existingWorkspaceResourceId : logAnalyticsWorkspace .outputs .resourceId
276
+
271
277
// ========== Application Insights ========== //
272
278
// WAF best practices for Application Insights: https://learn.microsoft.com/en-us/azure/well-architected/service-guides/application-insights
273
279
// Application Insights configuration defaults
@@ -277,12 +283,12 @@ module applicationInsights 'br/public:avm/res/insights/component:0.6.0' = if (ap
277
283
name : take ('avm.res.insights.component.${applicationInsightsResourceName }' , 64 )
278
284
params : {
279
285
name : applicationInsightsResourceName
280
- workspaceResourceId : logAnalyticsWorkspace . outputs . resourceId
286
+ workspaceResourceId : logAnalyticsWorkspaceId
281
287
location : applicationInsightsConfiguration .?location ?? solutionLocation
282
288
enableTelemetry : enableTelemetry
283
289
tags : applicationInsightsConfiguration .?tags ?? tags
284
290
retentionInDays : applicationInsightsConfiguration .?retentionInDays ?? 365
285
- diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspace . outputs . resourceId }]
291
+ diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspaceId }]
286
292
kind : 'web'
287
293
disableIpMasking : false
288
294
flowType : 'Bluefield'
@@ -315,7 +321,7 @@ module networkSecurityGroupBackend 'br/public:avm/res/network/network-security-g
315
321
location : networkSecurityGroupBackendConfiguration .?location ?? solutionLocation
316
322
tags : networkSecurityGroupBackendConfiguration .?tags ?? tags
317
323
enableTelemetry : enableTelemetry
318
- diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspace . outputs . resourceId }]
324
+ diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspaceId }]
319
325
securityRules : networkSecurityGroupBackendConfiguration .?securityRules ?? [
320
326
// {
321
327
// name: 'DenySshRdpOutbound' //Azure Bastion
@@ -346,7 +352,7 @@ module networkSecurityGroupContainers 'br/public:avm/res/network/network-securit
346
352
location : networkSecurityGroupContainersConfiguration .?location ?? solutionLocation
347
353
tags : networkSecurityGroupContainersConfiguration .?tags ?? tags
348
354
enableTelemetry : enableTelemetry
349
- diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspace . outputs . resourceId }]
355
+ diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspaceId }]
350
356
securityRules : networkSecurityGroupContainersConfiguration .?securityRules ?? [
351
357
// {
352
358
// name: 'DenySshRdpOutbound' //Azure Bastion
@@ -377,7 +383,7 @@ module networkSecurityGroupBastion 'br/public:avm/res/network/network-security-g
377
383
location : networkSecurityGroupBastionConfiguration .?location ?? solutionLocation
378
384
tags : networkSecurityGroupBastionConfiguration .?tags ?? tags
379
385
enableTelemetry : enableTelemetry
380
- diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspace . outputs . resourceId }]
386
+ diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspaceId }]
381
387
securityRules : networkSecurityGroupBastionConfiguration .?securityRules ?? [
382
388
{
383
389
name : 'AllowHttpsInBound'
@@ -534,7 +540,7 @@ module networkSecurityGroupAdministration 'br/public:avm/res/network/network-sec
534
540
location : networkSecurityGroupAdministrationConfiguration .?location ?? solutionLocation
535
541
tags : networkSecurityGroupAdministrationConfiguration .?tags ?? tags
536
542
enableTelemetry : enableTelemetry
537
- diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspace . outputs . resourceId }]
543
+ diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspaceId }]
538
544
securityRules : networkSecurityGroupAdministrationConfiguration .?securityRules ?? [
539
545
// {
540
546
// name: 'DenySshRdpOutbound' //Azure Bastion
@@ -651,12 +657,12 @@ module virtualMachine 'br/public:avm/res/compute/virtual-machine:0.13.0' = if (v
651
657
name : 'nic-${virtualMachineResourceName }'
652
658
//networkSecurityGroupResourceId: virtualMachineConfiguration.?nicConfigurationConfiguration.networkSecurityGroupResourceId
653
659
//nicSuffix: 'nic-${virtualMachineResourceName}'
654
- diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspace . outputs . resourceId }]
660
+ diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspaceId }]
655
661
ipConfigurations : [
656
662
{
657
663
name : '${virtualMachineResourceName }-nic01-ipconfig01'
658
664
subnetResourceId : virtualMachineConfiguration .?subnetResourceId ?? virtualNetwork .outputs .subnetResourceIds [1 ]
659
- diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspace . outputs . resourceId }]
665
+ diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspaceId }]
660
666
}
661
667
]
662
668
}
@@ -730,7 +736,7 @@ var aiFoundryAiServicesModelDeployment = {
730
736
sku : {
731
737
name : 'GlobalStandard'
732
738
//Curently the capacity is set to 140 for opinanal performance.
733
- capacity : aiFoundryAiServicesConfiguration .?modelCapcity ?? 140
739
+ capacity : aiFoundryAiServicesConfiguration .?modelCapacity ?? 140
734
740
}
735
741
raiPolicyName : 'Microsoft.Default'
736
742
}
@@ -742,7 +748,7 @@ module aiFoundryAiServices 'br/public:avm/res/cognitive-services/account:0.10.2'
742
748
tags : aiFoundryAiServicesConfiguration .?tags ?? tags
743
749
location : aiFoundryAiServicesConfiguration .?location ?? azureOpenAILocation
744
750
enableTelemetry : enableTelemetry
745
- diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspace . outputs . resourceId }]
751
+ diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspaceId }]
746
752
sku : aiFoundryAiServicesConfiguration .?sku ?? 'S0'
747
753
kind : 'AIServices'
748
754
disableLocalAuth : false //Should be set to true for WAF aligned configuration
@@ -841,7 +847,7 @@ module aiFoundryStorageAccount 'br/public:avm/res/storage/storage-account:0.18.2
841
847
location : aiFoundryStorageAccountConfiguration .?location ?? azureOpenAILocation
842
848
tags : aiFoundryStorageAccountConfiguration .?tags ?? tags
843
849
enableTelemetry : enableTelemetry
844
- diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspace . outputs . resourceId }]
850
+ diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspaceId }]
845
851
skuName : aiFoundryStorageAccountConfiguration .?sku ?? 'Standard_ZRS'
846
852
allowSharedKeyAccess : false
847
853
networkAcls : {
@@ -852,7 +858,7 @@ module aiFoundryStorageAccount 'br/public:avm/res/storage/storage-account:0.18.2
852
858
deleteRetentionPolicyEnabled : false
853
859
containerDeleteRetentionPolicyDays : 7
854
860
containerDeleteRetentionPolicyEnabled : false
855
- diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspace . outputs . resourceId }]
861
+ diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspaceId }]
856
862
}
857
863
publicNetworkAccess : virtualNetworkEnabled ? 'Disabled' : 'Enabled'
858
864
allowBlobPublicAccess : virtualNetworkEnabled ? false : true
@@ -912,7 +918,7 @@ module aiFoundryAiHub 'modules/ai-hub.bicep' = if (aiFoundryAiHubEnabled) {
912
918
aiFoundryAiServicesName : aiFoundryAiServices .outputs .name
913
919
applicationInsightsResourceId : applicationInsights .outputs .resourceId
914
920
enableTelemetry : enableTelemetry
915
- logAnalyticsWorkspaceResourceId : logAnalyticsWorkspace . outputs . resourceId
921
+ logAnalyticsWorkspaceResourceId : logAnalyticsWorkspaceId
916
922
storageAccountResourceId : aiFoundryStorageAccount .outputs .resourceId
917
923
virtualNetworkEnabled : virtualNetworkEnabled
918
924
privateEndpoints : virtualNetworkEnabled
@@ -948,7 +954,7 @@ module aiFoundryAiProject 'br/public:avm/res/machine-learning-services/workspace
948
954
location : aiFoundryAiProjectConfiguration .?location ?? azureOpenAILocation
949
955
tags : aiFoundryAiProjectConfiguration .?tags ?? tags
950
956
enableTelemetry : enableTelemetry
951
- diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspace . outputs . resourceId }]
957
+ diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspaceId }]
952
958
sku : aiFoundryAiProjectConfiguration .?sku ?? 'Basic'
953
959
kind : 'Project'
954
960
hubResourceId : aiFoundryAiHub .outputs .resourceId
@@ -991,7 +997,7 @@ module cosmosDb 'br/public:avm/res/document-db/database-account:0.12.0' = if (co
991
997
location : cosmosDbAccountConfiguration .?location ?? solutionLocation
992
998
tags : cosmosDbAccountConfiguration .?tags ?? tags
993
999
enableTelemetry : enableTelemetry
994
- diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspace . outputs . resourceId }]
1000
+ diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspaceId }]
995
1001
databaseAccountOfferType : 'Standard'
996
1002
enableFreeTier : false
997
1003
networkRestrictions : {
@@ -1065,7 +1071,7 @@ module containerAppEnvironment 'modules/container-app-environment.bicep' = if (c
1065
1071
name : containerAppEnvironmentResourceName
1066
1072
tags : containerAppEnvironmentConfiguration .?tags ?? tags
1067
1073
location : containerAppEnvironmentConfiguration .?location ?? solutionLocation
1068
- logAnalyticsResourceName : logAnalyticsWorkspace . outputs . name
1074
+ logAnalyticsResourceId : logAnalyticsWorkspaceId
1069
1075
publicNetworkAccess : 'Enabled'
1070
1076
zoneRedundant : virtualNetworkEnabled ? true : false
1071
1077
applicationInsightsConnectionString : applicationInsights .outputs .connectionString
@@ -1210,7 +1216,7 @@ module webServerFarm 'br/public:avm/res/web/serverfarm:0.4.1' = if (webServerFar
1210
1216
skuName : webServerFarmConfiguration .?skuName ?? 'P1v3'
1211
1217
skuCapacity : webServerFarmConfiguration .?skuCapacity ?? 3
1212
1218
reserved : true
1213
- diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspace . outputs . resourceId }]
1219
+ diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspaceId }]
1214
1220
kind : 'linux'
1215
1221
zoneRedundant : false //TODO: make it zone redundant for waf aligned
1216
1222
}
@@ -1231,7 +1237,7 @@ module webSite 'br/public:avm/res/web/site:0.15.1' = if (webSiteEnabled) {
1231
1237
enableTelemetry : enableTelemetry
1232
1238
serverFarmResourceId : webSiteConfiguration .?environmentResourceId ?? webServerFarm .?outputs .resourceId
1233
1239
appInsightResourceId : applicationInsights .outputs .resourceId
1234
- diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspace . outputs . resourceId }]
1240
+ diagnosticSettings : [{ workspaceResourceId : logAnalyticsWorkspaceId }]
1235
1241
publicNetworkAccess : 'Enabled' //TODO: use Azure Front Door WAF or Application Gateway WAF instead
1236
1242
siteConfig : {
1237
1243
linuxFxVersion : 'DOCKER|${webSiteConfiguration .?containerImageRegistryDomain ?? 'biabcontainerreg.azurecr.io' }/${webSiteConfiguration .?containerImageName ?? 'macaefrontend' }:${webSiteConfiguration .?containerImageTag ?? 'latest' }'
@@ -1292,6 +1298,9 @@ type logAnalyticsWorkspaceConfigurationType = {
1292
1298
@description ('Optional. The number of days to retain the data in the Log Analytics Workspace. If empty, it will be set to 365 days.' )
1293
1299
@maxValue (730 )
1294
1300
dataRetentionInDays : int ?
1301
+
1302
+ @description ('Optional: Existing Log Analytics Workspace Resource ID' )
1303
+ existingWorkspaceResourceId : string ?
1295
1304
}
1296
1305
1297
1306
@export ()
0 commit comments