【发布时间】:2020-12-26 16:31:28
【问题描述】:
问题大纲
Azure Function App 一旦集成到 VNET 并且 WEBSITE_VNET_ROUTE_ALL 设置为 1,就无法访问。
这是必需的,以便函数应用可以安全地连接到 SQL,而无需公开 SQL。
错误:
无法列出功能应用键。
来自同一网络中 VM 内的 HTTP 请求 (CURL) 失败:504 网关超时
架构图
复制步骤
- 创建资源组
- 使用 10.20.11.0/26 地址空间创建 VNET
- 为函数应用创建一个子网以与地址集成 范围 10.20.11.0/27
- 创建一个 Linux Function App 并集成到您创建的 VNET 在第 2 步中。
- 看到应用程序键仍然正常加载。
- 为地址范围为的数据库创建一个子网 10.20.11.32/27
- 创建 SQL Server 和 SQL 数据库。
- 在数据库上使用 DNS 区域创建专用链接并限制 公开访问。
- 将 DNS 区域链接到在步骤 2 中创建的 VNET。
- 函数应用将 SQL 私有链接解析为公共 IP 地址。
- 在 Function App 配置中,添加应用程序设置 WEBSITE_VNET_ROUTE_ALL 并将其设置为 1。
- 看到函数应用现在将 SQL 私有链接解析为私有 IP 地址
- 查看 Function App 键未加载。
- 尝试通过来自 网络或公共链接。
- 看到函数应用网关超时。
通过 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