阅读:4447回复:0
CloudStack API编程指南
角色:
CloudStack API支持三种角色访问:
所有CloudStack API请求都是以HTTP GET/POST的形式提交,一个请求包含下面三部分:
http://localhost:8080/client/api ?command=deployVirtualMachine &serviceOfferingId=1 &diskOfferingId=1 &templateId=2 &zoneId=4 &apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXqjB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ &signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D #第1行就是CloudStack API的URL; ####第2行表示我们想要执行的命令; ###第3-6行是该命令所需的参数,命令和参数的详情具体可以参考API文档; ##第7行是唯一标识用户的账户的API Key; #第8行是用来认证用户账户执行API命令权限的签名的哈希值 API请求的签名 不管你是通过HTTP还是HTTPS的方式访问CloudStack API,都必须对请求进行签名从而让CloudStack能确认调用者已经被认证和授权执行该命令。在进行签名之前先确认你拥有API Key和管理员提供给你的账户的私钥。 以上面的API请求为例子,每个API请求都包含以下几个部分:
在不安全的通道如HTTP上,我们可以设置一个API调用逾期时间戳来防止重播攻击(replay attacks),服务器会追踪这个时间戳,并拒绝超过这个期限的后续的所有API调用。 在API请求中加入以下参数可实现这个特性:
避免对管理服务器的恶意攻击,防止性能下降以及对所有账户提供一致性,当API调用超过一定阈值后会向这些调用返回错误信息。调用者需要等待一段时间后重试一下。可以通过一下全局参数来设置API的调用频率限制:
CloudStack支持两种响应格式:XML和JSON,默认的响应是XML,可以在请求URL中使用&response=json来设置JSON格式的响应。使用JSON格式时,如果一个响应的键没有值,则该键不会出现在响应中,而XML仍会返回一个空的元素。 最大返回结果页 对于每个云,一个命令在一个页面中返回的结果数有一个默认的上限,以此来防止云服务器过载和防止DOS攻击。 每个云的默认上限值是不同的,通过全局参数default.page.size来配置。如果云上有许多用户运行了许多虚拟机的话,可以把这个值设置大一点,但要小心不要设置得太大了。 错误处理 如果在处理一个API请求的时候发生了错误,会返回特定格式的响应。每个错误信息响应包含一个错误代码和一个文本描述可能出错的原因。 如果用户的签名错误或没有权限导致请求被拒绝会返回一个HTTP 401错误 异步命令 异步命令可以隐式地执行那些耗时很长的任务,如创建一个快照。它和同步命令有以下几点不同:
|
|
最新喜欢:曾昭洪 |