如何通过Azure管理API打开/关闭Azure虚拟机(其余)

时间:2017-10-06 14:38:02

标签: c# azure azure-management-api

我想为自己创建一个启动/停止Azure VM bot。我想做的是有一个松弛/电报机器人,它通过命令/开始/停止来监听消息并启动/停止我的VM。我应该使用什么REST api命令来做到这一点?

需要什么:

C#中的一些示例代码调用azure管理API来启动解除分配的虚拟机

一些参考,我可以获取API方法参数的值(例如订阅ID,资源ID等)。

同时

我已阅读this个问题,但它并没有帮助我理解如何处理授权以及从何处获取这些参数。

我正在使用C#语言创建该机器人。

1 个答案:

答案 0 :(得分:2)

  

调用azure管理API来启动解除分配的虚拟机

Virtual Machines REST API列出虚拟机上的操作。要启动虚拟机,您可以尝试this API

POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Compute/virtualMachines/{vm}/start?api-version={apiVersion}
  

我可以获取API方法参数的值(例如订阅ID,资源ID等)。

您可以在Azure门户网站上找到{subscriptionId}{ resourceGroup}

enter image description here

  

如何处理授权

您可以检查this article以开始使用Azure REST操作并请求身份验证。您可以参考以下代码来获取访问令牌。

string tenantId = "{tenantId}";
string clientId = "{clientId}";
string clientSecret = "{secret}";
string subscriptionid = "{subscriptionid}";

string authContextURL = "https://login.windows.net/" + tenantId;
var authenticationContext = new AuthenticationContext(authContextURL);
var credential = new ClientCredential(clientId, clientSecret);
var result = await authenticationContext.AcquireTokenAsync(resource: "https://management.azure.com/", clientCredential: credential);

if (result == null)
{
    throw new InvalidOperationException("Failed to obtain the JWT token");
}

string token = result.AccessToken;

此外,本文还介绍了如何create AD application and service principal that can access resources,请参考它。