微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

集成到VNET后无法连接到Azure Function App

如何解决集成到VNET后无法连接到Azure Function App

问题概述

Azure Function App一旦集成到VNET中且WEBSITE_VNET_ROUTE_ALL设置为1,就无法访​​问。

这是必需的,这样Function App可以安全地连接到sql,而不必使sql公开可用。

错误

无法列出功能应用程序键。

enter image description here

来自同一网络中VM的HTTP请求(CURL)失败:504网关超时

enter image description here

建筑图

enter image description here

复制步骤

  1. 创建资源组
  2. 创建具有10.20.11.0/26地址空间的VNET
  3. 为Function App创建一个子网以与地址集成 范围10.20.11.0/27
  4. 创建一个Linux Function应用并集成到您创建的VNET中 在步骤2中。
  5. 看到App键仍然可以正常加载。
  6. 为地址范围为的数据库创建一个子网 10.20.11.32/27
  7. 创建sql Server和sql数据库
  8. 数据库上创建带有DNS区域的专用链接并进行限制 公共访问。
  9. 将DNS区域链接到步骤2中创建的VNET。
  10. 功能应用将sql专用链接解析为公共IP地址。
  11. 在Function App配置中,添加一个Application设置 WEBSITE_VNET_ROUTE_ALL并将其设置为1。
  12. 请参阅“功能”应用程序现在将sql专用链接解析为专用IP 地址
  13. 请确认未加载Function App键。
  14. 尝试通过来自 网络或公共链接
  15. 看到Function应用程序网关超时。

通过到Function App的SSH连接并使用nslookup,我们确定到私有链接的连接可以按预期解析sql数据库的本地IP地址。

将WEBSITE_VNET_ROUTE_ALL标志设置为0,nslookup解析sql数据库的公共IP。

由于sql数据库受到限制并且仅在网络上可用,因此将WEBSITE_VNET_ROUTE_ALL设置设置为1是至关重要的。

WEBSITE_VNET_ROUTE_ALL = 1

enter image description here

WEBSITE_VNET_ROUTE_ALL = 0

enter image description here

参考

https://docs.microsoft.com/en-us/azure/app-service/web-sites-integrate-with-vnet

解决方法

此问题通过在Function App子网中添加“ Microsoft.Storage”服务终结点来解决。

所有流量都发送到vnet后,它需要一个服务端点到Storage,以便可以读取Function App的配置和功能。

  1. 导航到您的虚拟网络资源
  2. 在侧面菜单中的“设置”下,选择“服务端点”
  3. 点击“添加”
  4. 从“服务”下拉列表中选择“ Microsoft.Storage”
  5. 根据需要添加策略(我在这里没有选择任何策略)
  6. 关联Function App子网
  7. 添加。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。