2

我正在尝试使用 Azure Java SDK 为我的 azure 虚拟机自动执行任务,例如在一天的不同阶段启动和停止它们

我在这里查看启动虚拟机的 azure 文档

有问题的方法签名如下

OperationResponse beginStarting(java.lang.String serviceName,
                            java.lang.String deploymentName,
                            java.lang.String virtualMachineName)
                     throws java.io.IOException,
                            ServiceException

我想知道 - 我在哪里可以在我的虚拟机的 azure 控制台上获取 serviceName 和 deploymentName 的值?

我尝试查看旧门户和新门户,但迄今为止我一直无法找到这些值

这个问题看起来与以下 url 中的问题重复,但它不是 Azure 查找部署名称

事实上,当您查看旧门户(https://manage.windowsazure.com)时 - 上面的链接给出了获取部署名称的正确答案

但是,如果您在旧门户中创建 VirtualMachine 并在新门户 ( https://portal.azure.com ) 中查看它 - 它会显示在 Virtual Machine Classic 选项下。借助上述链接,我能够使用 Java SDK 在经典虚拟机上执行操作

如果我在虚拟机选项(不是虚拟机(经典))下的新门户中创建虚拟机,我无法找到部署名称或服务名称

所以更新问题 - 如何在门户中找到虚拟机的部署名称和服务名称

另外 - 我在 SDK 中注意到的另一件事 - 如果您输入了错误的 serviceName - 它会记录部署名称错误 - 这让我在经典虚拟机上呆了一段时间

只是为了结束这个问题为了能够在非经典虚拟机上执行操作 - 使用这个 Maven 依赖项

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure-mgmt-compute</artifactId>
    <version>0.9.0</version>
</dependency>

对于非经典虚拟机上的操作 - 您需要使用 Active Directory 安全性 - 请参阅此链接 - https://azure.microsoft.com/en-us/documentation/articles/resource-group-create-service-principal-portal/ 要在经典虚拟机上执行操作 - 使用此 maven 依赖项

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure-svc-mgmt-compute</artifactId>
    <version>0.9.0</version>
</dependency>

对于经典虚拟机上的操作 - 您需要使用证书

4

2 回答 2

1

我没有使用过 Java SDK(所以我可能完全不在此列),但我认为您不能使用这个库在non-classic虚拟机上执行操作。这些 VM 是通过 Azure 资源管理器部署的,它们具有完全不同的资源管理机制。

查看这里的源代码:https ://github.com/azure/azure-sdk-for-java ,我相信您会在这里找到管理虚拟机的方法:https ://github.com/Azure/ azure-sdk-for-java/tree/master/resource-management/azure-mgmt-compute/src/main/java/com/microsoft/azure/management/compute

对于您的具体查询,请参阅此处的文档:http: //azure.github.io/azure-sdk-for-java/com/microsoft/azure/management/compute/VirtualMachineOperations.html#beginStarting-java.lang.String -java.lang.String-(这是您可以找到完整文档的地方 - http://azure.github.io/azure-sdk-for-java/)。

于 2016-01-09T15:42:24.543 回答
0

最近 azure 发布了 Java SDK 1.0.0 作为 LTS 版本。使用该 SDK。

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure</artifactId>
    <version>1.0.0</version>
</dependency>

启动和停止虚拟机

    ApplicationTokenCredentials credentials = new ApplicationTokenCredentials(clientId, tenantId, clientKey, AzureEnvironment.AZURE);
    Azure azure =  Azure.authenticate(credentials).withSubscription(subscriptionId);

azure.virtualMachines().start("resourceGroupName", "vmName");
azure.virtualMachines().powerOff("resourceGroupName", "vmName");

    azure.virtualMachines().getByResourceGroup("resourceGroupName", "vmName").start();
    azure.virtualMachines().getByResourceGroup("resourceGroupName", "vmName").powerOff();
        
        

但这些都是阻塞呼叫。您可以使用 startAsync() 方法以异步方式启动它。

于 2017-05-30T08:03:10.243 回答