Azure功能:访问存储帐户时出现403错误

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

我尝试在函数的配置中添加AzureWebJobsStorage密钥 我尝试添加Azure存储帐户的允许IP范围的出站IP 我尝试检查允许对存储帐户使用Azure管理服务的选项。

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

尽管,如果我允许所有网络使用存储帐户防火墙和VN设置,则我的功能可以正常运行。

功能和存储帐户都在同一区域。

我想以某种方式启用它,而无需选择允许所有网络。该怎么办?

woshicch 回答:Azure功能:访问存储帐户时出现403错误

已经有关于此问题的一些答案,您可以看到herehere

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

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

,

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

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

我添加了 code 来确定函数应用从哪个 IP 运行。这导致我在功能应用 --> 属性 --> // This closure will return the full directory path of folder where your classes are built ext.moduleClassPath = { moduleName -> def classOutputDirConst = "/classes/java/main" return "${project(":${moduleName}").buildDir}${classOutputDirConst}" } // Now jar task will include only the built file of specified project jar { from(moduleClassPath("projectName1"),moduleClassPath("projectName2")) } 下的门户中添加所有 IP。如果使用它,则 Terraform 会暴露它。

尝试修复 #2(更好):

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

见:Microsoft documentation

设置 建议值 说明
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 会将来自您的应用的所有出站调用发送到您的虚拟网络。

注意:Additional Outbound IP Addresses 是 Azure DNS 的静态值。

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

本文链接:https://www.f2er.com/2724603.html

大家都在问