全部產品
Search
文件中心

Object Storage Service:OSS相容的S3 API及與S3的差異有哪些

更新時間:Feb 28, 2024

本文介紹OSS相容的S3 API以及OSS與S3的差異。

OSS相容的S3 API

OSS對S3 Bucket、Object以及Multipart操作相容的API如下:

操作類型

API

Bucket操作

  • PutBucket

  • DeleteBucket

  • GetBucket(ListObjects)

  • GetBucketV2(ListObjectsV2)

  • GetBucketACL

  • GetBucketLifecycle

  • GetBucketLocation

  • GetBucketLogging

  • HeadBucket

  • PutBucketACL

  • PutBucketLifecycle

  • PutBucketLogging

Object操作

  • DeleteObject

  • DeleteObjects

  • GetObject

  • GetObjectACL

  • HeadObject

  • PostObject

  • PutObject

  • PutObjectCopy

  • PutObjectACL

Multipart操作

  • InitiateMultipartUpload

  • AbortMultipartUpload

  • CompleteMultipartUpload

  • ListParts

  • UploadPart

  • UploadPartCopy

OSS與S3的差異

OSS與S3的差異如下:

  • 請求風格

    S3支援路徑(Path)請求風格和虛擬託管(Virtual Hosted)請求風格。路徑風格將Bucket名稱放在URL路徑中,而虛擬託管風格將Bucket名稱作為子網域名稱。基於安全考慮,OSS僅支援虛擬託管訪問方式,即Bucket名稱必須作為子網域名稱使用。因此,在S3遷移至OSS後,用戶端應用和S3工具都需要進行相應設定,確保所有請求採用虛擬託管風格,否則可能導致OSS報錯,並禁止訪問。

  • ACL許可權定義

    OSS對ACL許可權的定義與S3不完全一致,二者的主要區別如下:

    層級

    許可權

    S3

    OSS

    Bucket

    READ

    擁有Bucket的list許可權。

    對於Bucket下的所有Object,如果某Object沒有設定Object許可權,則該Object可讀。

    WRITE

    Bucket下的Object可寫入或覆蓋。

    • 對於Bucket下不存在的Object,可寫入。

    • 對於Bucket下存在的Object,如果該Object沒有設定Object許可權,則該Object可被覆蓋。

    • 可以初始化分區上傳(InitiateMultipartUpload)。

    READ_ACP

    讀取Bucket ACL

    讀取Bucket ACL,僅Bucket owner和授權子帳號擁有此許可權。

    WRITE_ACP

    設定Bucket ACL。

    設定Bucket ACL,僅Bucket owner和授權子帳號擁有此許可權。

    Object

    READ

    Object可讀。

    Object可讀。

    WRITE

    N/A

    Object可以被覆蓋。

    READ_ACP

    讀取Object ACL。

    讀取Object ACL,僅Bucket owner和授權RAM使用者擁有此許可權。

    WRITE_ACP

    設定Object ACL。

    設定Object ACL,僅Bucket owner和授權RAM使用者擁有此許可權。

    重要

    OSS僅支援S3中的私人、公用讀取和公用讀寫三種ACL模式。

  • 儲存類型

    OSS支援標準(Standard)、低頻訪問(IA)和Archive Storage(Archive)三種儲存類型,分別對應Amazon S3中的STANDARD、STANDARD_IA和GLACIER。您可以根據需要轉換OSS Object的儲存類型。

    如果未開啟歸檔直讀,Archive Storage類型的Object在讀取之前,要先使用Restore請求進行解凍操作。與S3不同,OSS會忽略S3 API中的解凍天數設定,解凍狀態預設持續1天,使用者可以延長到最多7天,之後,Object又回到初始時的冷凍狀態。

  • ETag

    • 對於PUT方式上傳的Object,OSS Object的ETag與Amazon S3在大小寫上有區別。OSS為大寫,而S3為小寫。如果用戶端有關於ETag的校正,請忽略大小寫。

    • 對於分區上傳的Object,OSS的ETag計算方式與S3不同。