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 | 
 CloudStack API 调用指南
CloudStack API 调用指南
         
                   
                   
                   
                   
                             本文介绍了如何使用 CloudStack API 进行虚拟机部署等操作,详细讲解了 API 请求的构成要素,包括 URL、命令及参数设置,并演示了如何生成及验证 API 请求签名。
本文介绍了如何使用 CloudStack API 进行虚拟机部署等操作,详细讲解了 API 请求的构成要素,包括 URL、命令及参数设置,并演示了如何生成及验证 API 请求签名。
           
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   500
					500
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            