我无法弄清楚如何在成功部署资源类型/种类的逻辑应用程序标准的arm模板中定义工作流程:
逻辑应用程序标准需要现有的应用程序服务计划和存储帐户,而不是消费逻辑应用程序。我找不到任何有关如何定义要在逻辑应用标准中创建的工作流的参考或文档。我提供了下面 Arm 模板中的逻辑应用资源代码片段。
"resources": [
{
"apiVersion": "2019-08-01",
"name": "[parameters('logicAppName')]",
"type": "Microsoft.Web/sites",
"kind": "functionapp,workflowapp",
"location": "[parameters('location')]",
"tags": "[parameters('tags')]",
"dependsOn": [],
"properties": {
"name": "[parameters('logicAppName')]",
"siteConfig": {
"appSettings": [
{
"name": "FUNCTIONS_EXTENSION_VERSION",
"value": "~4"
},
{
"name": "FUNCTIONS_WORKER_RUNTIME",
"value": "node"
},
{
"name": "WEBSITE_NODE_DEFAULT_VERSION",
"value": "~18"
},
{
"name": "AzureWebJobsStorage",
"value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listKeys(resourceId(parameters('subscriptionId'),parameters('resourceGroup'),'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value,';EndpointSuffix=','core.windows.net')]"
},
{
"name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
"value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listKeys(resourceId(parameters('subscriptionId'),parameters('resourceGroup'),'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value,';EndpointSuffix=','core.windows.net')]"
},
{
"name": "WEBSITE_CONTENTSHARE",
"value": "clmslogicapp876a"
},
{
"name": "AzureFunctionsJobHost__extensionBundle__id",
"value": "Microsoft.Azure.Functions.ExtensionBundle.Workflows"
},
{
"name": "AzureFunctionsJobHost__extensionBundle__version",
"value": "[1.*, 2.0.0)"
},
{
"name": "APP_KIND",
"value": "workflowApp"
}
],
"cors": {},
"use32BitWorkerProcess": false,
"ftpsState": "FtpsOnly",
"netFrameworkVersion": "v6.0"
},
"clientAffinityEnabled": false,
"virtualNetworkSubnetId": "[variables('subnetForInjectionID')]",
"publicNetworkAccess": "Disabled",
"httpsOnly": true,
"serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('resourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]"
},
"identity": {
"type": "SystemAssigned"
}
}
]
所有资源和示例模板均指我不尝试部署的资源类型的消费逻辑应用程序:
工作流定义可以在 Azure 门户中的 Code 选项卡下以 json 形式找到。我尝试在资源数组的逻辑应用标准属性中添加此 .json 工作流定义,并且arm模板已成功部署,但逻辑应用中没有工作流。通过工作流的定义和成功的部署,我希望逻辑应用程序在配置后会有额外的资源,但逻辑应用程序部署正常,并且工作流选项卡为空。
Microsoft.Logic/workflows
主要适用于消费逻辑类应用。没有直接的方法可以使用 ARM 模板在逻辑应用标准内部署工作流。一种方法是使用 ARM 中提供的部署脚本,另一种方法是使用 bicep 部署后脚本。
您的代码应使用 ARM 部署 PowerShell 脚本进行类似于以下的修改:
首先,创建一个逻辑应用标准资源,然后在部署脚本资源中使用
Set-AzLogicapp
PowerShell 命令添加工作流,如下所示。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"metadata": {
"description": "The datacenter to use for the deployment."
}
},
"logicAppName": {
"type": "string",
"defaultValue": "mynewapj"
},
"appServicePlanName": {
"type": "string"
},
"storageName": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"kind": {
"type": "string",
"defaultValue": "StorageV2"
},
"skuName": {
"type": "string",
"defaultValue": "Standard_LRS"
},
"skuTier": {
"type": "string",
"defaultValue": "Standard"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-06-01",
"sku": {
"name": "[parameters('skuName')]",
"tier": "[parameters('skuTier')]"
},
"kind": "[parameters('kind')]",
"name": "[parameters('storageName')]",
"location": "[parameters('location')]"
},
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2018-02-01",
"name": "[parameters('appServicePlanName')]",
"location": "[parameters('location')]",
"sku": {
"name": "WS1",
"tier": "WorkflowStandard"
},
"kind": "windows"
},
{
"type": "Microsoft.Web/sites",
"apiVersion": "2018-11-01",
"name": "[parameters('logicAppName')]",
"location": "[parameters('location')]",
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageName'))]"
],
"kind": "workflowapp,functionapp",
"identity": {
"type": "SystemAssigned"
},
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
"siteConfig": {
"netFrameworkVersion": "v4.6",
"appSettings": [
{
"name": "APP_KIND",
"value": "workflowApp"
},
{
"name": "AzureFunctionsJobHost__extensionBundle__id",
"value": "Microsoft.Azure.Functions.ExtensionBundle.Workflows"
},
{
"name": "AzureFunctionsJobHost__extensionBundle__version",
"value": "[1.*, 2.0.0)"
},
{
"name": "AzureWebJobsStorage",
"value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageName'),';AccountKey=',concat(listKeys(concat(resourceGroup().id,'/providers/Microsoft.Storage/storageAccounts/', parameters('storageName')),'2019-06-01').keys[0].value),';EndpointSuffix=core.windows.net')]"
},
{
"name": "FUNCTIONS_EXTENSION_VERSION",
"value": "~4"
},
{
"name": "FUNCTIONS_V2_COMPATIBILITY_MODE",
"value": "true"
},
{
"name": "FUNCTIONS_WORKER_RUNTIME",
"value": "node"
},
{
"name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
"value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageName'),';AccountKey=',concat(listKeys(concat(resourceGroup().id,'/providers/Microsoft.Storage/storageAccounts/', parameters('storageName')),'2019-06-01').keys[0].value),';EndpointSuffix=core.windows.net')]"
},
{
"name": "WEBSITE_CONTENTSHARE",
"value": "[parameters('logicAppName')]"
},
{
"name": "WEBSITE_NODE_DEFAULT_VERSION",
"value": "~12"
},
{
"name": "WORKFLOWS_SUBSCRIPTION_ID",
"value": "[subscription().subscriptionId]"
},
{
"name": "WORKFLOWS_LOCATION_NAME",
"value": "[parameters('location')]"
},
{
"name": "WORKFLOWS_RESOURCE_GROUP_NAME",
"value": ""
},
{
"name": "BLOB_CONNECTION_RUNTIMEURL",
"value": ""
}
]
},
"clientAffinityEnabled": false
}
},
{
"type": "Microsoft.Resources/deploymentScripts",
"apiVersion": "2020-10-01",
"kind": "AzurePowerShell",
"name": "newdeploj",
"location": "[parameters('location')]",
"properties": {
"azPowerShellVersion": "3.0",
"scriptContent": "Set-AzLogicApp -ResourceGroupName <resourceGroup> -Name <logicAppName> -DefinitionFilePath .\\schemadef.json",
"forceUpdateTag": "utcNow()",
"retentionInterval": "PT4H"
}
}
],
"outputs": {
"logicAppSystemAssignedIdentityTenantId": {
"type": "string",
"value": "[subscription().tenantid]"
},
"logicAppSystemAssignedIdentityObjectId": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Web/sites', parameters('logicAppName')),'2019-08-01', 'full').identity.principalId]"
},
"LAname": {
"type": "string",
"value": "[parameters('logicAppName')]"
}
}
}
参考:Lekman的博客