package lib import ( "fmt" "os" "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/s3manager" ) func UploadToS3(filePath string) (*s3manager.UploadOutput, error) { bucket := os.Getenv("BUCKET_NAME") fmt.Println("The filepath is: ", filePath) if bucket == "" { fmt.Println("No S3 bucket specified, skipping upload.") return nil, nil } endpoint := os.Getenv("AWS_ENDPOINT_URL_S3") accessKeyID := os.Getenv("AWS_ACCESS_KEY_ID") secretAccessKey := os.Getenv("AWS_SECRET_ACCESS_KEY") sess, err := session.NewSession(&aws.Config{ Region: aws.String("us-west-2"), Credentials: credentials.NewStaticCredentials( accessKeyID, secretAccessKey, "", ), Endpoint: aws.String(endpoint), }) if err != nil { return nil, fmt.Errorf("failed to create session, %v", err) } file, err := os.Open(filePath) if err != nil { return nil, fmt.Errorf("failed to open file, %v", err) } defer file.Close() uploader := s3manager.NewUploader(sess) result, err := uploader.Upload(&s3manager.UploadInput{ Bucket: aws.String(bucket), Key: aws.String(filePath), Body: file, }) if err != nil { return nil, fmt.Errorf("failed to upload file, %v", err) } return result, nil }