S3兼容性
了解Supabase Storage与S3的兼容性
Supabase Storage 兼容 S3 协议。您可以使用任何 S3 客户端与 Storage 对象进行交互。
Storage 支持标准上传、可恢复上传和S3上传,这些协议都是相互兼容的。您可以使用 S3 协议上传文件并通过 REST API 列出,或者使用可恢复上传方式上传并通过 S3 列出。
Storage 支持使用查询参数预签名 URL。具体而言,Supabase Storage 要求使用 AWS Signature Version 4 进行请求。要启用此功能,请在 Supabase Storage 的设置页面中通过 S3 协议启用 S3 连接。
S3 协议目前处于公开 Alpha 阶段。如果您遇到任何问题或有功能需求,请联系我们。
已实现的端点
最常用的端点已实现,更多端点将会陆续添加。以下表格中标记为 ✅ 的表示已实现的 S3 端点。
存储桶操作
API 名称 | 功能特性 |
---|---|
✅ ListBuckets | |
✅ HeadBucket | ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner |
✅ CreateBucket | ❌ ACL: ❌ x-amz-acl ❌ x-amz-grant-full-control ❌ x-amz-grant-read ❌ x-amz-grant-read-acp ❌ x-amz-grant-write ❌ x-amz-grant-write-acp ❌ 对象锁定: ❌ x-amz-bucket-object-lock-enabled ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner |
✅ DeleteBucket | ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner |
✅ GetBucketLocation | ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner |
❌ DeleteBucketCors | ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner |
❌ GetBucketEncryption | ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner |
❌ GetBucketLifecycleConfiguration | ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner |
❌ GetBucketCors | ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner |
❌ PutBucketCors | ❌ 校验和: ❌ x-amz-sdk-checksum-algorithm ❌ x-amz-checksum-algorithm ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner |
❌ PutBucketLifecycleConfiguration | ❌ 校验和: ❌ x-amz-sdk-checksum-algorithm ❌ x-amz-checksum-algorithm ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner |
对象操作
API 名称 | 功能特性 |
---|---|
✅ HeadObject | ✅ 条件操作: ✅ If-Match ✅ If-Modified-Since ✅ If-None-Match ✅ If-Unmodified-Since ✅ 范围: ✅ Range (在 HeadObject 中无效) ✅ partNumber ❌ SSE-C(服务端加密客户端密钥): ❌ x-amz-server-side-encryption-customer-algorithm ❌ x-amz-server-side-encryption-customer-key ❌ x-amz-server-side-encryption-customer-key-MD5 ❌ 请求支付方: ❌ x-amz-request-payer ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner |
✅ ListObjects | 查询参数: ✅ delimiter ✅ encoding-type ✅ marker ✅ max-keys ✅ prefix ❌ 请求支付方: ❌ x-amz-request-payer ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner |
✅ ListObjectsV2 | 查询参数: ✅ list-type ✅ continuation-token ✅ delimiter ✅ encoding-type ✅ fetch-owner ✅ max-keys ✅ prefix ✅ start-after ❌ 请求支付方: ❌ x-amz-request-payer ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner |
✅ GetObject | ✅ 条件操作: ✅ If-Match ✅ If-Modified-Since ✅ If-None-Match ✅ If-Unmodified-Since ✅ 范围: ✅ Range ✅ PartNumber ❌ SSE-C: ❌ x-amz-server-side-encryption-customer-algorithm ❌ x-amz-server-side-encryption-customer-key ❌ x-amz-server-side-encryption-customer-key-MD5 ❌ 请求支付方: ❌ x-amz-request-payer ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner |
✅ PutObject | 系统元数据: ✅ Content-Type ✅ Cache-Control ✅ Content-Disposition ✅ Content-Encoding ✅ Content-Language ✅ Expires ❌ Content-MD5 ❌ 对象生命周期 ❌ 网站重定向: ❌ x-amz-website-redirect-location ❌ SSE-C: ❌ x-amz-server-side-encryption ❌ x-amz-server-side-encryption-customer-algorithm ❌ x-amz-server-side-encryption-customer-key ❌ x-amz-server-side-encryption-customer-key-MD5 ❌ x-amz-server-side-encryption-aws-kms-key-id ❌ x-amz-server-side-encryption-context ❌ x-amz-server-side-encryption-bucket-key-enabled ❌ 请求支付方: ❌ x-amz-request-payer ❌ 标签: ❌ x-amz-tagging ❌ 对象锁定: ❌ x-amz-object-lock-mode ❌ x-amz-object-lock-retain-until-date ❌ x-amz-object-lock-legal-hold ❌ ACL: ❌ x-amz-acl ❌ x-amz-grant-full-control ❌ x-amz-grant-read ❌ x-amz-grant-read-acp ❌ x-amz-grant-write-acp ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner |
✅ DeleteObject | ❌ 多因素认证: ❌ x-amz-mfa ❌ 对象锁定: ❌ x-amz-bypass-governance-retention ❌ 请求支付方: ❌ x-amz-request-payer ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner |
✅ DeleteObjects | ❌ 多因素认证: ❌ x-amz-mfa ❌ 对象锁定: ❌ x-amz-bypass-governance-retention ❌ 请求支付方: ❌ x-amz-request-payer ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner |
✅ ListMultipartUploads | ✅ 查询参数: ✅ delimiter ✅ encoding-type ✅ key-marker ✅️ max-uploads ✅ prefix ✅ upload-id-marker |
✅ CreateMultipartUpload | ✅ 系统元数据: ✅ Content-Type ✅ Cache-Control ✅ Content-Disposition ✅ Content-Encoding ✅ Content-Language ✅ Expires ❌ Content-MD5 ❌ 网站重定向: ❌ x-amz-website-redirect-location ❌ SSE-C: ❌ x-amz-server-side-encryption ❌ x-amz-server-side-encryption-customer-algorithm ❌ x-amz-server-side-encryption-customer-key ❌ x-amz-server-side-encryption-customer-key-MD5 ❌ x-amz-server-side-encryption-aws-kms-key-id ❌ x-amz-server-side-encryption-context ❌ x-amz-server-side-encryption-bucket-key-enabled ❌ 请求支付方: ❌ x-amz-request-payer ❌ 标签: ❌ x-amz-tagging ❌ 对象锁定: ❌ x-amz-object-lock-mode ❌ x-amz-object-lock-retain-until-date ❌ x-amz-object-lock-legal-hold ❌ ACL: ❌ x-amz-acl ❌ x-amz-grant-full-control ❌ x-amz-grant-read ❌ x-amz-grant-read-acp ❌ x-amz-grant-write-acp ❌ 存储类别: ❌ x-amz-storage-class ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner |
✅ CompleteMultipartUpload | ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner ❌ 请求支付方: ❌ x-amz-request-payer |
✅ AbortMultipartUpload | ❌ 请求支付方: ❌ x-amz-request-payer |
✅ CopyObject | ✅ 操作元数据: ⚠️ x-amz-metadata-directive ✅ 系统元数据: ✅ Content-Type ✅ Cache-Control ✅ Content-Disposition ✅ Content-Encoding ✅ Content-Language ✅ Expires ✅ 条件操作: ✅ x-amz-copy-source ✅ x-amz-copy-source-if-match ✅ x-amz-copy-source-if-modified-since ✅ x-amz-copy-source-if-none-match ✅ x-amz-copy-source-if-unmodified-since ❌ ACL: ❌ x-amz-acl ❌ x-amz-grant-full-control ❌ x-amz-grant-read ❌ x-amz-grant-read-acp ❌ x-amz-grant-write-acp ❌ 网站重定向: ❌ x-amz-website-redirect-location ❌ SSE-C: ❌ x-amz-server-side-encryption ❌ x-amz-server-side-encryption-customer-algorithm ❌ x-amz-server-side-encryption-customer-key ❌ x-amz-server-side-encryption-customer-key-MD5 ❌ x-amz-server-side-encryption-aws-kms-key-id ❌ x-amz-server-side-encryption-context ❌ x-amz-server-side-encryption-bucket-key-enabled ❌ x-amz-copy-source-server-side-encryption-customer-algorithm ❌ x-amz-copy-source-server-side-encryption-customer-key ❌ x-amz-copy-source-server-side-encryption-customer-key-MD5 ❌ 请求支付方: ❌ x-amz-request-payer ❌ 标签: ❌ x-amz-tagging ❌ x-amz-tagging-directive ❌ 对象锁定: ❌ x-amz-object-lock-mode ❌ x-amz-object-lock-retain-until-date ❌ x-amz-object-lock-legal-hold ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner ❌ x-amz-source-expected-bucket-owner ❌ 校验和: ❌ x-amz-checksum-algorithm |
✅ UploadPart | ✅ 系统元数据: ❌ Content-MD5 ❌ SSE-C: ❌ x-amz-server-side-encryption ❌ x-amz-server-side-encryption-customer-algorithm ❌ x-amz-server-side-encryption-customer-key ❌ x-amz-server-side-encryption-customer-key-MD5 ❌ 请求支付方: ❌ x-amz-request-payer ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner |
✅ UploadPartCopy | ❌ 条件操作: ❌ x-amz-copy-source ❌ x-amz-copy-source-if-match ❌ x-amz-copy-source-if-modified-since ❌ x-amz-copy-source-if-none-match ❌ x-amz-copy-source-if-unmodified-since ✅ 范围: ✅ x-amz-copy-source-range ❌ SSE-C: ❌ x-amz-server-side-encryption-customer-algorithm ❌ x-amz-server-side-encryption-customer-key ❌ x-amz-server-side-encryption-customer-key-MD5 ❌ x-amz-copy-source-server-side-encryption-customer-algorithm ❌ x-amz-copy-source-server-side-encryption-customer-key ❌ x-amz-copy-source-server-side-encryption-customer-key-MD5 ❌ 请求支付方: ❌ x-amz-request-payer ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner ❌ x-amz-source-expected-bucket-owner |
✅ ListParts | 查询参数: ✅ max-parts ✅ part-number-marker ❌ 请求支付方: ❌ x-amz-request-payer ❌ 存储桶所有者: ❌ x-amz-expected-bucket-owner |