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 |
ListObjectsV2 | prefix、delimiter、max-keys、continuation-token、start-after |
CopyObject | 同一存储桶内 |
| Multipart | 创建、上传分片、完成、中止、列出分片 |
| 签名 URL | GET、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。