Select Git revision
s3.go 1.23 KiB
package mage_helpers
import (
"bytes"
"fmt"
"net/http"
"os"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
)
func UploadToS3(profile string, bucket string, filePath string, name string, local bool) error {
fmt.Println(fmt.Sprintf("Uploading %s to %s", filePath, bucket))
options := session.Options{
Config: aws.Config{
Region: aws.String("af-south-1"),
},
}
if local {
options.Profile = profile
}
sess, err := session.NewSessionWithOptions(options)
if err != nil {
return err
}
// Open the file for use
file, err := os.Open(filePath)
if err != nil {
return err
}
defer file.Close()
// Get file size and read the file content into a buffer
fileInfo, _ := file.Stat()
var size = fileInfo.Size()
buffer := make([]byte, size)
_, err = file.Read(buffer)
if err != nil {
return err
}
// Upload to s3
putInput := &s3.PutObjectInput{
Bucket: aws.String(bucket),
Key: aws.String(name),
Body: bytes.NewReader(buffer),
ContentLength: aws.Int64(size),
ContentType: aws.String(http.DetectContentType(buffer)),
}
svc := s3.New(sess)
_, err = svc.PutObject(putInput)
if err != nil {
return err
}
return nil
}