MCPcopy Create free account
hub / github.com/AdRoll/baker / s3UploadFile

Function s3UploadFile

upload/s3.go:289–323  ·  view source on GitHub ↗
(uploader *s3manager.Uploader, bucket, prefix, localPath, fpath string)

Source from the content-addressed store, hash-verified

287}
288
289func s3UploadFile(uploader *s3manager.Uploader, bucket, prefix, localPath, fpath string) error {
290 ctx := log.WithFields(log.Fields{"localPath": localPath, "filepath": fpath})
291
292 rel, err := filepath.Rel(localPath, fpath)
293 if err != nil {
294 return fmt.Errorf("unable to get relative path: %v", err)
295 }
296
297 file, err := os.Open(fpath)
298 if err != nil {
299 return err
300 }
301
302 ctx.WithFields(log.Fields{"key": path.Join(prefix, rel)}).Info("Uploading")
303 result, err := uploader.Upload(&s3manager.UploadInput{
304 Bucket: &bucket,
305 Key: aws.String(path.Join(prefix, rel)), // force forwarding slash path as AWS key
306 Body: file,
307 })
308 if err != nil {
309 file.Close()
310 actualS3Path := fmt.Sprintf("s3://%s/%s/%s", bucket, prefix, rel)
311 return fmt.Errorf("error uploading %s to %s: %s", fpath, actualS3Path, err)
312 }
313
314 // We should really check that what we uploaded is correct before removing
315 file.Close() // ignore error: close required on windows to successfully remove the file
316 if err := os.Remove(fpath); err != nil {
317 return err
318 }
319
320 ctx.WithField("dst", result.Location).Info("Done")
321
322 return nil
323}

Callers 1

uploadDirectoryMethod · 0.85

Calls 2

CloseMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected