[Go] Deliver private content with CloudFront signed URL

Issue a signed URL in Golang.


import 	sign "github.com/aws/aws-sdk-go/service/cloudfront/sign"

func main() {

type CFConfig struct {
	KeyID   string
	Domain  string
	KeyPath string
}

// cloud front config
cfConf := &model.CFConfig{
	KeyID:   "xxxxxxxxxxxxCQ"
	Domain:  "http://xxx.cloudfront.net",
	KeyPath: "key/xxxxxxxxxxxxCQ",
}

	privKey, err := sign.LoadPEMPrivKeyFile(r.cfConf.KeyPath)
	if err != nil {
		log.Println("failed to load pem file:", err)
		return "", err
	}

	keyID := r.cfConf.KeyID
	signer := sign.NewURLSigner(keyID, privKey)

	path := "s3 Path of content you want to allow access"

	signedURL, err := signer.Sign(r.cfConf.Domain+path, time.Now().Add(1*time.Hour))
	if err != nil {
		log.Fatalf("Failed to sign url, err: %s\n", err.Error())
	}
	return signedURL, err
}


Recommended Posts

[Go] Deliver private content with CloudFront signed URL
Deliver private content with AWS CloudFront
Generate S3 signed URL with boto
Issue the Amazon CloudFront Signed URL in Python
Python with Go