我想通过 VS 2017 发布我的 Azure 函数。
它工作正常,但在链接的存储帐户上激活防火墙后,我无法再部署我的项目。 我已经检查了固件设置,看起来没问题(没有代理等)。
我遇到了一些 ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER 错误。
主题中给出的建议对我不起作用。 Not able to publish website on Windows Azure using publish through VS2010 .
还有其他建议吗?
最佳答案
解决方案:
创建一个与函数应用不在同一区域的存储帐户。例如,如果您的函数位于美国中部
,则存储帐户应选择其他帐户,例如美国东部
。然后使用新创建的存储帐户连接字符串修改以下三个参数(在应用程序设置中)。
- AzureWebJobs仪表板
- AzureWebJobsStorage
- WEBSITE_CONTENTAZUREFILECONNECTIONSTRING(仅用于消费计划)
使用 Function app outbound IP addresses 配置其防火墙.
在 Function 应用的平台功能面板上,单击资源浏览器。
查找 outboundIpAddresses 并将其全部添加到防火墙 IP 列表中。
如果您想使用 Azure 门户访问存储帐户,请不要忘记添加您的本地 IP。 (从 VS 部署不需要)。
说明:
只能为消耗计划上托管的函数重现 INSUFFICIENT_ACCESS。
关于这个问题,App service 和 Consumer plan 最大的区别在于它们如何托管函数文件。
对于应用服务计划,我们在门户上发布或创建的功能文件存储在某些Azure服务器上。将防火墙设置添加到 AzureWebJobsDashboard
(在表中存储函数日志)和 AzureWebJobsStorage
(在容器中存储函数主机锁)使用的存储帐户,对函数部署没有影响。
对于消耗计划,功能文件存储在WEBSITE_CONTENTAZUREFILECONNECTIONSTRING
指定的存储帐户中。当我们从VS发布或在门户上创建函数时,函数文件将从函数站点部署到存储帐户。我们遇到了错误,因为我们没有将函数应用 IP 添加到存储防火墙白名单。
至于为什么我们必须在与 Function 应用程序不同的区域中创建存储,根据我的测试,当它们位于同一区域时,Function 似乎不会利用出站 IP。在 GitHub 上看到有人得到了 the same result .
关于visual-studio - Azure 部署防火墙问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51668701/