在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在Swift中,Swift3中间件在Object Storage上提供了S3 REST 风格的API。 目前支持的操作有以下几种: · GET Service · DELETE Bucket · GET Bucket (List Objects) · PUT Bucket · DELETE Object · GET Object · HEAD Object · PUT Object · PUT Object (Copy) 配置注意: 在proxy-server.conf配置swift3,并确保swift3在auth和其他查找swift请求的中间件之前。具体配置示例如下: [pipeline:main] pipeline = healthcheck cache swift3 swauth proxy-server
[filter:swift3] use = egg:swift#swift3 以SAIO的配置为例,使用AWS的boto python包来分析S3 API的使用,基本信息: account: test user:tester password: testing 0. 连接 文档中仅给出了一个连接例子,代码如下: connection = boto.s3.Connection( 但是我在测试时,发现存在问题,traceback如下: Traceback (most recent call last): File "/home/swift/tmp2.py", line 8, in <module> connection = boto.s3.Connection( AttributeError: 'module' object has no attribute 'Connection' 我估计是写错了,boto.s3.connection是一个module,我去阅读了boto的文档,正确写法应该是: connection = boto.s3.connection.S3Connection( 创建成功,无任何输出消息。 其中access_key和aws_access_key_id相同。 >>> connection.access_key 1. Container管理 Swift中Container的概念与S3中的Bucket相等。 使用以下语句创建一个bucket: >>> connection.create_bucket('1st')
如果再次创建相同名称的bucket,会出现409冲突错误: boto.exception.S3CreateError: S3CreateError: 409 Conflict 如果使用了大写字母也会出错,而使用rackspace的API则无此限制: >>> connection.create_bucket('1sT') boto.exception.BotoClientError: BotoClientError: Bucket names cannot contain upper-case characters when using either the sub-domain or virtual hosting calling format. 使用中文字符创建bucket,出现403 Forbidden错误: >>> connection.create_bucket('结果') boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden 此外,可以单独使用纯数字或下划线_创建bucket,不可以使用!@#$%&等符号。 也可以使用connecttion.create_bucket('media.userdomain.com')的风格来创建bucket。 检索bucket 使用get_all_buckets()来获得所有的buckets信息: >>> connection.get_all_buckets() 此外,使用get_bucket()来获得指定bucket,这里分别测试了小写字母、大写字母、不存在的、中文的bucket,其中大写字母的bucket可以获得,get不存在的bucket返回400 Bad Request,而get中文字符的bucket仍然返回403 Forbidden: >>> connection.get_bucket('sss') 删除bucket 使用delete_bucket()来删除指定的bucket,如果目标bucket不存在,返回400 Bad Request,中文的bucket仍然有问题。 >>> connection.delete_bucket('sss') 2. key管理 获得key列表 在swift中使用object的概念与S3中的key对应。 >>> con=connection.get_bucket('photos') #获得名为photos的bucket >>> con.get_all_keys() #获得key列表 创建key 使用以下流程创建了一个key,从本地磁盘上传了一张照片并设置了元数据。 >>> from boto.s3.key import Key 全部评论
专题导读
热门推荐
热门话题
阅读排行榜
|
请发表评论