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
}