微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Java SDK 在 Avilability Zone 中部署 Azure VM 不起作用

如何解决使用 Java SDK 在 Avilability Zone 中部署 Azure VM 不起作用

我一直在尝试将 Azure VM 部署到可用区,如以下链接 https://azure.microsoft.com/en-us/blog/java-manage-availability-zones-and-more/,但我一直收到以下错误

cannot find symbol 
symbol:   method withAvailabilityZone(AvailabilityZoneId)
  location: interface WithCreate

似乎 Java 找不到 withAvailabilityZone 方法,但在上面的链接中它似乎工作正常。当我查看 Azure 文档时,唯一的 withAvailabilityZone 方法是在 withManagedCreate 类中,所以我不确定如何更改以下代码以匹配它:

VM_1 = azure.virtualMachines().define(name)
                    .withRegion(reg)
                    .withExistingResourceGroup(rg)
                    .withExistingPrimaryNetworkInterface(nI)
                    .withPopularLinuxImage(pli) 
                    .withExistingDatadisk(dd)
                    .withSize(type_1)
                    .withPriority(priority_var)
                    .withAvailabilityZone(availabilityZone) //error occurs here
                    .create();

解决方法

如果要使用java在Avilability Zone创建Azure VM,请参考以下步骤

  1. 开发工具包
<dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-identity</artifactId>
      <version>1.2.4</version>
    </dependency>
    
    <dependency>
      <groupId>com.azure.resourcemanager</groupId>
      <artifactId>azure-resourcemanager</artifactId>
      <version>2.2.0</version>
    </dependency>

2.代码

 String clientId="";
        String clientSecret="";
        String tenant="";
        String subId="";
        AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);
        TokenCredential credential = new ClientSecretCredentialBuilder()
                .authorityHost(profile.getEnvironment().getActiveDirectoryEndpoint())
                .tenantId(tenant)
                .clientId(clientId)
                .clientSecret(clientSecret)
                .build();
        AzureResourceManager azureResourceManager = AzureResourceManager
                .configure()
                .withLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS)
                .authenticate(credential,profile)
                .withSubscription(subId);


        VirtualMachine virtualMachine1 = azureResourceManager.virtualMachines()
                .define(vmName1)
                .withRegion(region)
                .withNewResourceGroup(rgName)
                .withNewPrimaryNetwork("10.0.0.0/28")
                .withPrimaryPrivateIPAddressDynamic()
                .withNewPrimaryPublicIPAddress(pipName1)
                .withPopularLinuxImage(KnownLinuxVirtualMachineImage.UBUNTU_SERVER_16_04_LTS)
                .withRootUsername(userName)
                .withRootPassword(password)
                // Optional
                .withAvailabilityZone(AvailabilityZoneId.ZONE_1)
                .withSize(VirtualMachineSizeTypes.fromString("Standard_D2a_v4"))
                // Create VM
                .create();
        System.out.println("Created a zoned virtual machine: " + virtualMachine1.id());

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。