【问题标题】:Unable to connect to Azure Function App after integrating into VNET集成到 VNET 后无法连接到 Azure Function App
【发布时间】:2020-12-26 16:31:28
【问题描述】:

问题大纲

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

这是必需的,以便函数应用可以安全地连接到 SQL,而无需公开 SQL。

错误:

无法列出功能应用键。

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

架构图

复制步骤

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

通过 SSH 连接到 Function App 并使用 nslookup,我们确定与专用链接的连接按预期解析了 SQL 数据库的本地 IP 地址。

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

由于 SQL 数据库受到限制并且只能在网络上使用,因此将 WEBSITE_VNET_ROUTE_ALL 设置设置为 1 至关重要。

WEBSITE_VNET_ROUTE_ALL = 1

WEBSITE_VNET_ROUTE_ALL = 0

参考文献

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

【问题讨论】:

  • 您的最终问题是什么?这实际上是否与编程有关,因为问题似乎与 Azure 以及那里的权限和功能更相关,这可能不是 SO 的主题。

标签: sql-server azure azure-function-app vnet azure-private-dns


【解决方案1】:

已通过将“Microsoft.Storage”服务端点添加到 Function App 子网来解决此问题。

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

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

【讨论】:

  • 您能详细说明一下吗?我也面临同样的问题。
  • @CB_Ron 我添加了更多细节。希望对您有所帮助。
  • 我遇到了与 3 个月前完全相同的问题,但配置几乎相同(不同之处在于我有 IoT 中心的专用端点,而不是 SQL 数据库的专用端点)。我试图再次重现此错误(只是为了调查一些事情),但现在即使没有服务端点,它也每次都能正常工作。您能否尝试从最初的问题中重现错误(因此不添加服务端点)?因为它看起来可能会在此期间得到修复(我认为添加 Microsoft.Storage 服务端点的必要性没有在任何地方记录)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-15
  • 1970-01-01
  • 2017-01-16
  • 2018-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多