AWS 複製bucket 的資料到另一個bucket

常使用AWS S3的開發者來說,這複製資訊到另一個bucket 應該算是一個蠻常見的需求,而目前看到AWS Go SDK有支援對應的APICopyObject

在試著使用了以後,發現Go SDK的程式碼中 CopySource欄位的描述不是很清楚,所以不知道要怎麼把值代入這個欄位,直到後來發現AWS 有份文件中有寫到相關的範例:

原來一個正確的CopyObjectInput 會是如下所示:

source := bucket + "/" + item
input := &s3.CopyObjectInput{
  CopySource: aws.String(url.PathEscape(source)), 
  Bucket: aws.String(other),
  Key: aws.String(item)
}

跟我原本預期的有些差距,原本以為合法的CopySource應該會是如像:s3://bucket/item.XD

Reference: