代码之家  ›  专栏  ›  技术社区  ›  gog

如何使用Azure SDK获取虚拟机公共IP?

  •  1
  • gog  · 技术社区  · 6 年前

    即时通讯使用 Microsoft.Azure.Compute.Fluent sdk列出我所有的vm和它的工作正常,除了我不能得到公共IP地址:

        IVirtualMachines _client = azure.VirtualMachines; 
        var list = await _client.ListAsync();
    
        foreach (var instance in list)
        {
            var name = instance.Name;
            var ip = instance.GetPrimaryPublicIPAddress().IPAddress;
            //ip = null here;
        }
    

    我尝试过其他方法,但总是把公共IP设为空。

    如何正确检索公共IP?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Ivan Glasenberg    6 年前

    如果我误解了,请纠正我:我找不到SDK 微软.azure.compute.fluent (截图如下):

    enter image description here

    所以我使用这个SDK 微软.azure.management.fluent 取而代之的是 official doc 也使用它)。IP可以在我这边获取,代码如下:

    using Microsoft.Azure.Management.Compute.Fluent;
    using Microsoft.Azure.Management.Fluent;
    using Microsoft.Azure.Management.ResourceManager.Fluent;
    using Microsoft.Azure.Management.ResourceManager.Fluent.Core;
    using System;
    using System.Threading.Tasks;
    
    namespace myVMDotnetProject
    {
        class Program
        {
            static void Main(string[] args)
            {
                GetVMInfo();
    
                Console.WriteLine("okok");
                Console.ReadLine();
            }
    
    
            static async Task  GetVMInfo()
            {
                var credentials = SdkContext.AzureCredentialsFactory.FromFile(Environment.GetEnvironmentVariable("AZURE_AUTH_LOCATION", EnvironmentVariableTarget.User));
    
                var azure = Azure
                    .Configure()
                    .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
                    .Authenticate(credentials)
                    .WithDefaultSubscription();
    
                IVirtualMachines _client = azure.VirtualMachines;
                var list = await _client.ListAsync();
    
                foreach (var instance in list)
                {
                    var name = instance.Name;
                    var ip = instance.GetPrimaryPublicIPAddress().IPAddress;
                    Console.WriteLine("name: " + name + ", ip: " + ip);
                }
            }
    
        }
    }
    

    测试结果如下:

    enter image description here