跳到主要内容
T4

s3-api

S3 API

S3 API

T4 实现了日常工具使用的 S3 子集。Path-style Endpoint:

https://t4.dalang.io/{bucket}/{key}

支持的操作

操作说明
ListBuckets、CreateBucket、HeadBucket、DeleteBucket删除前存储桶必须为空
PutObject、GetObject、HeadObject、DeleteObject支持 Range
DeleteObjects每个请求最多 1.000 个 key
ListObjectsV2prefix、delimiter、max-keys、continuation-token、start-after
CopyObject同一存储桶内
Multipart创建、上传分片、完成、中止、列出分片
签名 URLGET、PUT、HEAD、DELETE;最长 7 天
GetBucketLocation、GetBucketVersioning版本控制始终为 Suspended

不支持的操作返回 501 NotImplemented,而不是半可用行为:ACL、策略、CORS、 生命周期、标签、对象锁定、Select、Inventory 和 ListObjects v1。

认证

请求头 Authorization: AWS4-HMAC-SHA256 或签名查询参数。service 必须为 s3;接受任意区域。请求体哈希可以是 SHA-256、UNSIGNED-PAYLOAD 或 STREAMING-AWS4-HMAC-SHA256-PAYLOAD(aws-chunked)。

服务器时钟与客户端相差不得超过 ±15 分钟。

ETag

  • PutObject 和 CopyObject:内容的 MD5。
  • Multipart:md5(concat(md5(part)))-part_count,与 S3 完全一致。

错误

标准 XML:

<Error>
  <Code>NoSuchKey</Code>
  <Message>objek tidak ditemukan</Message>
  <Resource>assets/report.pdf</Resource>
  <RequestId>…</RequestId>
</Error>

常见错误码:SignatureDoesNotMatch、InvalidAccessKeyId、 RequestTimeTooSkewed、NoSuchBucket、NoSuchKey、BucketNotEmpty、 BucketAlreadyOwnedByYou、InvalidBucketName、EntityTooLarge、 InvalidRange、NotImplemented。

元数据

  • Content-Type 会被存储并返回。
  • x-amz-meta-* 请求头按原样存储。
  • Last-Modified 使用 UTC。

另见 限制 和 签名 URL。