Azure Premium Functions - 使用 Azure 防火墙控制出站流量

Azure Premium Functions - Control outbound traffic with Azure Firewall

我想要达到的目标

我在 Function Premium 计划中有一个非常简单的 Azure Function 应用程序。我想控制它的出站流量,所以只允许请求 www.server.com

到目前为止我尝试了什么

问题

当我试图向这个函数应用程序添加一个新的 HttpTrigger 函数时,我总是得到这个错误:Failed to create HttpTrigger1: Encountered an error (InternalServerError) from host runtime.

有时我在 Functions 页面上收到此 Azure Functions runtime is unreachable 错误:

有时我也会在此功能应用程序的 Overview 页面上看到此错误:

我可能遗漏了什么?

造成这种错误的原因可能有很多Azure Functions runtime is unreachable:

  1. Microsoft Documentation中上述错误的排查步骤所述,最常见的原因是函数应用程序无法访问其存储帐户。

我在这里做的解决方法之一:

创建了 Azure 函数(.Net 3.1 堆栈)- Azure 门户中的高级计划,带有带有 VNet 集成和配置的出站 IP 访问的 Http 触发器。

运行成功

以下是与此功能应用相关的资源。

如上述文档所述,为了得到那种 运行time unreachable 错误,我删除了与此 Function App 关联的存储帐户。

删除关联存储帐户后,出现相同的错误“Azure Functions Runtime is unreachable

恢复了删除的存储账户并再次运行功能:

确保您的存储帐户未被删除,该帐户与该功能应用关联,否则该功能将无法使用。

  1. 检查存储帐户连接字符串是否被删除或覆盖。例如 AzureWebJobsStoragelocal.settings.json 中设置的本地存储模拟器连接字符串变量,用于 运行 本地函数。相同的变量在用于 运行 Azure 函数的 Azure 门户中具有不同的值。因此,请确保与存储帐户相关的所有属性都可用且正确。

  2. 如果您在存储帐户中设置了防火墙并且未配置为允许进出函数的流量,请允许它。

  3. 如果您的每日使用限额已满,则运行时间功能将无法使用。要解决此问题,请增加或删除每日配额限制并重新启动函数应用。否则,您的函数应用程序的执行将被阻止到第二天。

  4. 请检查您的函数应用是否已在入站 IP 限制中允许您的 IP 地址,这可能被配置为阻止 Internet 访问。

  5. 如果您的函数托管在内部负载均衡应用服务环境,请检查内部 IP 地址是允许的,因为您可能被配置为阻止入站互联网流量,因此 function runtime is unreachable.

  6. 请确保您在 Azure Portal Function App 的配置(应用程序设置)中设置正确的 FUNCTIONS_EXTENSION_VERSION 值,因为这是 运行 时间版本设置和刷新功能函数 app/re-deploy 函数。 由于我创建了 .Net Core 3.1 Stack 的 Function App,所以兼容的函数 运行time 版本是 3.


System.Private.CoreLib.Access to the path 'C:\home\site\wwwroot\host.json' is denied

我能够访问 Kudu 控制台中可用的 host.jsonfunction.json 文件以及在编辑器中:

  1. 当您将高级功能连接到 VNet 集成时,请确保这两个设置可用且相同。

关于此类错误的解决方案很少,请参考此MSFT Q&A Thread and GitHub Thread