这是使用 go sdk 获取预签名 URL 的方法:
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,您可以自己构建 URL:
https://<region>.amazonaws.com/<bucket-name>/<key>
Where <region>
是这样的us-east-2
。所以使用 go 会是这样的:
url := "https://%s.amazonaws.com/%s/%s"
url = fmt.Sprintf(url, "us-east-2", "my-bucket-name", "some-file.txt")
Here http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region是 S3 的所有可用区域的列表。