Azure功能运行时配置

时间:2018-07-04 16:14:02

标签: azure azure-functions azure-functions-runtime

我正在尝试通过使用官方microsoft/azure-functions-node8映像来对Azure函数进行docker化。我根本找不到有关配置运行时的任何文档,并且每当我运行运行时时,都会发生以下错误:

      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.)

我在Google上搜索了一些片段,并设法编写了以下.config文件,但是运行时仍然对我大喊大叫。

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

.config文件格式在任何地方都有记录吗?

1 个答案:

答案 0 :(得分:2)

这是一个古老的技巧,用于提醒我们默认的存储连接AzureWebJobsStorage设置不正确,很久以前就对其进行了改进,使其更加易懂。请参见此issueits fix

就像在docker镜像中一样,此修复以某种方式被省略。

要解决您的问题,只需在Dockerfile中设置AzureWebJobsStorage

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

请注意,如果您使用AzureWebJobsStorage以外的名称,则需要使用connection文件中的名称来设置function.json参数。

更新

根据Connor的评论,我提到的修复程序已添加到cli工具中,而docker image并没有利用它,因此我们仍然会看到此原始运行时错误。