Приложение-функция Azure срабатывает непоследовательно

В приложении-функции, развернутом в формате zip, которое запускается из концентратора событий, приложение запускается непоследовательно (кажется, запускается только при отладке приложения на портале Azure и примерно через 15 минут после этого).

resource "azurerm_function_app" "helloworld" {
  name                      = "helloworld-func"
  location                  = "${azurerm_resource_group.helloworld.location}"
  resource_group_name       = "${azurerm_resource_group.helloworld.name}"
  app_service_plan_id       = "${azurerm_app_service_plan.helloworld.id}"
  storage_connection_string = "${azurerm_storage_account.helloworld.primary_connection_string}"
  version                   = "~2"

  app_settings {
    # key must match bindings.connection in functionapp/eventHubsMessages/function.json and must include EntityPath
    # bindings.eventHubName in functionapp/eventHubMessages/function.json is purposelly kept empty to avoid overriding the EntityPath in connection string
    # see https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-hubs#output---configuration
    LOGSEVENTHUBCONNECTIONSTRING = "${azurerm_eventhub_authorization_rule.helloworld.primary_connection_string}"

    # TODO figure out how to use Azure AD and RBAC to allow the Function App access to the storage blob without a time-based token
    WEBSITE_USE_ZIP              = "${azurerm_storage_blob.helloworld.url}${data.azurerm_storage_account_sas.helloworld.sas}"
    HASH                         = "${data.archive_file.helloworld.output_base64sha256}"
    WEBSITE_NODE_DEFAULT_VERSION = "10.14.1"
  }
}
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
684
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это давно известная нерешенная проблема, вызванная тем, что триггеры функций не синхронизируются (см. https://github.com/Azure/Azure-Функции/issues/210).

добавьте этот local-exec поставщик в terraform, который использует azure cli, чтобы syncfunctiontriggers хорошо работал

  # required to sync the function trigger (event hub trigger); without, function app will trigger inconsistently
  provisioner "local-exec" {
    command = "az resource invoke-action --resource-group ${azurerm_resource_group.datadog_logs.name} --action syncfunctiontriggers --name ${azurerm_function_app.datadog_logs.name} --resource-type Microsoft.Web/sites"
  }

Это не сработало для меня. Некоторые из моих концентраторов событий по-прежнему не срабатывают после выполнения этой команды.

Kirk Sefchik 06.06.2019 16:43

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

StephenG 06.06.2019 17:02

Нет. Он просто не сработает.

Kirk Sefchik 06.06.2019 17:26

Если он не срабатывает локально, проблема, вероятно, связана с кодом. Эта команда предназначена специально для развертывания на основе zip в Azure.

StephenG 06.06.2019 18:52

Другие вопросы по теме