我有一个 Azure 函数应用程序,它在托管标识下运行,通过集成子网连接到同一 vnet 中存储帐户的专用终结点。如果我允许所有网络流量访问存储,该函数可以正常工作,但是当我禁用公共访问时,该函数将失败并出现以下错误:
当我从函数应用程序执行 nslookup 时,它会解析为内部 IP 地址,但当函数应用程序访问存储时,它会使用不在我的 VNET 范围内的 IP 地址。
我已经解决这个问题一个多星期了,我真的不知道答案是什么?
任何见解都将受到欢迎
感谢您的见解@alex。
Function app=>Application Settings
中添加以下设置,参考MSDOC:WEBSITE_CONTENTOVERVNET=1
WEBSITE_VNET_ROUTE_ALL=1
检查 Azure Functions 应用程序是否与包含存储帐户的虚拟网络 (VNet) 正确集成。
确保您已为存储帐户创建并配置专用终结点,并且已正确链接到正确的子网和 VNet。
函数应用程序的托管标识应分配有
Storage Blob Data Contributor
以访问存储帐户。
Storage blob data contributor
角色分配给函数应用的托管标识。确保 NSG 规则(如果启用)允许 Azure Functions 子网和存储帐户子网之间的流量。
为 Azure Functions 应用和存储帐户启用日志记录,并检查日志以识别函数应用尝试访问存储帐户时发生的任何错误。
我在我的环境中通过禁用函数应用程序和存储帐户中的公共访问并与虚拟网络专用端点集成进行了相同的测试。
参考资料: