如何获取已横向扩展的Azure Web App各实例的IP地址?
我来帮你梳理几种获取Azure多实例Web App每个实例IP地址的实用方法:
方法1:使用Azure Resource Graph快速查询
这是最便捷的方式之一,不用逐个调用实例API就能批量获取所有实例的IP。
用Azure CLI执行查询
替换命令里的<your-site-name>为你的Web App名称,然后运行:
az graph query -q " resources | where type == 'microsoft.web/sites/instances' | where name contains '<your-site-name>' | project name, privateIpAddress = properties.privateIpAddress, location "
用Azure Portal查询
打开Portal的Resource Graph Explorer,粘贴上面的Kusto查询语句,执行后就能看到所有实例的名称和对应私有IP。
方法2:调用Azure Management API获取实例详情
你已经能拿到实例名称列表了,接下来针对每个实例调用详情API即可获取IP:
API请求格式
替换所有占位符({SubscriptionID}、{ResourceGroupName}、{SiteName}、{InstanceName}):
https://management.azure.com/subscriptions/{SubscriptionID}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Web/sites/{SiteName}/instances/{InstanceName}?api-version=2022-03-01
这里的{InstanceName}就是你从之前的实例列表API中拿到的name字段值。
响应示例
API返回的内容里,properties节点下的privateIpAddress就是该实例的私有IP:
{ "id": "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Web/sites/xxx/instances/xxx", "name": "xxx", "properties": { "privateIpAddress": "10.2.3.4", // 其他实例属性... } }
注意:Azure Web App实例本身没有独立的公网IP,公网流量通过前端负载均衡器转发,所以你获取到的是实例的私有IP。
方法3:从Web App实例内部获取IP
如果你的应用代码需要获取当前运行实例的IP,可以通过Azure实例元数据服务(IMDS)直接获取:
在应用中发起GET请求到以下地址(无需身份验证):
http://169.254.169.254/metadata/instance/network/interface/0/ipv4/ipAddress/0/privateIpAddress?api-version=2021-02-01&format=text
这个请求会直接返回当前实例的私有IP。如果需要完整的网络信息,可以把路径改为:
http://169.254.169.254/metadata/instance/network?api-version=2021-02-01&format=json
内容的提问来源于stack exchange,提问作者Umesh Deshmukh
相关产品推荐
相关产品推荐

