天天看點

【OSS】從AWS S3上的應用無縫切換至OSS

注意事項

  • 使用限制由于OSS相容S3協定,是以您可以通過S3 SDK進行建立Bucket、上傳Object等相關操作。執行相關操作過程中其帶寬、QPS等限制遵循OSS性能名額,詳情請參見 使用限制
  • 用戶端配置從AWS S3遷移到OSS後,您仍然可以使用S3 API通路OSS,僅需要對S3的用戶端應用進行如下改動:
    1. 擷取阿裡雲賬号或RAM使用者的AccessKey ID和AccessKey Secret,并在您使用的用戶端和SDK中配置您申請的AccessKey ID與AccessKey Secret。
    2. 設定用戶端連接配接的Endpoint為OSS Endpoint。OSS Endpoint清單請參見 通路域名和資料中心

遷移教程

您可以使用

阿裡雲線上遷移服務

将AWS S3 資料輕松遷移至阿裡雲對象存儲OSS。詳情請參見

AWS S3遷移教程

遷移後通過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報錯,并禁止通路。

  • ACL權限定義OSS對ACL權限的定義與S3不完全一緻,遷移後如有需要,可對權限進行相應調整。二者的主要差別可參考下表:
級别 AWS S3權限 AWS 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 Object可讀 Object可讀。
N/A Object可以被覆寫。
讀取Object ACL 讀取Object ACL,僅Bucket owner和授權RAM使用者擁有此權限。
設定Object ACL 設定Object ACL,僅Bucket owner和授權RAM使用者擁有此權限。
注意 OSS僅支援S3中的私有、公共讀和公共讀寫三種ACL模式。
  • 存儲類型

OSS支援标準(Standard)、低頻通路(IA)和歸檔存儲(Archive)三種存儲類型,分别對應AWS S3中的STANDARD、STANDARD_IA和GLACIER。您可以根據需要轉換OSS Object的存儲類型。

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

  • ETag
    • 對于PUT方式上傳的Object,OSS Object的ETag與AWS S3在大小寫上有差別。OSS為大寫,而S3為小寫。如果用戶端有關于ETag的校驗,請忽略大小寫。
    • 對于分片上傳的Object,OSS的ETag計算方式與S3不同。

相容的S3 API

以下為OSS對 S3 Bucket、Object以及Multipart操作相容的API清單。

操作類型 API
Bucket操作
  • PutBucket
  • DeleteBucket
  • GetBucket
  • 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