@@ -24,10 +24,19 @@ param resourceGroupName string = ''
2424param storageAccountName string = ''
2525param vNetName string = ''
2626param disableLocalAuth bool = true
27+ param dtsName string = ''
28+ param taskHubName string = ''
29+ param dtsLocation string = location
30+ param dtsSkuName string = 'Consumption'
31+ param dtsCapacity int = 1
32+ @description ('Id of the user identity to be used for testing and debugging. This is not required in production. Leave empty if not needed.' )
33+ param principalId string = deployer ().objectId
2734
2835var abbrs = loadJsonContent ('./abbreviations.json' )
2936var resourceToken = toLower (uniqueString (subscription ().id , environmentName , location ))
3037var tags = { 'azd-env-name' : environmentName }
38+ var dtsResourceName = !empty (dtsName ) ? dtsName : '${abbrs .durableTaskSchedulers }${resourceToken }'
39+ var taskHubResourceName = !empty (taskHubName ) ? taskHubName : '${abbrs .durableTaskHubs }${resourceToken }'
3140
3241// Organize resources in a resource group
3342resource rg 'Microsoft.Resources/resourceGroups@2021-04-01' = {
@@ -65,6 +74,8 @@ module processor './app/processor.bicep' = {
6574 appSettings : {
6675 }
6776 virtualNetworkSubnetId : serviceVirtualNetwork .outputs .appSubnetID
77+ dtsURL : dts .outputs .dts_URL
78+ taskHubName : dts .outputs .TASKHUB_NAME
6879 }
6980}
7081
@@ -191,6 +202,50 @@ module appInsightsRoleAssignmentApi './core/monitor/appinsights-access.bicep' =
191202 }
192203}
193204
205+ // Durable Task Scheduler
206+ module dts './app/dts.bicep' = {
207+ scope : rg
208+ name : 'dtsResource'
209+ params : {
210+ name : dtsResourceName
211+ taskhubname : taskHubResourceName
212+ location : dtsLocation
213+ tags : tags
214+ ipAllowlist : [
215+ '0.0.0.0/0'
216+ ]
217+ skuName : dtsSkuName
218+ skuCapacity : dtsCapacity
219+ }
220+ }
221+
222+ // Durable Task Data Contributor role ID
223+ var dtsRoleDefinitionId = '0ad04412-c4d5-4796-b79c-f76d14c8d402'
224+
225+ // Allow access from function app to DTS using user assigned managed identity
226+ module dtsRoleAssignment 'app/dts-Access.bicep' = {
227+ name : 'dtsRoleAssignment'
228+ scope : rg
229+ params : {
230+ roleDefinitionID : dtsRoleDefinitionId
231+ principalID : processorUserAssignedIdentity .outputs .identityPrincipalId
232+ principalType : 'ServicePrincipal'
233+ dtsName : dts .outputs .dts_NAME
234+ }
235+ }
236+
237+ // Allow the deployer identity to access the DTS dashboard
238+ module dtsDashboardRoleAssignment 'app/dts-Access.bicep' = {
239+ name : 'dtsDashboardRoleAssignment'
240+ scope : rg
241+ params : {
242+ roleDefinitionID : dtsRoleDefinitionId
243+ principalID : principalId
244+ principalType : 'User'
245+ dtsName : dts .outputs .dts_NAME
246+ }
247+ }
248+
194249// App outputs
195250output APPLICATIONINSIGHTS_CONNECTION_STRING string = monitoring .outputs .applicationInsightsConnectionString
196251output AZURE_LOCATION string = location
0 commit comments