Skip to content

Instantly share code, notes, and snippets.

@lordnynex
Forked from poindextrose/glcoud-signed-url.go
Created February 3, 2021 18:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lordnynex/f010e9bb5241be3ebf5ff104fcb77196 to your computer and use it in GitHub Desktop.
Save lordnynex/f010e9bb5241be3ebf5ff104fcb77196 to your computer and use it in GitHub Desktop.
Example on how to create a signed URL on Google Cloud Storage with Go
package main
import (
"fmt"
"time"
"google.golang.org/cloud/storage"
)
const (
projectID = "myProject-1234"
)
func main() {
bucket := "mybucket"
filename := "myFilename"
method := "PUT"
expires := time.Now().Add(time.Second * 60)
url, err := storage.SignedURL(bucket, filename, &storage.SignedURLOptions{
GoogleAccessID: "XXXXXX@developer.gserviceaccount.com",
PrivateKey: []byte("-----BEGIN PRIVATE KEY-----\nXXXXXXXX"),
Method: method,
Expires: expires,
})
if err != nil {
fmt.Println("Error " + err.Error())
}
fmt.Println("URL = " + url)
}
@lordnynex
Copy link
Author

Very useful comment:

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"time"

	"cloud.google.com/go/storage"
	"golang.org/x/oauth2/google"
)

func main() {
	sakeyFile := "/home/tamal/Downloads/xyz.json"

	saKey, err := ioutil.ReadFile(sakeyFile)
	if err != nil {
		log.Fatalln(err)
	}

	cfg, err := google.JWTConfigFromJSON(saKey)
	if err != nil {
		log.Fatalln(err)
	}

	bucket := "go-cloud"
	filename := "mypic3.json"
	method := "GET"
	expires := time.Now().Add(time.Second * 60)

	url, err := storage.SignedURL(bucket, filename, &storage.SignedURLOptions{
		GoogleAccessID: cfg.Email,
		PrivateKey:     cfg.PrivateKey,
		Method:         method,
		Expires:        expires,
	})
	if err != nil {
		fmt.Println("Error " + err.Error())
	}
	fmt.Println(url)
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment