3.4. S3 对象操作
作为开发者,您可以通过 Ceph 对象网关通过 Amazon S3 应用编程接口(API)执行对象操作。
下表列出了对象的 Amazon S3 功能操作,以及功能的支持状态。
功能 | Status |
---|---|
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
支持 | |
Multi-Tenancy | 支持 |
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- RESTful 客户端。
3.4.1. S3 从存储桶获取对象
从存储桶检索对象:
语法
GET /BUCKET/OBJECT HTTP/1.1
添加 versionId
子资源以检索对象的特定版本:
语法
GET /BUCKET/OBJECT?versionId=VERSION_ID HTTP/1.1
请求 Headers
PartNumber
- 描述
-
正在读取的对象的一部分号。这为指定部分启用范围
GET
请求。使用此请求对于仅下载对象的一部分非常有用。 - 有效值
- 1 到 10,000 之间的正整数。
- 必填
- 否
range
- 描述
要检索的对象范围。
注意不支持每个 GET 请求的多个数据范围。
- 有效值
- Range:bytes=beginbyte-endbyte
- 必需
- 否
if-modified-since
- 描述
- 仅当自时间戳起修改时才会获得。
- 有效值
- Timestamp
- 必需
- 否
if-unmodified-since
- 描述
- 只有自时间戳起没有修改时才会获得。
- 有效值
- Timestamp
- 必需
- 否
if-match
- 描述
- 仅在对象 ETag 匹配 ETag 时才会获得。
- 有效值
- 实体标签
- 必需
- 否
if-none-match
- 描述
- 仅在对象 ETag 不匹配 ETag 时才会获得。
- 有效值
- 实体标签
- 必需
- 否
带有请求标头的 Sytnax
GET /BUCKET/OBJECT?partNumber=PARTNUMBER&versionId=VersionId HTTP/1.1 Host: Bucket.s3.amazonaws.com If-Match: IfMatch If-Modified-Since: IfModifiedSince If-None-Match: IfNoneMatch If-Unmodified-Since: IfUnmodifiedSince Range: Range
响应标头
Content-Range
- 描述
- 只有在请求中指定范围标头字段时,才会返回数据范围
x-amz-version-id
- 描述
- 返回版本 ID 或 null。
x-rgw-replicated-from
- 描述
-
返回源区域,以及 Ceph 多区环境中对象复制路径中涉及的任何中间区域。此标头包含在
GetObject
和HeadObject
响应中。
x-rgw-replicated-at
- 描述
-
返回一个时间戳,指示对象复制到其当前位置。您可以使用带有
Last-Modified
标头的此标头来计算要完成的复制持续时间。
从现在开始,在复制区域上,客户端工具(如 s3cmd 或 curl 验证)支持 x-rgw-replicated-from
和 x-rgw-replicated-at
。除了 radosgw-admin 命令外,您还可以使用这些工具进行验证。使用 radosgw-admin
object stat,我们有一个已知问题 BZ-2312552 of missing header key x-rgw-replicated-from
。
3.4.2. S3 get 对象属性
使用 S3 GetObjectAttributes API 在不返回对象数据的情况下检索对象的元数据。GetObjectAttributes API 结合了 HeadObject 和 ListParts 的功能。它提供在单个请求中由这两个调用返回的所有信息,简化进程并减少所需的 API 调用数量。
语法
GET /BUCKET/OBJECT?attributes&versionId=VersionId
示例
GET /testbucket/testobject?attributes&versionId=testversionid Host: Bucket.s3.amazonaws.com x-amz-max-parts: MaxParts x-amz-part-number-marker: PartNumberMarker x-amz-server-side-encryption-customer-algorithm: SSECustomerAlgorithm x-amz-server-side-encryption-customer-key: SSECustomerKey x-amz-server-side-encryption-customer-key-MD5: SSECustomerKeyMD5 x-amz-request-payer: RequestPayer x-amz-expected-bucket-owner: ExpectedBucketOwner x-amz-object-attributes: ObjectAttributes
versionId
子资源检索对象的特定版本。
3.4.2.1. 请求实体
示例
GET /{Key+}?attributes&versionId=VersionId HTTP/1.1 Host: Bucket.s3.amazonaws.com x-amz-max-parts: MaxParts x-amz-part-number-marker: PartNumberMarker x-amz-server-side-encryption-customer-algorithm: SSECustomerAlgorithm x-amz-server-side-encryption-customer-key: SSECustomerKey x-amz-server-side-encryption-customer-key-MD5: SSECustomerKeyMD5 x-amz-request-payer: RequestPayer x-amz-expected-bucket-owner: ExpectedBucketOwner x-amz-object-attributes: ObjectAttributes
3.4.2.2. 获取请求标头
名称 | 描述 | 类型 / Valid 值 | 必需? |
Bucket | 包含对象的存储桶的名称。 | 字符串 | 是 |
键 | 对象密钥。 | 字符串 | 是 |
versionId | 用于引用对象的特定版本的版本 ID。 | 字符串 | 否 |
x-amz-max-parts | 设置要返回的最大部分数。 | 字符串 | 否 |
x-amz-object-attributes | 指定您要在响应中返回的 root 级别的字段。未指定的字段不会返回。 | ETag,Checksum,ObjectParts,StorageClass, ObjectSize | 是 |
x-amz-part-number-marker | 指定列表应开始的部分。只有具有更高部分号的部分才会被列出。 | 字符串 | 否 |
3.4.2.3. 响应实体
示例
HTTP/1.1 200 x-amz-delete-marker: DeleteMarker Last-Modified: LastModified x-amz-version-id: VersionId x-amz-request-charged: RequestCharged <?xml version="1.0" encoding="UTF-8"?> <GetObjectAttributesOutput> <ETag>string</ETag> <Checksum> <ChecksumCRC32>string</ChecksumCRC32> <ChecksumCRC32C>string</ChecksumCRC32C> <ChecksumSHA1>string</ChecksumSHA1> <ChecksumSHA256>string</ChecksumSHA256> </Checksum> <ObjectParts> <IsTruncated>boolean</IsTruncated> <MaxParts>integer</MaxParts> <NextPartNumberMarker>integer</NextPartNumberMarker> <PartNumberMarker>integer</PartNumberMarker> <Part> <ChecksumCRC32>string</ChecksumCRC32> <ChecksumCRC32C>string</ChecksumCRC32C> <ChecksumSHA1>string</ChecksumSHA1> <ChecksumSHA256>string</ChecksumSHA256> <PartNumber>integer</PartNumber> <Size>long</Size> </Part> ... <PartsCount>integer</PartsCount> </ObjectParts> <StorageClass>string</StorageClass> <ObjectSize>long</ObjectSize> </GetObjectAttributesOutput>
3.4.2.4. 获取响应标头
名称 | 描述 |
最后修改 | 对象的创建日期。 |
x-amz-delete-marker | 指定检索的对象是(true)还是不是(false)一个删除标记。如果为 false,这个响应标头不会出现在响应中。 |
x-amz-request-charged | 如果存在,这表示请求者已成功为请求收费。 |
x-amz-version-id | 对象的版本 ID。 |
GetObjectAttributesOutput | GetObjectAttributesOutput 参数的 TRoot 级别标签。 |
checksum |
对象的校验和或摘要。ChecksumCRC32 对象的 base64 编码的 32 位 CRC-32C checksum。这只有在通过对象上传时才会出现。当您在使用多部分上传上传的对象上使用 API 操作时,这个值可能不是完整对象的直接校验和值。相反,它根据每个部分的校验和值进行计算。有关如何使用多部分上传计算校验和的更多信息,请参阅 Amazon S3 用户指南中的检查对象完整性。 ChecksumSHA1 →(字符串) 对象的 base64 编码的 160 位 SHA-1 摘要。这只有在通过对象上传时才会出现。当您在使用多部分上传上传的对象中使用 API 操作时,这个值可能不是完整对象的直接校验和值。相反,它根据每个部分的校验和值进行计算。有关如何使用多部分上传计算校验和的更多信息,请参阅 Amazon S3 用户指南中的检查对象完整性。 ChecksumSHA256 →(字符串) 对象的 base64 编码的 256 位 SHA-256 摘要。这只有在通过对象上传时才会出现。当您在使用多部分上传上传的对象上使用 API 操作时,这个值可能不是完整对象的直接校验和值。相反,它根据每个部分的校验和值进行计算。有关如何使用多部分上传计算校验和的更多信息,请参阅 Amazon S3 用户指南中的检查对象完整性。 |
ObjectParts | 与多部分上传关联的 object.A 集合的创建日期。ObjectParts →(structure) 与多部分上传关联的部分集合。
TotalPartsCount 部分总数。
PartNumberMarker 当前部分的标记。
NextPartNumberMarker 当列表被截断时,此元素指定了列表中的最后一个部分,以及后续请求中用于 PartNumberMarker 请求参数的值。
MaxParts 响应中允许的最大部分数。 IsTruncated →(boolean) 指明返回的部分列表是否已截断。值为 true 表示列表已被截断。如果部分数量超过 MaxParts 元素返回的限制,则可以截断列表。 parts →(list) 用于与特定部分相关的元素的容器。响应可以包含零个或多个部分。备注 常规目的 bucket - 对于 GetObjectAttributes,如果额外的校验和(包括 x-amz-checksum-crc32、x-amz-checksum-crc32c、x-amz-checksum-sha1 或 x-amz-checksum-sha256)没有应用到请求中指定的对象,响应不会返回 Part。目录存储桶 - 对于 GetObjectAttributes,无论请求中指定的对象是否应用额外的 checksum,响应都会返回 Part。 (structure) 一个容器,用于与单个部分相关的元素。
PartNumber 标识部分的部分号。这个值是 1 到 10,000 之间的正整数。
size 上传部分的大小(以字节为单位)。
ChecksumCRC32 此标头可用作数据完整性检查,以验证收到的数据是否与最初发送的数据相同。此标头指定对象的 base64 编码、32 位 CRC-32 checksum。如需更多信息,请参阅 Amazon S3 用户指南中的检查对象完整性。
ChecksumCRC32C 对象的 base64 编码的 32 位 CRC-32C checksum。这只有在通过对象上传时才会出现。当您在使用多部分上传上传的对象上使用 API 操作时,这个值可能不是完整对象的直接校验和值。相反,它根据每个部分的校验和值进行计算。有关如何使用多部分上传计算校验和的更多信息,请参阅 Amazon S3 用户指南中的检查对象完整性。 ChecksumSHA1 →(字符串) 对象的 base64 编码的 160 位 SHA-1 摘要。这只有在通过对象上传时才会出现。当您在使用多部分上传上传的对象中使用 API 操作时,这个值可能不是完整对象的直接校验和值。相反,它根据每个部分的校验和值进行计算。有关如何使用多部分上传计算校验和的更多信息,请参阅 Amazon S3 用户指南中的检查对象完整性。 ChecksumSHA256 →(字符串) 对象的 base64 编码的 256 位 SHA-256 摘要。这只有在通过对象上传时才会出现。当您在使用多部分上传上传的对象上使用 API 操作时,这个值可能不是完整对象的直接校验和值。相反,它根据每个部分的校验和值进行计算。有关如何使用多部分上传计算校验和的更多信息,请参阅 Amazon S3 用户指南中的检查对象完整性。 |
ObjectSize | 以字节为单位对象的大小。 |
StorageClass | 提供对象的存储类信息。Amazon S3 为除 S3 Standard 存储类对象以外的所有对象返回此标头。 |
3.4.3. 检索对象的同步复制标头
返回有关对象的信息。此请求将返回与 Get Object 请求相同的标头信息,但将仅包含元数据,而不包括对象数据有效负载。
检索对象的当前版本:
语法
HEAD /BUCKET/OBJECT HTTP/1.1
添加 versionId
子资源以检索特定版本的信息:
语法
HEAD /BUCKET/OBJECT?versionId=VERSION_ID HTTP/1.1
请求 Headers
range
- 描述
- 要检索的对象范围。
- 有效值
- Range:bytes=beginbyte-endbyte
- 必需
- 否
if-modified-since
- 描述
- 仅当自时间戳起修改时才会获得。
- 有效值
- Timestamp
- 必需
- 否
if-match
- 描述
- 仅在对象 ETag 匹配 ETag 时才会获得。
- 有效值
- 实体标签
- 必需
- 否
if-none-match
- 描述
- 仅在对象 ETag 匹配 ETag 时才会获得。
- 有效值
- 实体标签
- 必需
- 否
响应标头
x-amz-version-id
- 描述
- 返回版本 ID 或 null。
x-rgw-replicated-from
- 描述
-
返回源区域,以及 Ceph 多区环境中对象复制路径中涉及的任何中间区域。此标头包含在
GetObject
和HeadObject
响应中。
x-rgw-replicated-at
- 描述
-
返回一个时间戳,指示对象复制到其当前位置。您可以使用带有
Last-Modified
标头的此标头来计算要完成的复制持续时间。
从现在开始,在复制区域上,客户端工具(如 s3cmd 或 curl 验证)支持 x-rgw-replicated-from
和 x-rgw-replicated-at
。除了 radosgw-admin 命令外,您还可以使用这些工具进行验证。使用 radosgw-admin
object stat,我们有一个已知问题 BZ-2312552 of missing header key x-rgw-replicated-from
。
3.4.4. S3 put 对象锁定
put 对象锁定 API 将锁定配置放在所选存储桶中。使用对象锁定时,您可以使用 Write-Once-Read-Many (WORM)模型存储对象。对象锁定可确保,在一个固定的时间端内或无限期内,对象不会被删除或被覆盖。对象锁定配置中指定的规则默认应用于所选存储桶中放置的每个新对象。
除非创建存储桶时启用对象锁定,否则操作会失败。
语法
PUT /BUCKET?object-lock HTTP/1.1
示例
PUT /testbucket?object-lock HTTP/1.1
请求实体
ObjectLockConfiguration
- 描述
- 用于请求的容器。
- Type
- Container
- 必填
- 是
ObjectLockEnabled
- 描述
- 指明此存储桶是否启用了对象锁定配置。
- Type
- 字符串
- 必填
- 是
规则
- 描述
- 指定存储桶的对象锁定规则。
- Type
- Container
- 必填
- 否
DefaultRetention
- 描述
- 应用到指定存储桶中的新对象的默认保留周期。
- Type
- Container
- 必填
- 否
模式
- 描述
- 默认对象锁定保留模式。有效值:GOVERNANCE/COMPLIANCE。
- Type
- Container
- 必填
- 是
Days
- 描述
- 为默认保留周期指定的天数。
- Type
- 整数
- 必填
- 否
Years
- 描述
- 为默认保留周期指定的年数。
- Type
- 整数
- 必填
- 否
HTTP 响应
400
- 状态代码
-
MalformedXML
- 描述
- XML 的格式不正确。
409
- 状态代码
-
InvalidBucketState
- 描述
- 没有启用存储桶对象锁定。
其它资源
- 有关此 API 调用的更多信息,请参阅 S3 API。
3.4.5. S3 get 对象锁定
get 对象锁定 API 检索存储桶的锁定配置。
语法
GET /BUCKET?object-lock HTTP/1.1
示例
GET /testbucket?object-lock HTTP/1.1
响应实体
ObjectLockConfiguration
- 描述
- 用于请求的容器。
- Type
- Container
- 必填
- 是
ObjectLockEnabled
- 描述
- 指明此存储桶是否启用了对象锁定配置。
- Type
- 字符串
- 必填
- 是
规则
- 描述
- 对象锁定规则用于指定存储桶。
- Type
- Container
- 必填
- 否
DefaultRetention
- 描述
- 应用到指定存储桶中的新对象的默认保留周期。
- Type
- Container
- 必填
- 否
模式
- 描述
- 默认对象锁定保留模式。有效值:GOVERNANCE/COMPLIANCE。
- Type
- Container
- 必填
- 是
Days
- 描述
- 为默认保留周期指定的天数。
- Type
- 整数
- 必填
- 否
Years
- 描述
- 为默认保留周期指定的年数。
- Type
- 整数
- 必填
- 否
其它资源
- 有关此 API 调用的更多信息,请参阅 S3 API。
3.4.6. S3 put 对象法律持有
put 对象法律持有 API 将法律持有配置应用到所选对象。当法律存在时,您无法覆盖或删除对象版本。法律保存没有关联的保留周期,并在您明确删除前保留。
语法
PUT /BUCKET/OBJECT?legal-hold&versionId= HTTP/1.1
示例
PUT /testbucket/testobject?legal-hold&versionId= HTTP/1.1
versionId
子资源检索对象的特定版本。
请求实体
LegalHold
- 描述
- 用于请求的容器。
- Type
- Container
- 必需
- 是
Status
- 描述
- 指明指定对象是否有法律持有。有效值: ON/OFF
- Type
- 字符串
- 必需
- 是
其它资源
- 有关此 API 调用的更多信息,请参阅 S3 API。
3.4.7. S3 get 对象法律持有
get 对象法律持有 API 检索对象当前法律持有状态。
语法
GET /BUCKET/OBJECT?legal-hold&versionId= HTTP/1.1
示例
GET /testbucket/testobject?legal-hold&versionId= HTTP/1.1
versionId
子资源检索对象的特定版本。
响应实体
LegalHold
- 描述
- 用于请求的容器。
- Type
- Container
- 必需
- 是
Status
- 描述
- 指明指定对象是否有法律持有。有效值: ON/OFF
- Type
- 字符串
- 必需
- 是
其它资源
- 有关此 API 调用的更多信息,请参阅 S3 API。
3.4.8. S3 put 对象保留
放置对象保留 API 将对象保留配置放在对象中。保留周期可在固定时间内保护对象版本。有两种模式:GOVERNANCE 和 COMPLIANCE。这两个保留模式对对象应用不同的保护级别。
在此期间,您的对象为 Write-Once-Read-Many-protected (WORM-protected),且无法覆盖或删除。
语法
PUT /BUCKET/OBJECT?retention&versionId= HTTP/1.1
Example
PUT /testbucket/testobject?retention&versionId= HTTP/1.1
versionId
子资源检索对象的特定版本。
请求实体
保留
- 描述
- 用于请求的容器。
- 类型
- Container
- 必需
- 是
模式
- 描述
- 指定对象的保留模式。有效值 :GOVERNANCE、COMPLIANCE。
- 类型
- 字符串
- 必需
- 是
RetainUntilDate
- 描述
- 保留日期。
- 格式
- 2020-01-05T00:00:00.000Z
- 类型
- Timestamp
- 必需
- 是
其它资源
- 有关此 API 调用的更多信息,请参阅 S3 API。
3.4.9. S3 get 对象保留
get 对象保留 API 会检索对象上的对象保留配置。
语法
GET /BUCKET/OBJECT?retention&versionId= HTTP/1.1
示例
GET /testbucket/testobject?retention&versionId= HTTP/1.1
versionId
子资源检索对象的特定版本。
响应实体
保留
- 描述
- 用于请求的容器。
- Type
- Container
- 必需
- 是
模式
- 描述
- 指定对象的保留模式。有效值: GOVERNANCE/COMPLIANCE
- Type
- 字符串
- 必需
- 是
RetainUntilDate
- 描述
- 保留日期。格式:2020-01-05T00:00:00.000Z
- Type
- Timestamp
- 必需
- 是
其它资源
- 有关此 API 调用的更多信息,请参阅 S3 API。
3.4.10. S3 put 对象标记
put 对象标记 API 将标签与对象相关联。标签是键值对。若要放置任何其他版本的标签,请使用 versionId
查询参数。您必须具有执行 s3:PutObjectTagging
操作的权限。默认情况下,存储桶所有者具有这个权限,并可将此权限授予其他用户。
语法
PUT /BUCKET/OBJECT?tagging&versionId= HTTP/1.1
示例
PUT /testbucket/testobject?tagging&versionId= HTTP/1.1
请求实体
Tagging
- 描述
- 用于请求的容器。
- Type
- Container
- 必需
- 是
TagSet
- 描述
- 一组标签集合。
- Type
- 字符串
- 必需
- 是
其它资源
- 有关此 API 调用的更多信息,请参阅 S3 API。
3.4.11. S3 get 对象标记
get 对象标记 API 返回对象标签。默认情况下,GET
操作返回对象当前版本的信息。
对于版本化的存储桶,您可以在存储桶中拥有多个版本的对象。要检索任何其他版本的标签,请在请求中添加 versionId
查询参数。
语法
GET /BUCKET/OBJECT?tagging&versionId= HTTP/1.1
示例
GET /testbucket/testobject?tagging&versionId= HTTP/1.1
其它资源
- 有关此 API 调用的更多信息,请参阅 S3 API。
3.4.12. S3 删除对象标记
删除对象标记 API 从指定对象中删除整个标签集。您必须具有执行 s3:DeleteObjectTagging
操作的权限才能使用此操作。
要删除特定对象版本的标签,请在请求中添加 versionId
查询参数。
语法
DELETE /BUCKET/OBJECT?tagging&versionId= HTTP/1.1
示例
DELETE /testbucket/testobject?tagging&versionId= HTTP/1.1
其它资源
- 有关此 API 调用的更多信息,请参阅 S3 API。
3.4.13. S3 将对象添加到存储桶
添加对象到存储桶。您必须在存储桶上具有写入权限才能执行此操作。
语法
PUT /BUCKET/OBJECT HTTP/1.1
请求 Headers
content-md5
- 描述
- 消息的 base64 编码 MD-5 哈希。
- 有效值
- 字符串无默认值或限制。
- 必需
- 否
content-type
- 描述
- 标准 MIME 类型。
- 有效值
-
任何 MIME 类型。默认:
binary/octet-stream
。 - 必需
- 否
x-amz-meta-<…>*
- 描述
- 用户元数据。与对象存储。
- 有效值
- 字符串最多 8kb。无默认值。
- 必需
- 否
x-amz-acl
- 描述
- 可以处理 ACL。
- 有效值
-
private
,public-read
,public-read-write
,authenticated-read
- 必需
- 否
响应标头
x-amz-version-id
- 描述
- 返回版本 ID 或 null。
3.4.14. S3 删除对象
删除对象。要求在包含存储桶上设置 WRITE 权限。
删除对象。如果对象版本控制为 on,它会创建一个标记。
语法
DELETE /BUCKET/OBJECT HTTP/1.1
要在对对象进行版本控制时删除对象,您必须指定 versionId
子资源以及要删除的对象的版本。
DELETE /BUCKET/OBJECT?versionId=VERSION_ID HTTP/1.1
3.4.15. S3 删除多个对象
此 API 调用从存储桶中删除多个对象。
语法
POST /BUCKET/OBJECT?delete HTTP/1.1
3.4.16. S3 获取对象的访问控制列表(ACL)
返回对象的当前版本的 ACL:
语法
GET /BUCKET/OBJECT?acl HTTP/1.1
添加 versionId
子资源以检索特定版本的 ACL:
语法
GET /BUCKET/OBJECT?versionId=VERSION_ID&acl HTTP/1.1
响应标头
x-amz-version-id
- 描述
- 返回版本 ID 或 null。
响应实体
AccessControlPolicy
- 描述
- 用于响应的容器。
- Type
- Container
AccessControlList
- 描述
- ACL 信息的容器。
- Type
- Container
所有者
- 描述
-
bucket 所有者的
ID
和DisplayName
的容器。 - Type
- Container
ID
- 描述
- bucket 所有者的 ID。
- Type
- 字符串
DisplayName
- 描述
- bucket 所有者的显示名称。
- Type
- 字符串
Grant
- 描述
-
适用于
Grantee
和Permission
的容器。 - Type
- Container
Grantee
- 描述
-
允许权限的用户的
DisplayName
和ID
的容器。 - Type
- Container
权限
- 描述
-
提供给
Grantee
存储桶的权限。 - Type
- 字符串
3.4.17. S3 设置对象的访问控制列表(ACL)
为对象的当前版本设置对象 ACL。
语法
PUT /BUCKET/OBJECT?acl
请求实体
AccessControlPolicy
- 描述
- 用于响应的容器。
- Type
- Container
AccessControlList
- 描述
- ACL 信息的容器。
- Type
- Container
所有者
- 描述
-
bucket 所有者的
ID
和DisplayName
的容器。 - Type
- Container
ID
- 描述
- bucket 所有者的 ID。
- Type
- 字符串
DisplayName
- 描述
- bucket 所有者的显示名称。
- Type
- 字符串
Grant
- 描述
-
适用于
Grantee
和Permission
的容器。 - Type
- Container
Grantee
- 描述
-
允许权限的用户的
DisplayName
和ID
的容器。 - Type
- Container
权限
- 描述
-
提供给
Grantee
存储桶的权限。 - Type
- 字符串
3.4.18. S3 复制一个对象
要复制对象,请使用 PUT
并指定目标存储桶和对象名称。
语法
PUT /DEST_BUCKET/DEST_OBJECT HTTP/1.1 x-amz-copy-source: SOURCE_BUCKET/SOURCE_OBJECT
请求 Headers
x-amz-copy-source
- 描述
- 源 bucket 名称 + 对象名称。
- 有效值
-
BUCKET/OBJECT
- 必需
- 是
x-amz-acl
- 描述
- 可以处理 ACL。
- 有效值
-
private
,public-read
,public-read-write
,authenticated-read
- 必需
- 否
x-amz-copy-if-modified-since
- 描述
- 仅在自时间戳以来修改时才复制。
- 有效值
- Timestamp
- 必需
- 否
x-amz-copy-if-unmodified-since
- 描述
- 仅在自时间戳起未修改时才复制。
- 有效值
- Timestamp
- 必需
- 否
x-amz-copy-if-match
- 描述
- 只有在对象 ETag 匹配 ETag 时复制。
- 有效值
- 实体标签
- 必需
- 否
x-amz-copy-if-none-match
- 描述
- 只有在对象 ETag 匹配 ETag 时复制。
- 有效值
- 实体标签
- 必需
- 否
响应实体
CopyObjectResult
- 描述
- 用于响应元素的容器。
- Type
- Container
LastModified
- 描述
- 源对象的最后修改日期。
- Type
- Date
Etag
- 描述
- 新对象的 ETag。
- Type
- 字符串
3.4.19. S3 使用 HTML 表单向存储桶添加对象
使用 HTML 表单将对象添加到存储桶。您必须在存储桶上具有写入权限才能执行此操作。
语法
POST /BUCKET/OBJECT HTTP/1.1
3.4.20. S3 确定请求选项
用于确定实际请求是否可以通过特定原始卷、HTTP 方法和标头发送的 preflight 请求。
语法
OPTIONS /OBJECT HTTP/1.1
3.4.21. S3 启动多部分上传
启动多部分上传过程。返回 UploadId
,您可以在添加额外部分、列出部分和完成或带出多部分上传时指定。
语法
POST /BUCKET/OBJECT?uploads
请求 Headers
content-md5
- 描述
- 消息的 base64 编码 MD-5 哈希。
- 有效值
- 字符串无默认值或限制。
- 必需
- 否
content-type
- 描述
- 标准 MIME 类型。
- 有效值
-
任何 MIME 类型。默认:
binary/octet-stream
- 必需
- 否
x-amz-meta-<…>
- 描述
- 用户元数据。与对象存储。
- 有效值
- 字符串最多 8kb。无默认值。
- 必需
- 否
x-amz-acl
- 描述
- 可以处理 ACL。
- 有效值
-
private
,public-read
,public-read-write
,authenticated-read
- 必需
- 否
响应实体
InitiatedMultipartUploadsResult
- 描述
- 用于结果的容器。
- Type
- Container
Bucket
- 描述
- 将接收对象内容的存储桶。
- Type
- 字符串
键
- 描述
-
key
请求参数指定的密钥(若有)。 - Type
- 字符串
UploadId
- 描述
-
由
upload-id
请求参数指定的 ID,标识多部分上传(如果有)。 - Type
- 字符串
3.4.22. S3 在多部分上传中添加部分
添加部分到多部分上传。
指定 uploadId
子资源以及上传 ID,将部分添加到多部分上传:
语法
PUT /BUCKET/OBJECT?partNumber=&uploadId=UPLOAD_ID HTTP/1.1
可能会返回以下 HTTP 响应:
HTTP 响应
404
- 状态代码
-
NoSuchUpload
- 描述
- 指定 upload-id 与此对象上启动的任何上传都不匹配。
3.4.23. S3 列出多部分上传
指定 uploadId
子资源以及上传 ID 来列出多部分上传:
语法
GET /BUCKET/OBJECT?uploadId=UPLOAD_ID HTTP/1.1
响应实体
InitiatedMultipartUploadsResult
- 描述
- 用于结果的容器。
- Type
- Container
Bucket
- 描述
- 将接收对象内容的存储桶。
- Type
- 字符串
键
- 描述
-
key
请求参数指定的密钥(若有)。 - Type
- 字符串
UploadId
- 描述
-
由
upload-id
请求参数指定的 ID,标识多部分上传(如果有)。 - Type
- 字符串
initiator
- 描述
-
包含开始上传的用户的
ID
和DisplayName
。 - Type
- Container
ID
- 描述
- 启动器的 ID。
- Type
- 字符串
DisplayName
- 描述
- 启动器的显示名称。
- Type
- 字符串
所有者
- 描述
-
拥有上传对象的用户的
ID
和DisplayName
的容器。 - Type
- Container
StorageClass
- 描述
-
用于存储生成的对象的方法。
STANDARD
或REDUCED_REDUNDANCY
- Type
- 字符串
PartNumberMarker
- 描述
-
如果
IsTruncated
为true
,则后续请求中使用的部分标记。在列表前面。 - Type
- 字符串
NextPartNumberMarker
- 描述
-
如果
IsTruncated
为true
,则后续请求中使用的下一部分标记。列表的末尾。 - Type
- 字符串
IsTruncated
- 描述
-
如果为
true
,则仅返回对象上传内容的子集。 - Type
- 布尔值
Part
- 描述
-
Key
,Part
,InitiatorOwner
,StorageClass
, 和Initiated
元素的容器。 - Type
- Container
PartNumber
- 描述
-
Key
,Part
,InitiatorOwner
,StorageClass
, 和Initiated
元素的容器。 - Type
- 整数
ETag
- 描述
- 部分的实体标签。
- Type
- 字符串
大小
- 描述
- 上传部分的大小。
- Type
- 整数
3.4.24. S3 汇编上传的部分
装配已上传的部分并创建新的对象,从而完成多部分上传。
指定 uploadId
子资源以及上传 ID 以完成多部分上传:
语法
POST /BUCKET/OBJECT?uploadId=UPLOAD_ID HTTP/1.1
请求实体
CompleteMultipartUpload
- 描述
- 由一个或多个部分组成的容器。
- Type
- Container
- 必需
- 是
Part
- 描述
-
适用于
PartNumber
和ETag
的容器。 - Type
- Container
- 必需
- 是
PartNumber
- 描述
- 部分的标识符。
- Type
- 整数
- 必需
- 是
ETag
- 描述
- 部分的实体标签。
- Type
- 字符串
- 必需
- 是
响应实体
CompleteMultipartUploadResult
- 描述
- 用于响应的容器。
- Type
- Container
位置
- 描述
- 新对象的资源标识符(path)。
- Type
- URI
bucket
- 描述
- 包含新对象的存储桶的名称。
- Type
- 字符串
键
- 描述
- 对象的密钥。
- Type
- 字符串
ETag
- 描述
- 新对象的实体标签。
- Type
- 字符串
3.4.25. S3 复制多部分上传
通过从现有对象复制数据作为数据源来上传部分。
指定 uploadId
子资源以及上传 ID,以执行多部分上传副本:
语法
PUT /BUCKET/OBJECT?partNumber=PartNumber&uploadId=UPLOAD_ID HTTP/1.1 Host: cname.domain.com Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET
请求 Headers
x-amz-copy-source
- 描述
- 源存储桶名称和对象名称。
- 有效值
- BUCKET/OBJECT
- 必需
- 是
x-amz-copy-source-range
- 描述
- 从源对象复制的字节数。
- 有效值
-
范围:
bytes=first-last
,其中第一个和最后一个是要复制的零字节偏移。例如,bytes=0-9
表示您想要复制源的前 10 字节。 - 必需
- 否
响应实体
CopyPartResult
- 描述
- 用于所有响应元素的容器。
- Type
- Container
ETag
- 描述
- 返回新部分的 ETag。
- Type
- 字符串
LastModified
- 描述
- 返回部分上次修改的日期。
- Type
- 字符串
其它资源
- 有关此功能的更多信息,请参阅 Amazon S3 网站。
3.4.26. S3 中止多部分上传
中止多部分上传。
指定 uploadId
子资源以及上传 ID 以中止多部分上传:
语法
DELETE /BUCKET/OBJECT?uploadId=UPLOAD_ID HTTP/1.1
3.4.27. S3 Hadoop 互操作性
对于需要 Hadoop 分布式文件系统(HDFS)访问的数据分析应用,可以使用用于 Hadoop 的 Apache S3A 连接器来访问 Ceph 对象网关。S3A 连接器是一种开源工具,它将 S3 兼容对象存储呈现为 HDFS 文件系统,具有 HDFS 文件系统对应用程序进行读写语义,同时数据存储在 Ceph 对象网关中。
Ceph 对象网关与 Hadoop 2.7.3 附带的 S3A 连接器完全兼容。
其它资源
- 如需了解有关多租户的详细信息,请参阅 Red Hat Ceph Storage Object Gateway Guide。