CloudStack API调用

CloudStack  API调用

<1>制作API请求

所有的CloudStack API请求是以HTTP GET / POST有一个关联的命令和任何参数的形式提交的。无论在HTTP或HTTPS中请求都由一下组成:

l  CloudStack API URL:这是Web服务的API入口点(例如,http://域名:8080/client/api)。

l  命令(Command):Web服务命令要执行,如启动虚拟机或创建一个磁盘卷。

l  参数(Parameters):任何额外的要求或命令的可选参数。

一个API GET请求示例如下:

http://localhost:8080/client/api?command=deployVirtualMachine&serviceOfferingId=1&diskOfferingId=1&templateId=2&zoneId=4&apiKey=miVr6X7u6bjB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D

 

或如下一个更可读的示例:

1. http://localhost:8080/client/api?command=deployVirtualMachine

3. &serviceOfferingId=1

4. &diskOfferingId=1

5. &templateId=2

6. &zoneId=4

7.&apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXqjB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ

8. &signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D%3D

 

 

第1行是的CloudStackAPI URL。这是你希望进行交互的云实例。

第2行是指你要执行的命令。在我们的例子中,我们试图部署一个新的虚拟机。通过前面的一个(?)将要执行的命令从CloudStack API URL中分离出来。

第3-6行是此命令的参数。要查看命令和请求参数,请参阅在CloudStack API文档的相应部分。每个参数字段-值对(field =value)通过前面的字符(&)分隔开。

第7行是可以唯一标识帐户的APIkey。请参阅第9页上的签名API请求。

第8行是创建的签名哈希来验证用户帐户执行的API命令。

请参阅第9页上的签名API请求。

2启用API调用过期

您可以设定的到期时间戳记API调用以防止重放攻击通过非安全通道,如HTTP。服务器跟踪您所指定的到期时间戳记,并拒绝所有后续的API请求,在此有效期后。

要启用此功能,将以下参数添加到API请求:

·signatureVersion = 3:如果signatureVersion参数丢失或不等于3,在到期的API请求参数将被忽略。

·expires=YYYY-MM-DDThh:mm:ssZ:指定在哪些包含在请求中的签名已过期的日期和时间。时间戳表示YYYY-MM-DDTHH:MM:SSZ格式,ISO 8601标准中规定的。例子如下:expires=2011-10-10T12:00:00+0530。

 

下面给出了一个到期API请求示例:

 

http://<IPAddress>:8080/client/api?

command=listZones&signatureVersion=3&expires=2011-10-10T12:00:00+0530&apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D%3D

3 API 请求签名

无论你使用HTTP还是使用HTTPS访问CloudStack API,它仍必须签署CloudStack可以验证调用者的身份验证和授权来执行命令。

请确保你有由CloudStack管理员为您的帐户提供的API Key和Secret Key,然后再进行签名的过程。为了显示如何注册请求,我们将再次使用前面的例子。

 

http://localhost:8080/client/api?command=deployVirtualMachine&serviceOfferingId=1&diskOfferingId=1&templateId=2&zoneId=4&apiKey=miVr6X7u6bjB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D

  

每个API请求的格式:基本URL(Base URL)+ API路径(API Path)+命令字符串(CommandString)+签名(Signature)。

为了生成签名(可以用以下步骤实现)。

1.在命令字符串的每个字段的值对(由一个“&”隔开),URL解析每个值以便它可以通过HTTP GET被安全地发送。

 

 

确保所有的空格被编码为“%20”,而不是“+”。

 

2.整个命令字符串(Command String)小写字母顺序并通过字段对每个字段- 值排序。这一步的结果如下:

 

apikey=mivr6x7u6bn_sdahobpjnejpgest35exqjb8cg20yi3yaxxcgpyuairmfi_ejtvwz0nukkjbpmy3y2bcikwfq&command=deployvirtualmachine&diskofferingid=1&se

 

3.通过验证用户的Secret Key以排序的命令字符串(Command String)并通过HMAC SHA-1散列算法(大多数编程语言提供了一个实用的方法来做到这一点)运行它。Base64编码所产生的UTF-8字节数组可安全地通过HTTP传输。经Base64编码后产生的最后字符串应该是:

“Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D”。

 

通过以基本URL(Base URL)+ API路径(API Path)+命令字符串(CommandString)+签名(Signature)的格式重构最终的URL,最后的URL应该如下:

 

http://localhost:8080/client/api?

command=deployVirtualMachine&serviceOfferingId=1&diskOfferingId=1&templateId=2&zoneId=4&apiKey=miVr6XjB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值