本文共 7452 字,大约阅读时间需要 24 分钟。
Account(账户) Container(容器) Object(对象) metadata(元数据)
接口名称: | 获取一个token ID |
接口定义: | curl -X POST -d ' {"auth": {"tenantName": “{租户名}”, "passwordCredentials": { "username": “{用户名}”, "password": “{用户密码}”} } }' -H "Content-type: application/json" | python -mjson.tool |
传入参数定义: | {"tenantName": “{租户名}”, "passwordCredentials": { "username": “{用户名}”, "password": “{用户密码}”} } |
返回结果: | 返回结果很长,token字段如下: "token": { "expires": "2013-07-20T08:15:57Z", "id": "c38bcd05c19a4ec7b7f8d0c58b110aac", "tenant": { "description": null, "enabled": true, "id": "321879173bf44366a76ba34e84d71d00", "name": "service" } }, 在以下的接口操作中,都需要从该token中获取它的id,以及其对应租户(tenant)的id。 |
协议: | http |
示例: | keystone: curl -X POST -d '{"auth": {"tenantName": "service", "passwordCredentials":{"username": "root", "password": "passwd"}}}' -H "Content-type: application/json" | python -mjson.tool tempauth: curl -k -v -H 'X-Storage-User: vtc:vtc' -H 'X-Storage-Pass: transcode' |
接口名称: | 存储状态查询 |
接口定义: | curl -s http://localhost:8080/v1/AUTH_{Tenant_id} \ -X HEAD \ -D -\ -H "X-Auth-Token: { Token_id}" |
传入参数定义: | Tenant_id:租户id Token_id:租户对应的token的id |
返回结果: | 返回当前租户容器和对象数量 |
协议: | http |
示例: | curl -s -X HEAD -D - -H "X-Auth-Token: a3301390309943818d35816fefea50c5" |
接口名称: | 获取容器列表 |
接口定义: | curl -s http://localhost:8080/v1/AUTH_{Tenant_id} \ -X GET \ -D -\ -H "X-Auth-Token: { Token_id}" 如果需要指定输出几个容器可以在加上后缀?limit=number如果需要指定格式,加上后缀?format=json |
传入参数定义: | Tenant_id:租户id Token_id:租户对应的token的id |
返回结果: | 返回当前租户下所有的容器 |
协议: | http |
示例: | curl -s -X GET -H "X-Auth-Token: 1cb6d6b77ef54274870490b5f1e5e6a3" |
接口名称: | 创建容器 |
接口定义: | curl -s http://localhost:8080/v1/AUTH_{Tenant_id}/{Container_name} \ -X PUT \ -D -\ -H "X-Auth-Token: { Token_id}" |
传入参数定义: | Tenant_id:租户id Container_name: 所创建的容器名称 Token_id:租户对应的token的id |
返回结果: | 如果创建成功,返回“201 Created” |
协议: | http |
示例: | curl -s -X PUT -H "X-Auth-Token: 1cb6d6b77ef54274870490b5f1e5e6a3" |
接口名称: | 查看容器的metadata |
接口定义: | curl -i -s http://localhost:8080/v1/AUTH_{Tenant_id}/{Container_name} \ -X HEAD \ -D -\ -H "X-Auth-Token: { Token_id}" |
传入参数定义: | Tenant_id:租户id Container_name: 所删除的容器名称 Token_id:租户对应的token的id |
返回结果: | 返回container的matadata。 |
协议: | http |
示例: | curl -i -s -X HEAD -D - -H "X-Auth-Token: a3301390309943818d35816fefea50c5" |
接口名称: | 删除容器 |
接口定义: | curl -s http://localhost:8080/v1/AUTH_{Tenant_id}/{Container_name} \ -X DELETE \ -D - -H "X-Auth-Token: { Token_id}" |
传入参数定义: | Tenant_id:租户id Container_name: 所删除的容器名称 Token_id:租户对应的token的id |
返回结果: | 如果删除成功,什么也没返回。可以使用列出容器的api验证。 |
协议: | http |
示例: | curl -s -X DELETE -D - -H "X-Auth-Token: 1cb6d6b77ef54274870490b5f1e5e6a3" |
接口名称: | 列出容器对象 |
接口定义: | curl -s http://localhost:8080/v1/AUTH_{Tenant_id}/{Container_name}[?parm=value] \ -X GET \ -D - -H "X-Auth-Token: { Token_id}" |
传入参数定义: | Tenant_id:租户id Container_name: 容器名称 Token_id:租户对应的token的id |
返回结果: | 如果容器中的对象超过10000,则默认返回按字母排序的前10000个对象,关于如何返回后面的对象请参考OpenStack Swift官方API |
协议: | http |
示例: | curl -s -X GET -D - -H "X-Auth-Token: 1cb6d6b77ef54274870490b5f1e5e6a3" |
接口名称: | 创建对象 |
接口定义: | curl –X PUT -i \ -D - -H "X-Auth-Token: { Token_id}" \ -T {obj_path} \ http://localhost:8080/v1/AUTH_{Tenant_id}/{Container_name}/{obj_name} |
传入参数定义: | Tenant_id:租户id Obj_path:对象的完整路径 obj_name:对象名称 Container_name: 容器名称 Token_id:租户对应的token的id |
返回结果: |
|
协议: | http |
示例: | curl -s -T ~/install.log -X PUT -D - -H "X-Auth-Token: 1cb6d6b77ef54274870490b5f1e5e6a3" |
接口名称: | 删除对象 |
接口定义: | curl -s http://localhost:8080/v1/AUTH_{Tenant_id}/{Container_id}/{object_name} \ -X DELETE \ -D - -H "X-Auth-Token: { Token_id}" |
传入参数定义: | Tenant_id:租户id Obj_name:对象名称 Container_name: 所删除的容器名称 Token_id:租户对应的token的id |
返回结果: | 无返回 |
协议: | http |
示例: | curl -s -X DELETE -D - -H "X-Auth-Token: 1cb6d6b77ef54274870490b5f1e5e6a3" |
接口名称: | 下载对象 |
接口定义: | curl -s http://localhost:8080/v1/AUTH_{Tenant_id}/{Container_id}/{object_name} >Dest path\ -X GET -D -\ -H "X-Auth-Token: { Token_id}" |
传入参数定义: | Tenant_id:租户id Obj_name:对象名称 Container_name: 所删除的容器名称 Token_id:租户对应的token的id Dest path:下载到的目标文件的path |
返回结果: | 无返回 |
协议: | http |
示例: | curl -s -X GET -H "X-Auth-Token: 1cb6d6b77ef54274870490b5f1e5e6a3" |
接口名称: | 查看对象的metadata |
接口定义: | curl -k -i -s -X HEAD -D -\ -H "X-Auth-Token: { Token_id}" |
传入参数定义: | Tenant_id:租户id Obj_name:对象名称 Container_name: 所删除的容器名称 Token_id:租户对应的token的id |
返回结果: | 在HTTP头中返回对象的metadata,自定义的metadata都带有X-Object-Meta前缀 |
协议: | http |
示例: | curl -k -i -s -X HEAD -D - -H "X-Auth-Token: a3301390309943818d35816fefea50c5" |
接口名称: | 更新对象的metadata,一个对象的所有metadata总大小不能超过4KB,而且metadata个数不能超过90个 |
接口定义: | curl -k -i -s -X POST \ -H "X-Object-Meta-metadata_name:new_value" \ -H "X-Auth-Token: { Token_id}" |
传入参数定义: | Tenant_id:租户id Obj_name:对象名称 Container_name: 所删除的容器名称 Token_id:租户对应的token的id |
返回结果: | 返回202,表示accepted |
协议: | http |
示例: | curl -k -i -s -H "X-Timestamp:1375243435.75728" -X POST -H "X-Auth-Token: a3301390309943818d35816fefea50c5" |
swift提供的命令行接口进行操作。
command | function | example |
stat [container] [object] | 获取容器或者对象的状态信息 | swift -V 2 -A -U service:root -K passwd stat |
list [options] [container] | 获取容器的对象列表 | swift -V 2 -A -U service:root -K passwd list codecloud |
upload [options] container file_or_directory [file_or_directory] [...] | 上传对象到指定容器 | swift -V 2 -A -U service:root -K passwd upload codecloud install.log |
post [options] [container] [object] | 对容器,账号和对象的metadata进行修改,如果没有,就会创建一个新容器。 | swift -V 2 -A -U service:root -K passwd post codecloudnew |
download --all OR download container [options] [object] [object] | 下载对象 | swift -V 2 -A -U service:root -K passwd downlaod codecloud install.log |
delete [options] --all OR delete container [options] [object] [object] ... | 删除对象 | swift -V 2 -A -U service:root -K passwd delete codecloud install.log |
关于Api更多的细节参考:
接口名称: | 匿名读取container及其下面的object |
接口定义: | curl -k -i -s -X PUT \ -H "X-Container-Read: .r:*"\ -H "X-Container-Write: .r:*"\ -H "X-Auth-Token: { Token_id}" |
传入参数定义: | Tenant_id:租户id Container_name: 所删除的容器名称 Token_id:租户对应的token的id |
返回结果: | 返回201,表示成功 |
协议: | http |
示例: | curl -s -X PUT -H "X-Container-Read: .r:*,.rlistings" -H "X-Auth-Token: ae93a81d50d643d8ae4d8cef67f667fb curl -s -X PUT -H "X-Container-Write: .r:*" -H "X-Auth-Token: 1ed0e9900cd84ecc9f6b71f3d7b2726c
|
Next, if you use keystone you need(!!!!) to set in /etc/swift/proxy-server.conf
[]
paste.filter_factory = keystone.middleware. # Delaying the auth decision is required to support token-less # usage for anonymous referrers (‘.r:*’). delay_auth_decision = 1
然后可以匿名访问这个容器和下面的对象了
wget
接口名称: | 设置container读和写的权限(单独设置某一个账号对这个container的读或者写(读)的权限 |
接口定义: | curl -k -i -s -X PUT \ -H "X-Container-Read: tenant_name:account_name"\ -H "X-Container-Write:tenant_name:account_name"\ -H "X-Auth-Token: { Token_id}" |
传入参数定义: | Tenant_id:租户id Container_name: 所删除的容器名称 Token_id:租户对应的token的id |
返回结果: | 返回201,表示成功 |
协议: | http |
示例: | curl -k -i -s -H 'X-Container-Read: ' -X PUT -D - -H "X-Auth-Token: 5d95cfbfe970498188fb0c568ed0670a" #这个账户对testcontainer有读的权限 |
转载地址:http://vmbii.baihongyu.com/