pollo/lib/s3.go

53 lines
1,006 B
Go
Raw Normal View History

2023-05-18 20:04:55 -06:00
package lib
import (
"fmt"
"os"
2024-04-01 02:14:28 -06:00
"time"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
2023-05-18 20:04:55 -06:00
)
func GeneratePublicURL(key string) string {
bucket := os.Getenv("BUCKET_NAME")
2024-04-01 02:14:28 -06:00
if bucket == "" {
fmt.Println("No S3 bucket specified, skipping upload.")
return ""
}
2023-05-18 20:04:55 -06:00
endpoint := os.Getenv("AWS_ENDPOINT_URL_S3")
2024-04-01 02:14:28 -06:00
accessKeyID := os.Getenv("AWS_ACCESS_KEY_ID")
secretAccessKey := os.Getenv("AWS_SECRET_ACCESS_KEY")
region := os.Getenv("AWS_REGION")
sess, err := session.NewSession(&aws.Config{
Region: &region,
Credentials: credentials.NewStaticCredentials(
accessKeyID,
secretAccessKey,
"",
),
Endpoint: aws.String(endpoint),
})
if err != nil {
return ""
}
svc := s3.New(sess)
req, _ := svc.GetObjectRequest(&s3.GetObjectInput{
Bucket: &bucket,
Key: &key,
})
urlStr, err := req.Presign(15 * time.Minute)
if err != nil {
return ""
}
2023-05-18 20:04:55 -06:00
2024-04-01 02:14:28 -06:00
return urlStr
2023-05-18 20:04:55 -06:00
}