2017-06-28 5 views
1

nicht herunterladen Ich versuche, einen bestimmten Datenabschnitt von S3 zu downloaden. Im Folgenden ist das Code-Snippet.Kann einen Bytebereich von S3-Objekt mit AWS Go SDK

func DownloadFromS3() ([]byte, error) { 
retries := 5 
awsSession = session.Must(session.NewSessionWithOptions(session.Options{ 
    SharedConfigState: session.SharedConfigEnable, 
    Config: aws.Config{ 
     MaxRetries: &retries, 
     LogLevel: aws.LogLevel(aws.LogDebugWithHTTPBody), 
    }, 
    })) 

    // Create S3 service client 
    serviceS3 = s3.New(awsSession) 
    d := s3manager.NewDownloaderWithClient(serviceS3,func(d *s3manager.Downloader) { 
     d.Concurrency = 10 // should be ignored 
     d.PartSize = 1  // should be ignored 
    }) 
    w := &aws.WriteAtBuffer{} 
    n, err := d.Download(w, &s3.GetObjectInput{ 
     Bucket: aws.String("mybucket"), 
     Key: aws.String("key1"), 
     Range: aws.String("bytes=0-9"), 
    }) 
    if err != nil { 
     return nil, err 
    } 
    return w.Bytes(), err 
} 

Aber dies wird kontinuierlich Stück für Stück heruntergeladen, bis das gesamte Objekt abgerufen wird; ohne nur den angegebenen Teil herunterzuladen. Fehle ich irgendwelche Konfigurationen hier?

Antwort

1

Sieht aus wie ein Problem mit dem Go SDK; Probieren Sie das S3.GetObject anstelle von Downloader.

+1

Danke. Ja, es war ein Problem mit dem SDK, das sie in der Version 1.8.33 behoben haben – Anuruddha