由于最近工作需要使用Openstack ,使用cURL操作Openstack对象存储的ReST API,这是本人找了好多资料完成的,这里记录下。
使用Openstack ,使用cURL操作Openstack对象存储的ReST API
cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。本文主要是介绍使用该工具和HTTP协议与swift服务如何交互。cURL允许你从命令行或shell脚本传送和接收HTTP的请求和响应。这使得直接与ReST的API工作而无需其他客服端APIs成为可能。本文,我们需要使用到以下的cURL命令行选项:
-X METHOD 描述HTTP的请求方法(HEAD, GET等) -D Dump 将HTTP响应头部到stdout.-H HEADER 描述一个在请求中的HTTP/HTTPS头部.-v 使用操作的过程更加详细
1.认证
In order to use the ReST API, you will first need to obtain a authorization token, which will need to be passed in for each request using the X-Auth-Token header. The following example demonstrates how to use cURL to obtain the authorization token and the URL of the storage system.
为了使用ReST的API,我们首先需要获得一个认证令牌,用于传给每个使用X-Auth-Token头部的请求。以下的例子展示了如何使用cURL来获得认证令牌和存储系统的URL。
Exp1:获得X-Storage-Url和X-Auth-Token
curl -D- -H 'X-Storage-User: test:tester' -H 'X-Storage-Pass: testing' http://127.0.0.1:8080/auth/v1.0
运行结果如下:
sting' http://127.0.0.1:8080/auth/v1.0HTTP/1.1 200 OKX-Storage-Url: http://127.0.0.1:8080/v1/AUTH_testX-Storage-Token: AUTH_tkf828cc87bb9348168a52619b1f7e3928X-Auth-Token: AUTH_tkf828cc87bb9348168a52619b1f7e3928Content-Length: 0Date: Fri, 07 Oct 2011 07:45:58 GMT
也可以使用-v选项来获得更详细的信息:
curl -v -H 'X-Storage-User: test:tester' -H 'X-Storage-Pass: testing' http://127.0.0.1:8080/auth/v1.0
运行结果如下:
* About to connect() to 127.0.0.1 port 8080 (#0)* Trying 127.0.0.1... connected* Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0)> GET /auth/v1.0 HTTP/1.1> User-Agent: curl/7.21.3 (i686-pc-linux-gnu) libcurl/7.21.3 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18> Host: 127.0.0.1:8080> Accept: */*> X-Storage-User: test:tester> X-Storage-Pass: testing> < HTTP/1.1 200 OK< X-Storage-Url: http://127.0.0.1:8080/v1/AUTH_test< X-Storage-Token: AUTH_tkf828cc87bb9348168a52619b1f7e3928< X-Auth-Token: AUTH_tkf828cc87bb9348168a52619b1f7e3928< Content-Length: 0< Date: Fri, 07 Oct 2011 07:48:30 GMT< * Connection #0 to host 127.0.0.1 left intact* Closing connection #0
存储URL和认证令牌作为响应头部返回。在认证之后,你可以使用cURL来执行存储服务上的HEAD,GET,DELETE,POST和PUT请求。
2.确定存储的使用情况
一个HEAD请求可以发送到存储服务来确定你已经在系统中存储了多少数据以及你使用的容器数量。使用-X开关来描述正确的HTTP方法和-D将HTTP响应头部输出到终端(stdout)。
Exp2:查询帐号的存储使用情况
curl -X HEAD -D - / -H "X-Auth-Token:AUTH_tkf828cc87bb9348168a52619b1f7e3928" / http://127.0.0.1:8080/v1/AUTH_test
新闻热点
疑难解答