2017-06-28 3 views
1

S3から特定のデータチャンクをダウンロードしようとしています。以下はコードスニペットです。AWS Go SDKを使用してS3オブジェクトからバイト範囲をダウンロードできません

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 
} 

しかし、これは、オブジェクト全体が取得されるまで、部分的にダウンロードを続けます。指定された部分だけをダウンロードすることはありません。私はここで設定が欠けていますか?

答えて

1

Go SDKの問題のようです。ダウンローダーの代わりにs3.GetObjectを試してみてください。

+1

ありがとうございます。はい、それはv1.8.33で修正されたSDKの問題でした – Anuruddha

関連する問題