注意
本文档适用于 Ceph 的开发版本。
对象操作
放置对象
向存储桶添加一个对象。您必须拥有对该存储桶的写入权限才能执行此操作。
语法
PUT /{bucket}/{object} HTTP/1.1
请求头
名称 |
描述 |
有效值 |
必需 |
|---|---|---|---|
content-md5 |
消息的base64编码MD-5哈希值。 |
字符串。无默认值或约束。 |
否 |
content-type |
标准的MIME类型。 |
任何MIME类型。默认值: |
否 |
x-amz-meta-<…> |
用户元数据。与对象一起存储。 |
最长8kb的字符串。无默认值。 |
否 |
x-amz-acl |
预设ACL。 |
|
否 |
复制对象
要复制一个对象,请使用PUT并指定目标存储桶和对象名称。
Syntax
PUT /{dest-bucket}/{dest-object} HTTP/1.1
x-amz-copy-source: {source-bucket}/{source-object}
请求头
名称 |
描述 |
有效值 |
必需 |
|---|---|---|---|
x-amz-copy-source |
源存储桶名称 + 对象名称。 |
{bucket}/{obj} |
是 |
x-amz-acl |
预设ACL。 |
|
否 |
x-amz-copy-if-modified-since |
仅在时间戳之后修改过才复制。 |
时间戳 |
否 |
x-amz-copy-if-unmodified-since |
仅在时间戳之后未修改才复制。 |
时间戳 |
否 |
x-amz-copy-if-match |
仅当对象ETag匹配ETag时才复制。 |
实体标签 |
否 |
x-amz-copy-if-none-match |
仅当对象ETag不匹配时才复制。 |
实体标签 |
否 |
Response Entities
名称 |
类型 |
描述 |
|---|---|---|
CopyObjectResult |
Container |
响应元素的容器。 |
LastModified |
日期 |
源对象的最后修改日期。 |
Etag |
String |
新对象的ETag。 |
移除对象
移除一个对象。要求对包含该对象的存储桶设置WRITE权限。
语法
DELETE /{bucket}/{object} HTTP/1.1
请求头
名称 |
描述 |
有效值 |
必需 |
|---|---|---|---|
x-amz-delete-if-unmodified-since |
仅在时间戳之后未修改才删除 |
一个日期时间字符串 |
否 |
获取对象
从RADOS中的存储桶检索一个对象。
Syntax
GET /{bucket}/{object} HTTP/1.1
请求头
名称 |
描述 |
有效值 |
必需 |
|---|---|---|---|
range |
要检索的对象范围。 |
Range: bytes=beginbyte-endbyte |
否 |
if-modified-since |
仅在时间戳之后修改过才获取。 |
时间戳 |
否 |
if-unmodified-since |
仅在时间戳之后未修改才获取。 |
时间戳 |
否 |
if-match |
仅当对象ETag匹配ETag时才获取。 |
实体标签 |
否 |
if-none-match |
仅当对象ETag不匹配时才获取。 |
实体标签 |
否 |
响应头
名称 |
描述 |
|---|---|
Content-Range |
数据范围,仅当请求中指定了range头字段时才返回 |
获取对象信息
返回关于对象的信息。此请求将返回与Get Object请求相同的头信息,但只包含元数据,不包含对象数据负载。
语法
HEAD /{bucket}/{object} HTTP/1.1
请求头
名称 |
描述 |
有效值 |
必需 |
|---|---|---|---|
range |
要检索的对象范围。 |
Range: bytes=beginbyte-endbyte |
否 |
if-modified-since |
仅在时间戳之后修改过才获取。 |
时间戳 |
否 |
if-unmodified-since |
仅在时间戳之后未修改才获取。 |
时间戳 |
否 |
if-match |
仅当对象ETag匹配ETag时才获取。 |
实体标签 |
否 |
if-none-match |
仅当对象ETag不匹配时才获取 |
实体标签 |
否 |
获取对象ACL
语法
GET /{bucket}/{object}?acl HTTP/1.1
Response Entities
名称 |
类型 |
描述 |
|---|---|---|
|
Container |
响应的容器。 |
|
Container |
ACL信息的容器。 |
|
Container |
对象所有者的 |
|
String |
对象所有者的ID。 |
|
String |
对象所有者的显示名称。 |
|
Container |
|
|
Container |
接收权限授予的用户的 |
|
String |
授予 |
设置对象ACL
语法
PUT /{bucket}/{object}?acl
请求实体
名称 |
类型 |
描述 |
|---|---|---|
|
Container |
响应的容器。 |
|
Container |
ACL信息的容器。 |
|
Container |
对象所有者的 |
|
String |
对象所有者的ID。 |
|
String |
对象所有者的显示名称。 |
|
Container |
|
|
Container |
接收权限授予的用户的 |
|
String |
授予 |
发起多部分上传
发起多部分上传过程。
Syntax
POST /{bucket}/{object}?uploads
请求头
名称 |
描述 |
有效值 |
必需 |
|---|---|---|---|
content-md5 |
消息的base64编码MD-5哈希值。 |
字符串。无默认值或约束。 |
否 |
content-type |
标准的MIME类型。 |
任何MIME类型。默认值: |
否 |
x-amz-meta-<…> |
用户元数据。与对象一起存储。 |
最长8kb的字符串。无默认值。 |
否 |
x-amz-acl |
预设ACL。 |
|
否 |
Response Entities
名称 |
类型 |
描述 |
|---|---|---|
|
Container |
结果的容器。 |
|
String |
将接收对象内容的存储桶。 |
|
String |
由 |
|
String |
由 |
多部分上传部分
语法
PUT /{bucket}/{object}?partNumber=&uploadId= HTTP/1.1
HTTP响应
可能返回以下HTTP响应
HTTP状态 |
状态码 |
描述 |
|---|---|---|
404 |
NoSuchUpload |
指定的upload-id与此对象上发起的任何上传都不匹配 |
列出多部分上传部分
Syntax
GET /{bucket}/{object}?uploadId=123 HTTP/1.1
响应实体
名称 |
类型 |
描述 |
|---|---|---|
|
Container |
结果的容器。 |
|
String |
将接收对象内容的存储桶。 |
|
String |
由 |
|
String |
由 |
|
Container |
包含发起上传的用户的 |
|
String |
发起者的ID。 |
|
String |
发起者的显示名称。 |
|
Container |
包含上传对象所有者的 |
|
String |
用于存储结果对象的方法。 |
|
String |
如果 |
|
String |
如果 |
|
整数 |
根据 |
|
Boolean |
如果为 |
|
Container |
|
|
日期 |
上传部分的日期和时间。 |
|
整数 |
部分的识别号。 |
|
String |
部分的实体标签。 |
|
整数 |
上传部分的大小。 |
完成多部分上传
组装已上传的部分并创建一个新对象,从而完成多部分上传。
语法
POST /{bucket}/{object}?uploadId= HTTP/1.1
请求实体
名称 |
类型 |
描述 |
必需 |
|---|---|---|---|
|
Container |
由一个或多个部分组成的容器。 |
是 |
|
Container |
|
是 |
|
整数 |
部分的标识符。 |
是 |
|
String |
部分的实体标签。 |
是 |
响应实体
名称 |
类型 |
描述 |
|---|---|---|
CompleteMultipartUploadResult |
Container |
响应的容器。 |
Location |
URI |
新对象的资源标识符(路径)。 |
Bucket |
String |
包含新对象的存储桶名称。 |
密钥 |
String |
对象的键。 |
ETag |
String |
新对象的实体标签。 |
中止多部分上传
语法
DELETE /{bucket}/{object}?uploadId= HTTP/1.1
追加对象
向对象追加数据。您必须拥有对该存储桶的写入权限才能执行此操作。它用于以追加模式上传文件。Append Object操作创建的对象的类型是可追加对象,而Put Object操作上传的对象的类型是普通对象。如果存储桶版本控制已启用或暂停,则不能使用Append Object。 同步对象在多站点中将变为普通对象,但您仍然可以追加到原始对象。 可追加对象禁用压缩和加密功能。
语法
PUT /{bucket}/{object}?append&position= HTTP/1.1
请求头
名称 |
描述 |
有效值 |
必需 |
|---|---|---|---|
content-md5 |
消息的base64编码MD-5哈希值。 |
字符串。无默认值或约束。 |
否 |
content-type |
标准的MIME类型。 |
任何MIME类型。默认值: |
否 |
x-amz-meta-<…> |
用户元数据。与对象一起存储。 |
最长8kb的字符串。无默认值。 |
否 |
x-amz-acl |
预设ACL。 |
|
否 |
响应头
名称 |
描述 |
|---|---|
x-rgw-next-append-position |
下一个追加对象的位置 |
HTTP响应
可能返回以下HTTP响应
HTTP状态 |
状态码 |
描述 |
|---|---|---|
409 |
PositionNotEqualToLength |
指定位置与对象长度不匹配 |
409 |
ObjectNotAppendable |
指定对象不可追加 |
409 |
InvalidBucketstate |
存储桶版本控制已启用或暂停 |
放置对象保留
在对象上设置对象保留配置。
语法
PUT /{bucket}/{object}?retention&versionId= HTTP/1.1
请求实体
名称 |
类型 |
描述 |
必需 |
|---|---|---|---|
|
Container |
请求的容器。 |
是 |
|
String |
指定对象的保留模式。有效值:GOVERNANCE/COMPLIANCE | Yes |
|
|
时间戳 |
保留日期。格式:2020-01-05T00:00:00.000Z | Yes |
|
获取对象保留
获取对象上的对象保留配置。
语法
GET /{bucket}/{object}?retention&versionId= HTTP/1.1
响应实体
名称 |
类型 |
描述 |
必需 |
|---|---|---|---|
|
Container |
请求的容器。 |
是 |
|
String |
指定对象的保留模式。有效值:GOVERNANCE/COMPLIANCE | Yes |
|
|
时间戳 |
保留日期。格式:2020-01-05T00:00:00.000Z | Yes |
|
放置对象法律保留
对指定对象应用法律保留配置。
语法
PUT /{bucket}/{object}?legal-hold&versionId= HTTP/1.1
请求实体
名称 |
类型 |
描述 |
必需 |
|---|---|---|---|
|
Container |
请求的容器。 |
是 |
|
String |
指示指定对象是否设置了法律保留。有效值:ON/OFF |
是 |
获取对象法律保留
获取对象的当前法律保留状态。
语法
GET /{bucket}/{object}?legal-hold&versionId= HTTP/1.1
响应实体
名称 |
类型 |
描述 |
必需 |
|---|---|---|---|
|
Container |
请求的容器。 |
是 |
|
String |
指示指定对象是否设置了法律保留。有效值:ON/OFF |
是 |