Skip to content
Snippets Groups Projects
Select Git revision
  • 12c699a1c2ae1679ca983791f9403903f214f6b7
  • main default protected
  • 1-mage-run-does-not-stop-containers
  • v0.26.0
  • v0.25.0
  • v0.24.0
  • v0.23.0
  • v0.22.0
  • v0.21.0
  • v0.20.0
  • v0.19.0
  • v0.18.0
  • v0.17.0
  • v0.16.0
  • v0.15.0
  • v0.14.0
  • v0.13.0
  • v0.12.0
  • v0.11.0
  • v0.10.0
  • v0.9.0
  • v0.8.0
  • v0.7.0
23 results

s3.go

Blame
  • 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
    }