设为首页 收藏本站
查看: 1320|回复: 0

[经验分享] OpenStack Object Storage Developer Guide/Swift官方API文档

[复制链接]

尚未签到

发表于 2015-4-11 14:42:49 | 显示全部楼层 |阅读模式
  关于开源代码的学习,主要就只接触过XMPP服务端实现Openfire和现在的Swift了。想想这段时间对swift学习的停滞感,越来越觉得“如果想要学习一个东西的原理,首先要会使用它”,这会在一定程度上增加对功能处理流程的理解,并在源码阅读时产生共鸣。
  对于swift API的学习,由于之前一直没有找到比较系统的资料,官方文档主页上也没有相关的链接,所以都是对照着swift-python-client的curl命令自己进行整理,这几天突然发现swift官方文档主页上增加了Swift’s API docs链接!内容非常的全,以前真没见到过哎,可能藏的太深,哈哈哈,PDF请点击这里下载。
  在文档的1.2小节document change history,中可以看到本文档是《Rackspace Cloud Files Developer Guide》的分支。整体阅读了一遍,发现很多细节内容是自己以前所不知的,比如分段返回信息、超过5GB的大文件上传等,为了给后续自己开发实验室的API做准备,所以决定试着翻译一下,也可以作为小组内工作共享。
  文档中的内容主要分为4部分:



1. Overview
2. General API Information
3. API Operations for Storage Services
4. Troubleshooting and Examples
  第1部分主要是对swift进行了简单的介绍,指明了本篇文档的目标读者、给出文档更改记录、其他资源链接;第4部分其实主要是介绍如何使用curl与swift进行交互的,以绕过代码层面的交互,并返回请求/相应的详细信息。其实看完前三个部分,对着命令行敲敲curl命令就可以理解了,很简单。我这个人还是很懒的,所以第1和第4部分就不打算翻啦=D
  现在,就让我们愉快的开始吧!
  =============================================================================
  2. API基本信息


  2.1. 认证
2.2. API操作概述
  API操作参考摘要

Accounts存储


Verb
URI
描述


GET
/account
获取当前account下的containers列表


HEAD
account
获取account元数据信息
  
  
  
  

Container存储


Verb
URI
描述


GET
/account/container
获取当前container下的objects列表


PUT
/account/container
创建container


DELETE
/account/container
删除container


HEAD
/account/container
获取container元数据信息
  
  
  
  
  

Object存储


Verb
URI
描述


GET
/account/container/object
获取object


PUT
/account/container/object
创建/更新object


PUT
/account/container/object
分块传输编码


DELETE
/account/container/object
删除object(原文档这里有误)


HEAD
/account/container/object
获取object元数据信息


POST
/account/container/object
更新object元数据信息
  
  
  
  
  
  
  
  2.1. 认证(Authentication)
  客户端认证由ReST接口的GET方法提供,并使用 v1.0 作为路径。此外,有两个头信息必须提供:X-Auth-User X-Auth-Key,它们的值分别为用户名和API访问Key。
  每一个访问OpenStack对象存储系统的ReST请求都必须在HTTP头中包含一个特定的头信息:X-Auth-Token,这个header的值即为用户的访问认证token。客户端需要维护好这个token,同时也需要维护好其对应的云端服务器的API URI,这两个值都是在客户端第一次使用用户名和API访问Key进行认证服务的时候返回的。
  请求
  如果要进行认证,你必须提供你的用户名和API访问Key,并用这两个值设置HTTP请求头的x-headers:


  • 使用你的OpenStack对象存储(Swfit)用户名作为API访问的用户名。将用户名存储在请求头的 X-Auth-User 中。
  • 从你安装时所选择的认证服务中获取你的API访问Key。关于认证,你可以有几个选择,包括tempauth(swift中自带的)、swauth(这是一种将swift的认证服务作为WSGI中间件的方式,它使用swift本身作为后端存储,swauth可以通过Github进行下载)、OpenStack认证服务(KeyStone),或者你也可以使用自己的认证系统。将API访问Key存储在请求头的 X-Auth-Key 中。
    例2.1. 认证请求



GET /v1.0 HTTP/1.1
Host: auth.api.yourcloud.com
X-Auth-User: jdoe
X-Auth-Key: a86850deb2742ec3cb41518e26aa2d89
  响应
  当认证成功时,一个状态码为204(没有Content)且包含头信息 X-Storage-Url X-Auth-Token 的HTTP响应会被返回。任何一个状态码为2xx的响应都是一个好的响应。比如,一个202响应意味着请求已经被接受了。当然,一个额外的x-headers也有可能被返回。这些额外的头信息与其他的Rackspace服务相关也可以被忽略。当认证失败时,会返回一个状态码为401(未授权)的响应。所有子路径为container/object的OpenStack对象存储操作都应该使用 X-Storage-Url 中指定的URI作为访问基路径,且必须包含 X-Auth-Token 头。
    例2.2. 认证响应



HTTP/1.1 204 No Content
Date: Mon, 12 Nov 2010 15:32:21 GMT
Server: Apache
X-Storage-Url: https://storage.swiftdrive.com/v1/CF_xer7_34
X-Auth-Token: eaaafd18-0fed-4b3a-81b4-663c99ec1cbb
Content-Length: 0
Content-Type: text/plain; charset=UTF-8
  X-Storage-Url 需要在后续的连接和所有对象存储请求中作为基URI解析和使用。在例2.2中,用户后续连接OpenStack对象存储进行container/object请求时,大部分情况下都需要使用storage.swiftdrive.com作为主机头、/v1/CF_xer7_34作为请求版本和账户。需要注意的是,在很多种认证配置中,认证token的有效期只有24个小时。
  
  2.2. API操作概述
  OpenStack对象存储的API被实现成一套ReSTful(Representational State Transfer) web services的集合,所有的认证和container/object操作都可以通过标准的HTTP调用实现。可以查看维基百科获取更多关于ReST的信息。
  以下内容为ReST API HTTP请求中的一些限制:


  • 每个请求的HTTP headers数目最多为90;
  • 所有HTTP headers的长度最大为4096 bytes;
  • 每个HTTP请求行(HTTP request line)的最大长度为8192 bytes;
  • 每个HTTP请求的最大长度为5 GB;
  • container名称的最大长度为256 bytes;
  • object名称的最大长度为1024 bytes
  Container和object的名字在与ReST接口进行交互前必须被进行适当的URL编码,此外,container和object的名字也必须是UTF-8编码的。应该在进行URL编码后字符串上进行长度约束的检测。
  每一个面向OpenStack对象存储系统的ReST请求都需要包含一个指定的认证token的HTTP头—— X-Auth-Token。客户端在第一次使用用户名和API访问Key进行认证时获取这个token,同时也获取OpenStack对象存储的URLs。
  使用 X-Storage-Url 识别的ReST服务用语管理存储在系统中的数据。例如创建container和上传object的操作。
  在下一节中,我们将介绍每个HTTP方法调用与服务的对应关系。比如,一个针对 X-Storage-Url 的PUT请求有可能是用于创建一个container或上传一个对象的。
  特定语言的APIs将程序员与系统实现细节隔离开。程序员只需要简单的使用适当的ReST API就可以创建一个container、标记其为公共的,并处理调用将其分配到适当的后端服务。
  注意:



所有认证请求和针对OpenStack对象存储的操作都通过HTTP(HTTPS)的SSL执行,并使用TCP 443端口。
  
  哎,翻的好烂,自己都受不了了T^T
  
  
    
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-56024-1-1.html 上篇帖子: Openstack Grizzily 单节点测试机安装( All In One Ubuntu12.04) 下篇帖子: 利用Qemu Guest Agent (Qemu-ga) 实现 Openstack 监控平台
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表