2017-10-04 44 views

回答

3

這就是你如何使用去SDK presigned網址:

func GetFileLink(key string) (string, error) { 
    svc := s3.New(some params) 

    params := &s3.GetObjectInput{ 
     Bucket: aws.String(a bucket name), 
     Key: aws.String(key), 
    } 

    req, _ := svc.GetObjectRequest(params) 

    url, err := req.Presign(15 * time.Minute) // Set link expiration time 
    if err != nil { 
     global.Log("[AWS GET LINK]:", params, err) 
    } 

    return url, err 
} 

如果你想要的是一個公共接入對象的只是URL,你可以建立自己的網址:

https://<region>.amazonaws.com/<bucket-name>/<key> 

us-east-2在哪裏?因此,使用去這將是這樣的:

url := "https://%s.amazonaws.com/%s/%s" 
url = fmt.Sprintf(url, "us-east-2", "my-bucket-name", "some-file.txt") 

Here是S3所有可用區域的列表。

+0

謝謝。我結束了這個: 'fmt.Sprintf(「https://s3-%s.amazonaws.com/%s/%s」,region,bucket,key)''。還有一個關鍵(url路徑)的問題,因爲它可以包含分號等非轉義字符......這就是爲什麼在Java SDK中有一個單獨的方法... – oleynikd