S3 Client

S3 Client

Alluxio支持RESTful API,兼容Amazon S3 API 的基本操作。

REST API 手册会在Alluxio构建时生成并且可以通过${ALLUXIO_HOME}/core/server/proxy/target/miredot/index.html获得。

使用HTTP代理会带来一些性能的影响,尤其是在使用代理的时候会增加一个额外的跳计数。为了达到最优的性能,推荐代理服务和一个Alluxio worker运行在一个计算节点上。或者,推荐将所有的代理服务器放到load balancer之后。

特性支持

下表描述了对当前Amazon S3基础特性的支持情况:

Action
Headers
Query Params

AbortMultipartUpload

None

CompleteMultipartUpload

None

CopyObject

Content-Type | x-amz-copy-source | x-amz-metadata-directive | x-amz-tagging-directive | x-amz-tagging

CreateBucket

None

CreateMultipartUpload

Content-Type | x-amz-tagging

DeleteBucket

None

DeleteBucketTagging

None

DeleteObject

None

DeleteObjects

None

DeleteObjectTagging

None

GetBucketTagging

None

GetObject

Range

None

GetObjectTagging

None

None

HeadBucket

None

None

HeadObject

None

None

ListBuckets

ListMultipartUploads

None

None

ListObjects

None

delimiter | encoding-type | marker | max-keys | prefix

ListObjectsV2

None

continuation-token | delimiter | encoding-type | max-keys | prefix | start-after

ListParts

None

None

PutBucketTagging

None

PutObject

Content-Length | Content-MD5 | Content-Type | x-amz-tagging

PutObjectTagging

None

None

UploadPart

Content-Length | Content-MD5

UploadPartCopy

x-amz-copy-source

语言支持

Alluxio S3 客户端支持各种编程语言,比如C++、Java、Python、Golang、Ruby等。在这个文档中,我们使用curl REST调用和python S3 client作为使用示例。

使用示例

REST API

举个例子,你可以使用如下的RESTful API调用方式在本地运行一个Alluxio集群。Alluxio代理会默认在39999端口监听。

创建bucket

获取bucket(objects列表)

加入object

假定本地现存一个文件LICENSE

获取object

列出含有单个object的bucket

列出含有多个objects的bucket

你可以上传更多的文件并且使用max-keyscontinuation-token作为GET bucket request参数,比如:

你还可以验证这些对象是否为Alluxio文件,在/testbucket目录下。

删除objects

初始化multipart upload

上传分块

罗列已上传的分块

完成multipart upload

中止multipart upload

删除空bucket

Python S3 Client

创建连接

创建bucket

加入small object

获取small object

上传large object

在本地文件系统创建一个8MB文件

使用python S3 client把它作为object上传

获取large objecy

删除objects

初始化multipart upload

上传分块

完成multipart upload

中止multipart upload

删除bucket

Last updated