我想通过VS 2017发布我的Azure函数。
它可以正常工作,但是在激活链接的存储帐户上的防火墙后,我不能再部署项目了。 我已经检查了FW设置,看起来还可以(没有代理等)。
我遇到一些ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER错误。
从主题中获得的建议对我不起作用。 Not able to publish website on Windows Azure using publish through VS2010。
还有其他建议吗?
答案 0 :(得分:3)
解决方案:
创建一个存储帐户,该帐户与功能应用程序不在同一区域。例如,如果您的功能位于Central US
中,则存储帐户应选择一个不同的名称,例如East US
。然后使用新创建的存储帐户连接字符串修改以下三个参数(在“应用程序设置”中)。
使用Function app outbound IP addresses配置其防火墙。
在“功能”应用的“平台功能”面板上,单击“资源管理器”。
找到outboundIpAddresses并将它们全部添加到防火墙IP列表中。
如果要使用Azure Portal访问存储帐户,请不要忘记添加本地IP。 (对于从VS部署而言,不是必需的。)
说明:
只能为消费计划中托管的功能复制INSUFFICIENT_ACCESS。
关于此问题,App服务和消费计划之间的最大区别在于它们如何托管功能文件。
对于App服务计划,我们在门户上发布或创建的功能文件存储在某些Azure服务器上。将防火墙设置添加到AzureWebJobsDashboard
(在表中存储功能日志)和AzureWebJobsStorage
(在容器中存储功能主机锁)使用的存储帐户中,不会影响功能部署。
在进行消耗计划时,功能文件存储在WEBSITE_CONTENTAZUREFILECONNECTIONSTRING
指定的存储帐户上。当我们从VS发布或在门户网站上创建功能时,功能文件将从功能站点部署到存储帐户。我们没有将功能应用程序IP添加到存储防火墙白名单中,因此遇到了错误。
关于为什么我们必须在不同于Function应用程序的区域中创建存储,根据我的测试,当它们两个位于同一区域时,function似乎没有利用出站IP。看到GitHub上的某人获得the same result。