Azure Function Runtime版本在部署时设置为~1



我有一个AzureDevOps管道,它使用以下ARM模板部署Azure功能:

{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"functionAppCSName": {
"type": "string"
},
"storageAccountName": {
"type": "string"
},
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"metadata": {
"description": "Geo-replication type of Storage account"
},
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Standard_RGRS"
]
},
"serverFarmsName": {
"type": "string"
},
"appInsightsName": {
"type": "string"
},
"appinsightResourceGroupName": {
"type": "string"
},
"webURL": {
"type": "string"
},
"vaultName": {
"type": "string"
},
"sspVaultName": {
"type": "string"
},
"marketplaceVaultName": {
"type": "string"
},
"redisRgName": {
"type": "string"
},
"redisName": {
"type": "string"
},
"environment": {
"type": "string"
},
"aadTenant": {
"type": "string"
},
"aadClientId": {
"type": "string"
},
"audience": {
"type": "string"
},
"location": {
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"apiVersion": "2019-04-01",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {
}
},
{
"type": "Microsoft.Web/sites",
"kind": "functionapp",
"name": "[parameters('functionAppCSName')]",
"apiVersion": "2016-08-01",
"location": "[parameters('location')]",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
],
"identity": {
"type": "SystemAssigned"
},
"tags": {
},
"properties": {
"httpsOnly": true,
"enabled": true,
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('serverFarmsName'))]",
"reserved": false,
"siteConfig": {
"AlwaysOn": true,
"ftpsState": "Disabled"
},
"clientAffinityEnabled": true,
"clientCertEnabled": false,
"hostNamesDisabled": false,
"containerSize": 1536,
"dailyMemoryTimeQuota": 0,
"remoteDebuggingEnabled": false,
"webSocketsEnabled": false
},
"resources": [
{
"apiVersion": "2016-08-01",
"name": "appsettings",
"type": "config",
"dependsOn": [
"[resourceId('Microsoft.Web/Sites', parameters('functionAppCSName'))]"
],
"properties": {
"SSPSYSTEM_KEYVAULT_URI": "[concat('https://',parameters('sspvaultname'),'.vault.azure.net')]",
"SSP_KEYVAULT_URI": "[concat('https://',parameters('vaultName'),'.vault.azure.net')]",
"MP_KEYVAULT_URI": "[concat('https://',parameters('marketplaceVaultName'),'.vault.azure.net')]",
"AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=', parameters('storageAccountName'), ';AccountKey=', listKeys(parameters('storageAccountName'),'2019-06-01').keys[0].value)]",
"AzureWebJobsDashboard": "[concat('DefaultEndpointsProtocol=https;AccountName=', parameters('storageAccountName'), ';AccountKey=', listKeys(parameters('storageAccountName'),'2019-06-01').keys[0].value)]",
"FUNCTIONS_EXTENSION_VERSION": "~3",
"AzureWebJobsSecretStorageType": "Files",
"APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId(parameters('appinsightResourceGroupName'),'Microsoft.Insights/components', parameters('appInsightsName')), '2014-04-01').InstrumentationKey]",
"CacheConnectionString": "[concat(parameters('redisName'),'.redis.cache.windows.net,abortConnect=false,ssl=true,password=', listKeys(resourceId(parameters('redisRgName'),'Microsoft.Cache/Redis',parameters('redisName')), '2015-08-01').primaryKey)]",
"AssetCacheKey": "[parameters('environment')]"
}
},
{
"comments": "CORS allow origins *.",
"type": "Microsoft.Web/sites/config",
"name": "[concat(parameters('functionAppCSName'), '/web')]",
"apiVersion": "2016-08-01",
"properties": {
"cors": {
"allowedOrigins": [
"https://functions.azure.com",
"https://functions-staging.azure.com",
"https://functions-next.azure.com",
"[parameters('webURL')]",
"http://localhost:4200"
]
}
},
"dependsOn": [
"[concat('Microsoft.Web/sites/', parameters('functionAppCSName'))]",
"[concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]"
]
},
{
"type": "config",
"name": "logs",
"apiVersion": "2016-08-01",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Web/sites/', parameters('functionAppCSName'))]",
"[concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]"
],
"properties": {
"remoteDebuggingEnabled": false,
"webSocketsEnabled": false,
"applicationLogs": {
"fileSystem": {
"level": "Off"
},
"azureTableStorage": {
"level": "Off",
"sasUrl": null
},
"azureBlobStorage": {
"level": "Verbose",
"sasUrl": "url",
"retentionInDays": 7
},
"httpLogs": {
"fileSystem": {
"retentionInMb": 365,
"retentionInDays": 365,
"enabled": true
},
"azureBlobStorage": {
"sasUrl": "url",
"retentionInDays": 365,
"enabled": true
}
},
"failedRequestsTracing": {
"enabled": true
},
"detailedErrorMessages": {
"enabled": true
}
}
}
},
{
"name": "[concat(parameters('functionAppCSName'), '/authsettings')]",
"apiVersion": "2016-08-01",
"type": "Microsoft.Web/sites/config",
"location": "[parameters('location')]",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', parameters('functionAppCSName'))]"
],
"properties": {
"enabled": true,
"tokenStoreEnabled": true,
"defaultProvider": "AzureActiveDirectory",
"clientId": "[parameters('aadClientId')]",
"issuer": "[concat('https://login.microsoftonline.com/', parameters('aadTenant'))]",
"allowedAudiences": [
"[parameters('audience')]"
]
}
}
]
}
],
"outputs": {
"tenantID": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Web/sites', parameters('functionAppCSName')),'2020-06-01', 'Full').identity.tenantId]"
},
"objectId": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Web/sites', parameters('functionAppCSName')),'2020-06-01', 'Full').identity.principalId]"
}
}
}

如您所见,我正在通过以下操作设置Function App的运行时版本

...
{
"apiVersion": "2016-08-01",
"name": "appsettings",
"type": "config",
"dependsOn": [
"[resourceId('Microsoft.Web/Sites', parameters('functionAppCSName'))]"
],
"properties": {
"SSPSYSTEM_KEYVAULT_URI": "[concat('https://',parameters('sspvaultname'),'.vault.azure.net')]",
"SSP_KEYVAULT_URI": "[concat('https://',parameters('vaultName'),'.vault.azure.net')]",
"MP_KEYVAULT_URI": "[concat('https://',parameters('marketplaceVaultName'),'.vault.azure.net')]",
"AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=', parameters('storageAccountName'), ';AccountKey=', listKeys(parameters('storageAccountName'),'2019-06-01').keys[0].value)]",
"AzureWebJobsDashboard": "[concat('DefaultEndpointsProtocol=https;AccountName=', parameters('storageAccountName'), ';AccountKey=', listKeys(parameters('storageAccountName'),'2019-06-01').keys[0].value)]",
"FUNCTIONS_EXTENSION_VERSION": "~3",
"AzureWebJobsSecretStorageType": "Files",
"APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId(parameters('appinsightResourceGroupName'),'Microsoft.Insights/components', parameters('appInsightsName')), '2014-04-01').InstrumentationKey]",
"CacheConnectionString": "[concat(parameters('redisName'),'.redis.cache.windows.net,abortConnect=false,ssl=true,password=', listKeys(resourceId(parameters('redisRgName'),'Microsoft.Cache/Redis',parameters('redisName')), '2015-08-01').primaryKey)]",
"AssetCacheKey": "[parameters('environment')]"
}
}
...

问题是,当部署函数时,运行时版本总是设置为1~,我解决它的唯一方法是删除函数应用程序并再次重新部署,或者在管道上反复运行重新部署,直到它变为~3。

这对我们来说真的很沮丧,因为我们无法进行适当或顺利的部署。

在ARM模板方面,我是否缺少一些东西?

尝试将API版本更改为最新版本。这应该在所有正在创建的/site资源上完成。

{
"apiVersion": "2020-06-01",
"name": "appsettings",
"type": "config",
"dependsOn": [
"[resourceId('Microsoft.Web/Sites', parameters('functionAppCSName'))]"
],

总能在Microsoft Docs 上看到最新版本

最新更新