3

我一直在我的项目中使用基于天蓝色计时器的功能。自从我开始使用该功能后,我收到了与 Azure 存储帐户禁止访问相关的错误 403。

我尝试在函数配置中添加 AzureWebJobsStorage Key 我尝试添加 Azure 存储帐户的允许 IP 范围的出站 IP 我尝试检查允许 Azure 托管服务到存储帐户的选项。

但是,我的函数应用程序的特定计时器功能仍然出现错误。其他功能正常运行。

虽然,如果我允许存储帐户防火墙和 VN 设置中的所有网络,我的功能运行正常。

函数和存储帐户都在同一区域。

我想以某种方式启用它,我不需要选择允许所有网络。可以做什么?

4

2 回答 2

0

已经有一些关于这个问题的答案,你可以在这里这里看到。

简而言之,如果functionstorage account位于同一区域,则它们以内部方式进行通信,而无需经过outboundIpAddresses

解决方法是在不同区域创建它们。

于 2020-01-24T05:40:07.010 回答
0

万一其他人正在寻找这个......我有一个类似的问题。我有一个函数应用程序,我创建了一个专用终结点和区域 VNet 集成,该 VNet 与一个存储帐户交互,该存储帐户也有一个具有相同 VNet 的专用终结点。存储帐户的网络/防火墙设置仅允许来自 VNet 的连接(不允许外部流量)。存储帐户和函数应用都位于同一区域。

尝试修复 #1(不理想):

我添加了代码来确定函数应用从哪个 IP 运行。这导致我在功能应用程序 --> 属性 --> 下的门户中添加所有 IP Additional Outbound IP Addresses。如果使用它,它会被Terraform公开。

尝试修复#2(更好):

解决方法是确保您设置了正确的功能应用程序设置。

参见:微软文档

环境 建议值 描述
WEBSITE_CONTENTOVERVNET 1 创建此应用程序设置。值 1 使你的函数应用可以在你的存储帐户被限制到虚拟网络时进行缩放。
WEBSITE_DNS_SERVER 168.63.129.16 创建此应用程序设置。当您的应用与虚拟网络集成时,它将使用与虚拟网络相同的 DNS 服务器。你的函数应用需要此设置,以便它可以与 Azure DNS 专用区域一起使用。当您使用私有端点时,它是必需的。此设置和 WEBSITE_VNET_ROUTE_ALL 会将所有出站呼叫从您的应用程序发送到您的虚拟网络。
WEBSITE_VNET_ROUTE_ALL 1 创建此应用程序设置。当你的应用与虚拟网络集成时,它使用与虚拟网络相同的 DNS 服务器。你的函数应用需要此设置,以便它可以与 Azure DNS 专用区域一起使用。当您使用私有端点时,它是必需的。此设置和 WEBSITE_DNS_SERVER 会将所有出站呼叫从您的应用程序发送到您的虚拟网络。

注意:这168.63.129.16是 Azure DNS 的静态值。

设置完所有这些后,我的函数应用能够按预期通过 VNet 连接到存储帐户。

于 2021-05-19T16:47:03.360 回答