在Azure VM上查询元数据时,publicIpAddress没有值,即使计算机是公共IP。
curl -H Metadata:true "http://169.254.169.254/metadata/instance?api-version=2019-11-01"
为publicIpAddress返回空字符串
{
"compute": {
// ... Omitted for brevity
},
"network": {
"interface": [
{
"ipv4": {
"ipAddress": [
{
"privateIpAddress": "10.3.0.4",
"publicIpAddress": ""
}
],
// ... Rest has been omitted for brevity
有人知道为什么吗?我检查了https://learn.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service,但找不到任何原因导致公共IP地址不显示
2条答案
按热度按时间i2loujxw1#
我相信您的公网IP是Standard SKU,而不是Basic SKU,不支持示例元数据服务。
来自MSDN:
使用示例元数据服务IMDS时,仅支持基本SKU的公网IP地址,不支持标准SKU。
这个GitHub Issue也有更多的信息。
我还使用基本和标准SKU公有IP地址对此进行了测试,当查询示例元数据示例API时,标准SKU将给予您
"publicIpAddress":""
。解决方案
为了能够使用示例元数据服务,您需要使用基本SKU公网IP地址。公网IP地址创建后,您 * 无法 * 更改SKU,MSDN中已突出显示。
您可以先解除标准SKU公网IP示例与虚拟机网络接口的关联,使用基本SKU创建一个新的公网IP,然后将此公网IP与虚拟机网络接口关联。这是必需的,因为一个网络接口只能关联一个公网IP。
检查公网IP SKU
您可以从Azure PowerShell命令运行
Get-AzPublicIpAddress
来检查您的公共地址SKU:或者从Azure CLI使用
az network public-ip show
(如果您愿意):或者通过Azure门户导航到公共IP地址示例进行检查。
1bqhqjot2#
我的回答可能太晚了,但这将帮助其他人谁正在寻找这个解决方案.是的,因为RoadRunner提到你不能从上述API访问一个标准SKU公共IP.
解决方案是查询负载均衡器API端点,它将返回VM的标准公网IP地址列表。
API调用:
您也可以使用更新的API版本。
回复:
publicIpAddresses将包含与VM关联的所有标准IP。
密钥frontendIpAddress为VM的公网IP地址。