diff --git a/.github/linters/.arm-ttk.psd1 b/.github/linters/.arm-ttk.psd1 index 2a702ec..c2388e1 100644 --- a/.github/linters/.arm-ttk.psd1 +++ b/.github/linters/.arm-ttk.psd1 @@ -4,11 +4,13 @@ @{ # Test = @( ) Skip = @( - 'Template Should Not Contain Blanks', - 'DeploymentTemplate Must Not Contain Hardcoded Uri', - 'DependsOn Best Practices', - 'Outputs Must Not Contain Secrets', - 'IDs Should Be Derived From ResourceIDs', + 'Template Should Not Contain Blanks' + 'DeploymentTemplate Must Not Contain Hardcoded Uri' + 'DependsOn Best Practices' + 'Outputs Must Not Contain Secrets' + 'IDs Should Be Derived From ResourceIDs' 'apiVersions Should Be Recent' + 'Parameters Must Be Referenced' + 'Variables Must Be Referenced' ) } diff --git a/docs/DataManagementAnalytics-Prerequisites.md b/docs/DataManagementAnalytics-Prerequisites.md index 06ffef3..f3e6578 100644 --- a/docs/DataManagementAnalytics-Prerequisites.md +++ b/docs/DataManagementAnalytics-Prerequisites.md @@ -48,25 +48,33 @@ To help you more quickly understand the structure of the repository, here is an ## Supported Regions -For now, we are recommending to select one of the regions mentioned below. The list of regions is limited for now due to the fact that not all services and features are available in all regions. This is mostly related to the fact that we are recommending to leverage at least the zone-redundant storage replication option for all your central Data Lakes in the Data Landing Zones. Since zone-redundant storage is not available in all regions, we are limiting the regions in the Deploy to Azure experience. If you are planning to deploy the Data Management Zone and Data Landing Zone to a region that is not listed below, then please change the setting in the corresponding bicep files in this repository. Officially supported regions are: +For now, we are recommending to select one of the regions mentioned below. The list of regions is limited for now due to the fact that not all services and features are available in all regions. This is mostly related to the fact that we are recommending to leverage at least the zone-redundant storage replication option for all your central Data Lakes in the Data Landing Zones. Since zone-redundant storage is not available in all regions, we are limiting the regions in the Deploy to Azure experience. If you are planning to deploy the Data Management Zone and Data Landing Zone to a region that is not listed below, then please change the setting in the corresponding bicep files in this repository. Deployment has been tested in the following regions: - (Africa) South Africa North - (Asia Pacific) Southeast Asia - (Asia Pacific) Australia East +- (Asia Pacific) Central India - (Asia Pacific) Japan East +- (Asia Pacific) Southeast Asia +- (Asia Pacific) South India - (Canada) Canada Central - (Europe) North Europe - (Europe) West Europe - (Europe) France Central - (Europe) Germany West Central +- (Europe) North Europe - (Europe) UK South +- (Europe) West Europe - (South America) Brazil South - (US) Central US - (US) East US - (US) East US 2 - (US) South Central US +- (US) West Central US - (US) West US 2 +**Please open a pull request if you want to deploy the artifacts into a region that is not listed above.** + ## Prerequisites > **Note:** Please make sure you have successfully deployed a [Data Management Landing Zone](https://github.com/Azure/data-management-zone) and a [Data Landing Zone](https://github.com/Azure/data-landing-zone) beforehand. Also, this template requires subnets as specified in the prerequisites. The Data Landing Zone already creates a few subnets, which can be used for this Data Product. diff --git a/docs/reference/portal.dataProduct.json b/docs/reference/portal.dataProduct.json index 1e85e16..48a2d14 100644 --- a/docs/reference/portal.dataProduct.json +++ b/docs/reference/portal.dataProduct.json @@ -136,7 +136,7 @@ "filterPlaceholder": "Filter items ...", "multiLine": true, "constraints": { - "allowedValues": "[map(filter(steps('basics').deploymentDetails.locationsApi.value,(item) => contains(split('southafricanorth,southeastasia,japaneast,canadacentral,northeurope,westeurope,francecentral,germanywestcentral,uksouth,centralus,eastus,eastus2,southcentralus,westus2', ','), item.name)),(item) => parse(concat('{\"label\":\"', item.regionalDisplayName, '\",\"value\":\"', item.name, '\"}')))]", + "allowedValues": "[map(filter(steps('basics').deploymentDetails.locationsApi.value,(item) => contains(split('southafricanorth,australiaeast,centralindia,japaneast,southeastasia,southindia,canadacentral,francecentral,germanywestcentral,northeurope,uksouth,westeurope,brazilsouth,centralus,eastus,eastus2,southcentralus,westcentralus,westus2', ','), item.name)),(item) => parse(concat('{\"label\":\"', item.regionalDisplayName, '\",\"value\":\"', item.name, '\"}')))]", "required": true } } diff --git a/infra/main.json b/infra/main.json index 9d83be4..0de4b2c 100644 --- a/infra/main.json +++ b/infra/main.json @@ -4,8 +4,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "3274734219816902579" + "version": "0.4.1124.51302", + "templateHash": "8152636657952711514" } }, "parameters": { @@ -165,7 +165,6 @@ } } }, - "functions": [], "variables": { "name": "[toLower(format('{0}-{1}', parameters('prefix'), parameters('environment')))]", "tagsDefault": { @@ -194,7 +193,7 @@ "resources": [ { "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", + "apiVersion": "2020-10-01", "name": "keyVault001", "properties": { "expressionEvaluationOptions": { @@ -224,8 +223,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "6717429930577625102" + "version": "0.4.1124.51302", + "templateHash": "12660131753967436973" } }, "parameters": { @@ -246,7 +245,6 @@ "defaultValue": "" } }, - "functions": [], "variables": { "keyVaultPrivateEndpointName": "[format('{0}-private-endpoint', parameters('keyvaultName'))]" }, @@ -339,7 +337,7 @@ }, { "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", + "apiVersion": "2020-10-01", "name": "synapse001", "properties": { "expressionEvaluationOptions": { @@ -399,8 +397,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "3729296254687081623" + "version": "0.4.1124.51302", + "templateHash": "721877921391071084" } }, "parameters": { @@ -459,7 +457,6 @@ "defaultValue": false } }, - "functions": [], "variables": { "synapseDefaultStorageAccountFileSystemName": "[if(greaterOrEquals(length(split(parameters('synapseDefaultStorageAccountFileSystemId'), '/')), 13), last(split(parameters('synapseDefaultStorageAccountFileSystemId'), '/')), 'incorrectSegmentLength')]", "synapseDefaultStorageAccountName": "[if(greaterOrEquals(length(split(parameters('synapseDefaultStorageAccountFileSystemId'), '/')), 13), split(parameters('synapseDefaultStorageAccountFileSystemId'), '/')[8], 'incorrectSegmentLength')]", @@ -760,7 +757,7 @@ { "condition": "[parameters('enableRoleAssignments')]", "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", + "apiVersion": "2020-10-01", "name": "synapse001RoleAssignmentStorage", "subscriptionId": "[variables('synapseDefaultStorageAccountSubscriptionId')]", "resourceGroup": "[variables('synapseDefaultStorageAccountResourceGroupName')]", @@ -774,7 +771,7 @@ "value": "[parameters('synapseDefaultStorageAccountFileSystemId')]" }, "synapseId": { - "value": "[reference(resourceId('Microsoft.Resources/deployments', 'synapse001'), '2020-06-01').outputs.synapseId.value]" + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'synapse001'), '2020-10-01').outputs.synapseId.value]" } }, "template": { @@ -783,8 +780,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "7805977499282852672" + "version": "0.4.1124.51302", + "templateHash": "17584063900477479467" } }, "parameters": { @@ -795,7 +792,6 @@ "type": "string" } }, - "functions": [], "variables": { "storageAccountFileSystemName": "[if(greaterOrEquals(length(split(parameters('storageAccountFileSystemId'), '/')), 13), last(split(parameters('storageAccountFileSystemId'), '/')), 'incorrectSegmentLength')]", "storageAccountName": "[if(greaterOrEquals(length(split(parameters('storageAccountFileSystemId'), '/')), 13), split(parameters('storageAccountFileSystemId'), '/')[8], 'incorrectSegmentLength')]", @@ -824,7 +820,7 @@ { "condition": "[parameters('enableCosmos')]", "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", + "apiVersion": "2020-10-01", "name": "cosmos001", "properties": { "expressionEvaluationOptions": { @@ -854,8 +850,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "16511519182590012378" + "version": "0.4.1124.51302", + "templateHash": "16996002725669682873" } }, "parameters": { @@ -876,7 +872,6 @@ "defaultValue": "" } }, - "functions": [], "variables": { "cosmosdbPrivateEndpointName": "[format('{0}-private-endpoint', parameters('cosmosdbName'))]" }, @@ -978,7 +973,7 @@ { "condition": "[parameters('enableSqlServer')]", "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", + "apiVersion": "2020-10-01", "name": "sql001", "properties": { "expressionEvaluationOptions": { @@ -1020,8 +1015,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "13767433193285895410" + "version": "0.4.1124.51302", + "templateHash": "11874715996889691059" } }, "parameters": { @@ -1057,7 +1052,6 @@ "defaultValue": "" } }, - "functions": [], "variables": { "sqlserverPrivateEndpointName": "[format('{0}-private-endpoint', parameters('sqlserverName'))]" }, @@ -1182,7 +1176,7 @@ }, { "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", + "apiVersion": "2020-10-01", "name": "iothub001", "properties": { "expressionEvaluationOptions": { @@ -1221,8 +1215,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "4192373109637241853" + "version": "0.4.1124.51302", + "templateHash": "475421815734143439" } }, "parameters": { @@ -1257,7 +1251,6 @@ "defaultValue": "" } }, - "functions": [], "variables": { "iothubPrivateEndpointName": "[format('{0}-private-endpoint', parameters('iothubName'))]" }, @@ -1390,7 +1383,7 @@ }, { "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", + "apiVersion": "2020-10-01", "name": "eventhubNamespace001", "properties": { "expressionEvaluationOptions": { @@ -1426,8 +1419,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "16911628907097731293" + "version": "0.4.1124.51302", + "templateHash": "8620290496367236972" } }, "parameters": { @@ -1458,7 +1451,6 @@ "defaultValue": "" } }, - "functions": [], "variables": { "eventhubNamespacePrivateEndpointName": "[format('{0}-private-endpoint', parameters('eventhubnamespaceName'))]" }, @@ -1560,7 +1552,7 @@ { "condition": "[parameters('enableStreamAnalytics')]", "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", + "apiVersion": "2020-10-01", "name": "streamanalytics001", "properties": { "expressionEvaluationOptions": { @@ -1575,10 +1567,10 @@ "value": "[variables('tagsJoined')]" }, "eventhubNamespaceId": { - "value": "[reference(resourceId('Microsoft.Resources/deployments', 'eventhubNamespace001'), '2020-06-01').outputs.eventhubNamespaceId.value]" + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'eventhubNamespace001'), '2020-10-01').outputs.eventhubNamespaceId.value]" }, "sqlServerId": { - "value": "[if(parameters('enableSqlServer'), reference(resourceId('Microsoft.Resources/deployments', 'sql001'), '2020-06-01').outputs.sqlserverId.value, '')]" + "value": "[if(parameters('enableSqlServer'), reference(resourceId('Microsoft.Resources/deployments', 'sql001'), '2020-10-01').outputs.sqlserverId.value, '')]" }, "storageAccountId": { "value": "[resourceId(variables('streamanalyticsDefaultStorageAccountSubscriptionId'), variables('streamanalyticsDefaultStorageAccountResourceGroupName'), 'Microsoft.Storage/storageAccounts', variables('streamanalyticsDefaultStorageAccountName'))]" @@ -1602,8 +1594,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "8756340499582912466" + "version": "0.4.1124.51302", + "templateHash": "17174678349468735380" } }, "parameters": { @@ -1654,7 +1646,6 @@ "defaultValue": "" } }, - "functions": [], "variables": { "storageAccountName": "[if(greaterOrEquals(length(split(parameters('storageAccountId'), '/')), 9), last(split(parameters('storageAccountId'), '/')), 'incorrectSegmentLength')]", "sqlServerName": "[if(greaterOrEquals(length(split(parameters('sqlServerId'), '/')), 9), last(split(parameters('sqlServerId'), '/')), 'incorrectSegmentLength')]", @@ -1807,7 +1798,7 @@ "batchSize": 1 }, "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", + "apiVersion": "2020-10-01", "name": "[format('delay-{0}', range(0, 20)[copyIndex()])]", "properties": { "expressionEvaluationOptions": { @@ -1825,8 +1816,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "13546439864548302355" + "version": "0.4.1124.51302", + "templateHash": "701382971037194322" } }, "parameters": { @@ -1834,7 +1825,6 @@ "type": "int" } }, - "functions": [], "resources": [], "outputs": { "deploymentDelayIndex": { @@ -1851,7 +1841,7 @@ { "condition": "[and(parameters('enableStreamAnalytics'), parameters('enableRoleAssignments'))]", "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", + "apiVersion": "2020-10-01", "name": "streamanalytics001RoleAssignmentStorage", "subscriptionId": "[variables('streamanalyticsDefaultStorageAccountSubscriptionId')]", "resourceGroup": "[variables('streamanalyticsDefaultStorageAccountResourceGroupName')]", @@ -1865,7 +1855,7 @@ "value": "[parameters('streamanalyticsDefaultStorageAccountFileSystemId')]" }, "streamanalyticsjobId": { - "value": "[if(parameters('enableStreamAnalytics'), reference(resourceId('Microsoft.Resources/deployments', 'streamanalytics001'), '2020-06-01').outputs.streamanalyticsjob001Id.value, '')]" + "value": "[if(parameters('enableStreamAnalytics'), reference(resourceId('Microsoft.Resources/deployments', 'streamanalytics001'), '2020-10-01').outputs.streamanalyticsjob001Id.value, '')]" } }, "template": { @@ -1874,8 +1864,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "10020094560130771138" + "version": "0.4.1124.51302", + "templateHash": "13352207208611742177" } }, "parameters": { @@ -1886,7 +1876,6 @@ "type": "string" } }, - "functions": [], "variables": { "storageAccountFileSystemName": "[if(greaterOrEquals(length(split(parameters('storageAccountFileSystemId'), '/')), 13), last(split(parameters('storageAccountFileSystemId'), '/')), 'incorrectSegmentLength')]", "storageAccountName": "[if(greaterOrEquals(length(split(parameters('storageAccountFileSystemId'), '/')), 13), split(parameters('storageAccountFileSystemId'), '/')[8], 'incorrectSegmentLength')]", diff --git a/infra/modules/services/streamanalytics.bicep b/infra/modules/services/streamanalytics.bicep index ec62c34..4b80a0f 100644 --- a/infra/modules/services/streamanalytics.bicep +++ b/infra/modules/services/streamanalytics.bicep @@ -62,6 +62,7 @@ resource streamanalyticsclusterManagedPrivateEndpointStorageAccount 'Microsoft.S 'blob' ] privateLinkServiceConnectionState: {} + #disable-next-line BCP073 requestMessage: requestMessage } } @@ -81,6 +82,7 @@ resource streamanalyticsclusterManagedPrivateEndpointSqlServer 'Microsoft.Stream 'sqlServer' ] privateLinkServiceConnectionState: {} + #disable-next-line BCP073 requestMessage: requestMessage } } @@ -100,6 +102,7 @@ resource streamanalyticsclusterManagedPrivateEndpointEventhubNamespace 'Microsof 'namespace' ] privateLinkServiceConnectionState: {} + #disable-next-line BCP073 requestMessage: requestMessage } } diff --git a/infra/modules/services/synapse.bicep b/infra/modules/services/synapse.bicep index 43fb480..cf0bd56 100644 --- a/infra/modules/services/synapse.bicep +++ b/infra/modules/services/synapse.bicep @@ -118,7 +118,9 @@ resource synapseBigDataPool001 'Microsoft.Synapse/workspaces/bigDataPools@2021-0 defaultSparkLogFolder: 'logs/' dynamicExecutorAllocation: { enabled: true + #disable-next-line BCP037 minExecutors: 1 + #disable-next-line BCP037 maxExecutors: 9 } // isComputeIsolationEnabled: true // Uncomment to enable compute isolation (only available in selective regions)