Проблема с развертыванием функций AzureFunctions во вновь созданном AppService в том же шаблоне ARM

Я работаю над шаблоном ARM для развертывания функции Azure. Мои шаги следующие

1) отправить шаблон руки в хранилище больших двоичных объектов и получить URI SAS 2) отправить функции azure в хранилище больших двоичных объектов и получить URI SAS 3) запустить команду PowerShell New-AzureRmResourceGroup, чтобы создать новую группу ресурсов 4) выполнить команду PowerShell New-AzureRmResourceGroupDeployment, чтобы развернуть мое приложение с помощью шаблона ARM.

В моем шаблоне Arm я использую вложенный шаблон MSDeploy для отправки моей лазурной функции через zip-файл.

При первом развертывании будут созданы все мои ресурсы, но не будут развернуты мои функции Azure.

Если я развертываю с помощью того же процесса с тем же шаблоном руки для моих недавно созданных ресурсов и группы ресурсов, мои лазурные функции будут развернуты. Я не уверен, что происходит с этим процессом, поскольку оба развертывания считаются успешными.

Вот мой шаблон руки лазурных функций с MSDeploy

{
        "type": "Microsoft.Web/sites",
        "apiVersion": "2015-08-01",
        "name": "[variables('functionsName')]",
        "location": "[resourceGroup().location]",
        "kind": "functionapp",
        "dependsOn": [
            "[resourceId('Microsoft.Web/serverfarms',variables('hostPlanName'))]",
            "[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]",
            "[resourceId('Microsoft.Insights/components', variables('appInsightsName'))]"
        ],
        "properties": {
            "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostPlanName'))]",
            "name": "[variables('functionsName')]"
        },
        "resources": [ 
            {
                "name": "MSDeploy",
                "type": "extensions",
                "location": "[resourceGroup().location]",
                "apiVersion": "2015-08-01",
                "dependsOn": [
                    "[concat('Microsoft.Web/sites/', variables('functionsName'))]"
                ],
                "properties": {
                    "packageUri": "[concat(parameters('_artifactsLocation'),  parameters('SampleFunctionAppPackageFolder'), '/', parameters('SampleFunctionAppPackageFileName'), parameters('_artifactsLocationSasToken'))]",
                }
            },
            {
                "apiVersion": "2016-03-01",
                "name": "appsettings",
                "type": "config",
                "dependsOn": [
                    "[resourceId('Microsoft.Web/sites', variables('functionsName'))]",
                    "[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]",
                    "[concat('Microsoft.Web/sites/', variables('functionsName'), '/Extensions/MSDeploy')]"
                ],
                "properties": {
                   ****  App settings removed *****
                }
            }
        ]
    }

person McFrank    schedule 03.04.2018    source источник
comment
Итак, с какой проблемой вы столкнулись?   -  person Thomas    schedule 04.04.2018
comment
При первом развертывании лазурные функции не используются. Я хочу попробовать создать свежие ресурсы с развернутыми функциями Azure.   -  person McFrank    schedule 04.04.2018
comment
Итак, вы загрузили свой код в хранилище BLOB-объектов?   -  person Thomas    schedule 04.04.2018
comment
Ага. это в zip-файле, как и ожидалось. URI тоже хорош. Я протестировал его и смог загрузить свой zip-файл с функциями. Как указано в вопросах. При втором развертывании в той же группе ресурсов будут развернуты functions. Просто первое развертывание по какой-то причине не развертывает функции   -  person McFrank    schedule 05.04.2018
comment
@Thomas Мы смогли найти решение этой ошибки, или я думаю, что обойтись   -  person McFrank    schedule 05.04.2018
comment
Полезно знать, вы должны опубликовать ответ, если считаете, что он будет полезен другим людям.   -  person Thomas    schedule 06.04.2018
comment
о, по какой-то причине я не видел кнопку ответа. Сделаю   -  person McFrank    schedule 09.04.2018


Ответы (1)


Оказывается, наличие вашего appSettings в другом шаблоне ARM вызывает эту проблему, заключающуюся в том, что функции Azure не развертываются при первом запуске. Перемещение AppSettings в шаблон appFunction ARM, например

"type": "Microsoft.Web/sites",
    "apiVersion": "2015-08-01",
    "name": "[variables('functionsName')]",
    "location": "[resourceGroup().location]",
    "kind": "functionapp",
    "identity": {
        "type": "SystemAssigned"
    },
    "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms',variables('hostPlanName'))]"
    ],
    "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostPlanName'))]",
        "name": "[variables('functionsName')]",
        "siteConfig": {
            "appSettings": [
                {
                    "name": "key1",
                    "value": "value1"
                }
            ]
        }
    }           
}

Я пытался избежать проблемы взаимоблокировки, описанной здесь https://blogs.msdn.microsoft.com/hosamshobak/2016/05/26/arm-template-msdeploy-race-condition-issue/

но мы увидели эту ошибку в результате этих шагов. Я не сталкивался с этой проблемой взаимоблокировки при развертывании, но это все еще возможно, поскольку я понятия не имею, была ли устранена проблема взаимоблокировки с помощью MSDeploy.

person McFrank    schedule 09.04.2018