StorageError: Forbidden - Azure Devops

StorageError: Forbidden - Azure Devops

我正在尝试通过 Azure DevOps 将 NodeJS 应用程序部署到函数应用程序,但在部署阶段出现以下错误:

StorageError: Forbidden

我的存储帐户在虚拟网络中(我的函数应用也是如此)并且有一些与之关联的防火墙规则。

如果我将存储帐户上的设置更改为 Public network access - Enabled from all networks,则管道可以正常工作。我需要将哪些 IP 地址添加到存储帐户防火墙才能使其正常工作?

您可以从 weekly JSON file. Here 下载 Microsoft-hosted 代理的 IP 地址是使用 C# 代码获取它的示例。 Microsoft-hosted 代理没有固定的 IP 地址。此文件每周更新一次。

如果您正在使用网络安全组或 Azure 防火墙,您可以使用服务标签Azure.Cloud.。此标记用于允许所有入站流量。但是,我们不建议在大多数情况下这样做,因为这意味着允许来自所有 Azure IP 的流量,包括其他 Azure 客户使用的流量。

如果您可以在管道中添加网络规则(例如,如果您使用的是 NSG,那么您可以使用 Azure CLI 创建网络规则),您可以使用以下 PowerShell 脚本获取当前代理 ip 地址,然后在部署前将其添加到网络规则并在管道末尾删除此规则:

$IP= Invoke-RestMethod http://ipinfo.io/json | Select -exp ip

最后,如果你不必使用Microsoft-hosted代理,在同一个虚拟机中使用Azure virtual machine scale set agent or self-hosted agent也是一个不错的选择您的存储帐户的网络。