Конфигурация среды выполнения функций Azure

Я пытаюсь докеризовать функции Azure с помощью официального образа microsoft/azure-functions-node8. Я не смог найти никакой документации по настройке среды выполнения, и всякий раз, когда я запускаю среду выполнения, возникают следующие ошибки:

      The listener for function 'Functions.health' was unable to start.
Microsoft.Azure.WebJobs.Host.Listeners.FunctionListenerException: The listener for function 'Functions.health' was unable to start. ---> System.AggregateException: One or more errors occurred. (Microsoft Azure WebJobs SDK 'Storage' connection string is missing or empty. The Microsoft Azure Storage account connection string can be set in the following ways:
1. Set the connection string named 'AzureWebJobsStorage' in the connectionStrings section of the .config file in the following format <add name="AzureWebJobsStorage" connectionString="DefaultEndpointsProtocol=http|https;AccountName=NAME;AccountKey=KEY" />, or
2. Set the environment variable named 'AzureWebJobsStorage', or
3. Set corresponding property of JobHostConfiguration.)

Я погуглил кое-что и смог составить следующий .config файл, но среда выполнения все еще кричит мне.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
        <add name="AzureWebJobsStorage" connectionString="myconnectionstring"/>
  </connectionStrings>
</configuration>

Документирован ли где-нибудь формат файла .config?


person Vladimir Hraban    schedule 04.07.2018    source источник


Ответы (1)


Это был старый совет, который использовался, чтобы напомнить нам, что соединение с хранилищем по умолчанию AzureWebJobsStorage установлено неправильно, которое давно было улучшено, чтобы сделать его более понятным. См. Эту проблему и исправление.

Похоже, что в образе докера это исправление как-то пропущено.

Чтобы решить вашу проблему, просто установите AzureWebJobsStorage в вашем Dockerfile.

ENV AzureWebJobsStorage=DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=xxx==;EndpointSuffix=core.windows.net

Обратите внимание, что если вы используете имя, отличное от AzureWebJobsStorage, необходимо установить параметр connection, используя имя в function.json файле.

Обновить

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

person Jerry Liu    schedule 05.07.2018
comment
Причина, по которой исправление было опущено в образе докера, заключается в том, что новое сообщение об ошибке было добавлено в инструменты CLI, поэтому проблема будет обнаружена до того, как среда выполнения попытается выполнить. Образ докера не использует инструменты CLI, поэтому вы видите исходную ошибку, которую выдает среда выполнения. - person Connor McMahon; 05.07.2018
comment
@ConnorMcMahon Спасибо за ваше объяснение. Я открою вопрос для улучшения. - person Jerry Liu; 06.07.2018