// should probably handle this in memory, // but this fn will upload your file to s3 func (d *deployer) uploadS3(fName string, bucket, key *string) error { cfg := d.cfg debug := debug.Debug("uploadS3") awscfg := aws.NewConfig().WithRegion(*cfg.Location.S3Region) s := s3.New(awscfg) f, err := os.Open(fName) if err != nil { return err } debug("opened file, beginning read") st, err := f.Stat() if err != nil { return err } if st.Size() >= (1024 * 1024 * 5) { // multipart if bigger than 5MiB return uploadS3MPU(s, f, bucket, key) } else { _, err = s.PutObject(&s3.PutObjectInput{ Bucket: bucket, Key: key, Body: f, }) if err != nil { return err } } return nil }
// init will initialize all default options. func (u *uploader) init() { if u.opts.S3 == nil { u.opts.S3 = s3.New(nil) } if u.opts.Concurrency == 0 { u.opts.Concurrency = DefaultUploadConcurrency } if u.opts.PartSize == 0 { u.opts.PartSize = DefaultUploadPartSize } // Try to get the total size for some optimizations u.initSize() }
// init initializes the downloader with default options. func (d *downloader) init() { d.totalBytes = -1 if d.opts.Concurrency == 0 { d.opts.Concurrency = DefaultDownloadConcurrency } if d.opts.PartSize == 0 { d.opts.PartSize = DefaultDownloadPartSize } if d.opts.S3 == nil { d.opts.S3 = s3.New(nil) } }