本文介绍如何使用预签名。
通过使用Get或PUT操作获取存储桶的预签名URL。通过预签名URL,您可以向没有权限直接在您的账户中运行操作的用户授予临时访问权限。预签名URL用您的凭据进行签名,任何用户都可以使用。
生成PUT操作的预签名URL
以下代码添加了一个Body字段以生成预签名的PUT操作,该操作要求用户上传特定的有效负载:
func PreSignedSample() {
DeleteTestBucketAndObject() defer DeleteTestBucketAndObject() sc := s3lib.NewS3(endpoint, accessKey, secretKey) // Create a bucket err := sc.MakeBucket(bucketName) if err != nil { HandleError(err) } // 1. Put object pre signed with specified body url,err := sc.PutObjectPreSignedWithSpecifiedBody(bucketName, objectKey, strings.NewReader("NewBucketAndObjectSample"),(5 * time.Minute)) if err != nil { HandleError(err) } fmt.Println("put object pre signed with specified body url is :",url) |
生成Get操作的预签名URL
下面的代码生成一个预签名URL,使您可以临时共享文件而不将其公开。有权访问URL的任何人都可以查看该文件:
url,err = sc.GetObjectPreSigned(bucketName, objectKey,(5 * time.Minute))
if err != nil { HandleError(err) } fmt.Println("get object pre signed url is :",url) |