OSS提供了S3 API的相容性,可以讓您的數據從Amazon S3無縫遷移到阿里雲OSS上。從Amazon S3遷移到OSS後,您仍然可以使用S3 API訪問OSS,僅需要對S3的客戶端應用進行如下改動:

  1. 獲取OSS主帳號或子帳號的AccessKeyId和AccessKeySecret,並在您使用的客戶端和SDK中配置您申請的AccessKeyId與AccessKeySecret。
  2. 設定客戶端串連的endpoint為OSS endpoint。OSS endpoint列表請參見訪問網域名稱和資料中心

遷移步驟

從第三方儲存遷移到OSS的具體操作步驟,請您參見使用OssImport遷移數據

遷移後用S3 API訪問OSS

從S3遷移到OSS後,您使用S3 API訪問OSS時,需要注意以下幾點:

  • Path style和Virtual hosted style

    Virtual hosted style是指將Bucket放入host header的訪問方式。OSS基於安全考慮,僅支援virtual hosted訪問方式,所以在S3到OSS遷移後,客戶端應用需要進行相應設定。部分S3工具預設使用Path style,也需要進行相應配置,否則可能導致OSS報錯禁止訪問。

  • OSS對許可權的定義與S3不完全一致,遷移後如有需要,可對許可權進行相應調整。二者的主要區別可參考下表。

    说明
    • 更詳細的區別請參見ACL驗證流程
    • OSS僅支援S3中的私有、公共讀和公共讀寫三種ACL模式。
    對象 Amazon S3許可權 Amazon S3 阿里雲OSS
    Bucket READ 擁有Bucket的list許可權 對於Bucket下的所有Object,如果某Object沒有設定Object許可權,則該Object可讀
    WRITE Bucket下的Object可寫入或覆蓋
    • 對於Bucket下不存在的Object,可寫入
    • 對於Bucket下存在的Object,如果該Object沒有設定Object許可權,則該Object可被覆蓋
    • 可以initiate multipart upload
    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和授權子帳號擁有此許可權
    WRITE_ACP 設定Object ACL 設定Object ACL,僅Bucket owner和授權子帳號擁有此許可權
  • 儲存類型

    OSS支援標準(Standard)、低頻訪問(IA)和Archive Storage(Archive)三種儲存類型,分別對應Amazon S3中的STANDARD、STANDARD_IA和GLACIER。

    與Amazon S3不同的是,OSS不支援在上傳object時直接指定儲存類型,object的儲存類型由bucket的儲存類型指定。OSS支援標準、低頻訪問和歸檔三種Bucket類型,Object的儲存類型還可以通過lifecycle進行轉換。

    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不同。

相容的S3 API

  • Bucket操作:
    • Delete Bucket
    • Get Bucket (list objects)
    • Get Bucket ACL
    • Get Bucket lifecycle
    • Get Bucket location
    • Get Bucket logging
    • Head Bucket
    • Put Bucket
    • Put Bucket ACL
    • Put Bucket lifecycle
    • Put Bucket logging
  • Object操作:
    • Delete Object
    • Delete Objects
    • Get Object
    • Get Object ACL
    • Head Object
    • Post Object
    • Put Object
    • Put Object Copy
    • Put Object ACL
  • Multipart操作:
    • Abort Multipart Upload
    • Complete Multipart Upload
    • Initiate Multipart Upload
    • List Parts
    • Upload Part
    • Upload Part Copy