如何解决使用 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,请参考以下步骤
- 开发工具包
<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());
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。