{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.1", "parameters": { "scopeID": { "type": "string" }, "iotCentralSASKey": { "type": "string" } }, "variables": { "planName": "[concat('iotcpln', uniqueString(resourceGroup().id))]", "storageName": "[concat('iotcsa', uniqueString(resourceGroup().id))]", "functionAppName": "[concat('iotcfn', uniqueString(resourceGroup().id))]", "keyVaultName": "[concat('iotcvlt', uniqueString(resourceGroup().id))]", "iotcKeyName": "iotckey" }, "resources": [ { "type": "Microsoft.Storage/storageAccounts", "sku": { "name": "Standard_LRS", "tier": "Standard" }, "kind": "Storage", "name": "[variables('storageName')]", "apiVersion": "2022-09-01", "location": "[resourceGroup().location]" }, { "type": "Microsoft.Web/serverfarms", "apiVersion": "2022-09-01", "name": "[variables('planName')]", "location": "[resourceGroup().location]", "sku": { "name": "Y1" } }, { "type": "Microsoft.Web/sites", "kind": "functionapp", "name": "[variables('functionAppName')]", "apiVersion": "2022-09-01", "location": "[resourceGroup().location]", "tags": { "iotCentral": "device-bridge", "iotCentralDeviceBridge": "function-app" }, "identity": { "type": "SystemAssigned" }, "properties": { "enabled": true, "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('planName'))]", "siteConfig": { "appSettings": [ { "name": "AzureWebJobsDashboard", "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageName')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).keys[0].value)]" }, { "name": "AzureWebJobsStorage", "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageName')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).keys[0].value)]" }, { "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageName')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).keys[0].value)]" }, { "name": "WEBSITE_CONTENTSHARE", "value": "[toLower(variables('functionAppName'))]" }, { "name": "FUNCTIONS_EXTENSION_VERSION", "value": "~4" }, { "name": "WEBSITE_NODE_DEFAULT_VERSION", "value": "~18" }, { "name": "WEBSITE_HTTPSCALEV2_ENABLED", "value": 0 }, { "name": "ID_SCOPE", "value": "[parameters('scopeID')]" }, { "name": "IOTC_KEY_URL", "value": "[concat('https://', variables('keyVaultName'), '.vault.azure.net/secrets/', variables('iotcKeyName'), '/')]" } ] } }, "resources": [ { "name": "MSDeploy", "type": "extensions", "location": "[resourceGroup().location]", "apiVersion": "2022-09-01", "dependsOn": [ "[concat('Microsoft.Web/sites/', variables('functionAppName'))]" ], "properties": { "packageUri": "https://raw.githubusercontent.com/Azure/iotc-device-bridge/master/iotc-bridge-az-function.zip" } } ], "dependsOn": [ "[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]", "[resourceId('Microsoft.Web/serverfarms', variables('planName'))]" ] }, { "type": "Microsoft.KeyVault/vaults", "name": "[variables('keyVaultName')]", "apiVersion": "2022-07-01", "location": "[resourceGroup().location]", "properties": { "sku": { "family": "A", "name": "standard" }, "tenantId": "[subscription().tenantId]", "accessPolicies": [ { "tenantId": "[reference(concat('Microsoft.Web/sites/', variables('functionAppName')), '2016-08-01', 'Full').identity.tenantId]", "objectId": "[reference(concat('Microsoft.Web/sites/', variables('functionAppName')), '2016-08-01', 'Full').identity.principalId]", "permissions": { "keys": [], "secrets": [ "get", "list", "recover" ], "certificates": [] } } ] }, "resources": [ { "type": "secrets", "name": "[variables('iotcKeyName')]", "apiVersion": "2022-07-01", "tags": {}, "properties": { "value": "[parameters('iotCentralSASKey')]" }, "dependsOn": [ "[concat('Microsoft.KeyVault/vaults/', variables('keyVaultName'))]" ] } ], "dependsOn": [ "[resourceId('Microsoft.Web/sites', variables('functionAppName'))]" ] } ] }