Skip to content

Instantly share code, notes, and snippets.

@salrashid123
Created September 11, 2017 00:50
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save salrashid123/c55e676332d665291ea43710260941de to your computer and use it in GitHub Desktop.
Save salrashid123/c55e676332d665291ea43710260941de to your computer and use it in GitHub Desktop.
Google Cloud Storage Golang SignedURL for Resumeable upload
package main
import (
"io/ioutil"
"log"
"time"
"cloud.google.com/go/storage"
//"golang.org/x/net/context"
)
const (
projectID = "your_projectID"
)
func main() {
bucketName := "your_bucket_name"
fileName := "file.txt"
method := "POST"
expires := time.Now().Add(time.Second * 60)
//ctx := context.Background()
//client, err := storage.NewClient(ctx)
//if err != nil {
// log.Fatalf("Failed to create client: %v", err)
//}
//https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/storage/storage.go#L173
// remember to convert your service account .p12 to PEM format
serviceAccountPEMFilename := "YOUR_SERVICE_ACCOUNT.pem"
googleAccessID := "svc_account_name@your_project.iam.gserviceaccount.com"
data, err := ioutil.ReadFile(serviceAccountPEMFilename)
if err != nil {
log.Fatalf("error: %v", err)
}
log.Printf("Getting upload url")
opts := storage.SignedURLOptions{
GoogleAccessID: googleAccessID,
PrivateKey: data,
Method: method,
Expires: expires,
ContentType: "text/plain",
Headers: []string{"x-goog-resumable:start"},
}
url, err := storage.SignedURL(bucketName, fileName, &opts)
if err != nil {
log.Fatalf("ERROR %v", err)
}
log.Println("SignedURL=", url)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment