11// Creates Azure dependent resources for Azure AI studio
22param solutionName string
33param solutionLocation string
4- param keyVaultName string
4+ param keyVaultName string = ''
55param cuLocation string
66param deploymentType string
77param gptModelName string
@@ -10,7 +10,7 @@ param azureOpenAIApiVersion string
1010param gptDeploymentCapacity int
1111param embeddingModel string
1212param embeddingDeploymentCapacity int
13- param managedIdentityObjectId string
13+ param managedIdentityObjectId string = ''
1414param existingLogAnalyticsWorkspaceId string = ''
1515param azureExistingAIProjectResourceId string = ''
1616
@@ -116,6 +116,15 @@ resource aiServices 'Microsoft.CognitiveServices/accounts@2025-04-01-preview' =
116116 }
117117}
118118
119+ module existing_aiServicesModule 'existing_foundry_project.bicep' = if (!empty (azureExistingAIProjectResourceId )) {
120+ name : 'existing_foundry_project'
121+ scope : resourceGroup (existingAIServiceSubscription , existingAIServiceResourceGroup )
122+ params : {
123+ aiServicesName : existingAIServicesName
124+ aiProjectName : existingAIProjectName
125+ }
126+ }
127+
119128resource aiServices_CU 'Microsoft.CognitiveServices/accounts@2025-04-01-preview' = {
120129 name : aiServicesName_cu
121130 location : location_cu
@@ -225,6 +234,7 @@ resource aiUser 'Microsoft.Authorization/roleDefinitions@2022-04-01' existing =
225234 name : '53ca6127-db72-4b80-b1b0-d745d6d5456d'
226235}
227236
237+
228238resource assignFoundryRoleToMI 'Microsoft.Authorization/roleAssignments@2022-04-01' = if (empty (azureExistingAIProjectResourceId )) {
229239 name : guid (resourceGroup ().id , aiServices .id , aiUser .id )
230240 scope : aiServices
@@ -234,7 +244,6 @@ resource assignFoundryRoleToMI 'Microsoft.Authorization/roleAssignments@2022-04-
234244 principalType : 'ServicePrincipal'
235245 }
236246}
237-
238247module assignFoundryRoleToMIExisting 'deploy_foundry_role_assignment.bicep' = if (!empty (azureExistingAIProjectResourceId )) {
239248 name : 'assignFoundryRoleToMI'
240249 scope : resourceGroup (existingAIServiceSubscription , existingAIServiceResourceGroup )
@@ -244,6 +253,15 @@ module assignFoundryRoleToMIExisting 'deploy_foundry_role_assignment.bicep' = if
244253 aiServicesName : !empty (azureExistingAIProjectResourceId ) ? existingAIServicesName : aiServicesName
245254 aiProjectName : !empty (azureExistingAIProjectResourceId ) ? existingAIProjectName : aiProjectName
246255 principalId : managedIdentityObjectId
256+ aiLocation : !empty (azureExistingAIProjectResourceId ) ? existing_aiServicesModule .outputs .location : solutionLocation
257+ aiKind : !empty (azureExistingAIProjectResourceId ) ? existing_aiServicesModule .outputs .kind : 'AIServices'
258+ aiSkuName : !empty (azureExistingAIProjectResourceId ) ? existing_aiServicesModule .outputs .skuName : 'S0'
259+ customSubDomainName : !empty (azureExistingAIProjectResourceId ) ? existing_aiServicesModule .outputs .customSubDomainName : aiServicesName
260+ publicNetworkAccess : !empty (azureExistingAIProjectResourceId ) ? existing_aiServicesModule .outputs .publicNetworkAccess : 'Enabled'
261+ enableSystemAssignedIdentity : true
262+ defaultNetworkAction : !empty (azureExistingAIProjectResourceId ) ? existing_aiServicesModule .outputs .defaultNetworkAction : 'Allow'
263+ vnetRules : !empty (azureExistingAIProjectResourceId ) ? existing_aiServicesModule .outputs .vnetRules : []
264+ ipRules : !empty (azureExistingAIProjectResourceId ) ? existing_aiServicesModule .outputs .ipRules : []
247265 }
248266}
249267
@@ -270,6 +288,15 @@ module assignOpenAIRoleToAISearch 'deploy_foundry_role_assignment.bicep' = {
270288 aiServicesName : !empty (azureExistingAIProjectResourceId ) ? existingAIServicesName : aiServicesName
271289 aiProjectName : !empty (azureExistingAIProjectResourceId ) ? existingAIProjectName : aiProjectName
272290 principalId : aiSearch .identity .principalId
291+ aiLocation : !empty (azureExistingAIProjectResourceId ) ? existing_aiServicesModule .outputs .location : solutionLocation
292+ aiKind : !empty (azureExistingAIProjectResourceId ) ? existing_aiServicesModule .outputs .kind : 'AIServices'
293+ aiSkuName : !empty (azureExistingAIProjectResourceId ) ? existing_aiServicesModule .outputs .skuName : 'S0'
294+ customSubDomainName : !empty (azureExistingAIProjectResourceId ) ? existing_aiServicesModule .outputs .customSubDomainName : aiServicesName
295+ publicNetworkAccess : !empty (azureExistingAIProjectResourceId ) ? existing_aiServicesModule .outputs .publicNetworkAccess : 'Enabled'
296+ enableSystemAssignedIdentity : true
297+ defaultNetworkAction : !empty (azureExistingAIProjectResourceId ) ? existing_aiServicesModule .outputs .defaultNetworkAction : 'Allow'
298+ vnetRules : !empty (azureExistingAIProjectResourceId ) ? existing_aiServicesModule .outputs .vnetRules : []
299+ ipRules : !empty (azureExistingAIProjectResourceId ) ? existing_aiServicesModule .outputs .ipRules : []
273300 }
274301}
275302
@@ -470,7 +497,6 @@ resource azureLocatioEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview
470497 value : solutionLocation
471498 }
472499}
473-
474500output keyvaultName string = keyvaultName
475501output keyvaultId string = keyVault .id
476502output aiServicesTarget string = !empty (existingOpenAIEndpoint ) ? existingOpenAIEndpoint : aiServices .properties .endpoints ['OpenAI Language Model Instance API' ] //aiServices_m.properties.endpoint
0 commit comments