himbot/lib/s3.go

56 lines
1.3 KiB
Go
Raw Normal View History

2024-01-19 14:08:13 -07:00
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")
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")
2024-01-20 01:39:52 -07:00
region := os.Getenv("AWS_REGION")
2024-01-19 14:08:13 -07:00
sess, err := session.NewSession(&aws.Config{
2024-01-20 01:39:52 -07:00
Region: &region,
2024-01-19 14:08:13 -07:00
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
}