Help Center> OBS GO SDK> API Reference> Other APIs> Creating a Signed URL
Updated on 2022-02-10 GMT+08:00

Creating a Signed URL

API Description

You can use this API to generate a signed URL whose Query parameters are carried with authentication information, by specifying the AK and SK, HTTP method, and request parameters. A signed URL allows you to perform specific operations on OBS.

Method Definition

func (obsClient ObsClient) CreateSignedUrl(input *CreateSignedUrlInput) (output *CreateSignedUrlOutput, err error)

Request Parameter

Field

Type

Optional or Mandatory

input

*CreateSignedUrlInput

Mandatory

Returned Result

Field

Type

output

*CreateSignedUrlOutput

err

error

Sample Code

func main() {
       // Generate a signed URL for uploading an object.
       putObjectInput := &obs.CreateSignedUrlInput{}
       putObjectInput.Method = obs.HttpMethodPut
       putObjectInput.Bucket = "bucketname"
       putObjectInput.Key = "objectkey"
       putObjectInput.Expires = 3600
       putObjectOutput, err := obsClient.CreateSignedUrl(putObjectInput)
       if err == nil {
              fmt.Printf("SignedUrl:%s\n", putObjectOutput.SignedUrl)
              fmt.Printf("ActualSignedRequestHeaders:%v\n", putObjectOutput.ActualSignedRequestHeaders)
       } else {
              fmt.Println(err)
       }

       // Generate a signed URL for downloading an object.
       getObjectInput := &obs.CreateSignedUrlInput{}
       getObjectInput.Method = obs.HttpMethodGet
       getObjectInput.Bucket = "bucketname"
       getObjectInput.Key = "objectkey"
       getObjectInput.Expires = 3600
       getObjectOutput, err := obsClient.CreateSignedUrl(getObjectInput)
       if err == nil {
              fmt.Printf("SignedUrl:%s\n", getObjectOutput.SignedUrl)
              fmt.Printf("ActualSignedRequestHeaders:%v\n", getObjectOutput.ActualSignedRequestHeaders)
       } else {
              fmt.Println(err)
       }

       // Generate a signed URL for deleting an object.
       deleteObjectInput := &obs.CreateSignedUrlInput{}
       deleteObjectInput.Method = obs.HttpMethodDelete
       deleteObjectInput.Bucket = "bucketname"
       deleteObjectInput.Key = "objectkey"
       deleteObjectInput.Expires = 3600
       deleteObjectOutput, err := obsClient.CreateSignedUrl(deleteObjectInput)
       if err == nil {
              fmt.Printf("SignedUrl:%s\n", deleteObjectOutput.SignedUrl)
              fmt.Printf("ActualSignedRequestHeaders:%v\n", deleteObjectOutput.ActualSignedRequestHeaders)
       } else {
              fmt.Println(err)
       }
}